idss Function

function idss(name)

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.

Arguments

Type IntentOptional Attributes Name
character(len=1) :: name*(*)

Return Value integer


Calls

proc~~idss~~CallsGraph proc~idss NOVAS_F3.1_solsys3.f90::idss ids ids proc~idss->ids

Source Code

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