THIS FUNCTION RETURNS THE ID NUMBER OF A SOLAR SYSTEM BODY FOR THE VERSION OF SOLSYS (OR SOLSYS-AUXPOS COMBINATION) IN USE.
NAME = NAME OF BODY WHOSE ID NUMBER IS DESIRED, E.G.,
'SUN', 'MOON, 'MERCURY', ETC., EXPRESSED AS ALL
UPPER-CASE LETTERS (IN)
IDSS = ID NUMBER OF BODY, FOR USE IN CALLS TO SOLSYS
(FUNCTION VALUE RETURNED)
NOTE 1: IN THIS VERSION, ONLY THE FIRST THREE LETTERS OF THE BODY'S NAME ARE USED FOR IDENTIFICATION. ALTERNATIVE VERSIONS MIGHT USE MORE LETTERS.
NOTE 2: IF NAME IS 'JD', IDSS RETURNS IDSS=1, SINCE SOLSYS VERSION 3 DOES NOT PROCESS SPLIT JULIAN DATES.
NOTE 3: ALL VERSIONS OF IDSS MUST RETURN IDSS=-9999 FOR OBJECTS THAT IT CANNOT IDENTIFY OR ARE UNSUPPORTED BY SOLSYS.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1) | :: | name*(*) |
integer function idss ( name ) character name*(*), namein*3, names*3 dimension names(35), ids(35) data names / 'SUN', 'EAR', '---', '---', '---', '---', '---', & '---', '---', '---', '---', '---', '---', '---', & '---', '---', '---', '---', '---', '---', '---', & '---', '---', '---', '---', '---', '---', '---', & '---', '---', '---', '---', '---', '---', '---' / data ids / 0, 3, 0, 0, 0, 0, 0, & 0, 0, 0, 0, 0, 0, 0, & 0, 0, 0, 0, 0, 0, 0, & 0, 0, 0, 0, 0, 0, 0, & 0, 0, 0, 0, 0, 0, 0 / data num / 2 / 3 format ( ' IDSS ERROR: NO BODY ID NUMBER FOUND FOR ', a ) idss = -9999 namein = name ! LOOK THROUGH LIST OF BODY NAMES TO FIND MATCH do i = 1, num if ( namein == names(i) ) then idss = ids(i) return end if end do ! IF NO MATCH, CHECK FOR INQUIRY ABOUT SPLIT JULIAN DATES if ( namein == 'JD ' ) then ! IN THIS CASE, SET IDSS=2 IF SOLSYS PROCESSES SPLIT ! JULIAN DATES (IN SUCCESSIVE CALLS), IDSS=1 OTHERWISE idss = 1 return end if write ( *, 3 ) name end function idss