SUBROUTINE SYSGCM ! Get command from command line. INCLUDE 'IPCOMM.FTN' CHARACTER*(IPBLEN) INPCMD ! Input command. EQUIVALENCE (IPBUF,INPCMD) CALL LIB$GET_FOREIGN(INPCMD,,IPSLEN,) IPSLOC = 1 RETURN END SUBROUTINE SYSHLP ! Issue a help command. INCLUDE 'FIGI01.FTN' INCLUDE 'IPCOMM.FTN' CHARACTER*(IPBLEN) INPCMD ! Input command. CHARACTER*(IPBLEN) HLPCMD ! HELP command. INTEGER*2 IPXLOC ! Original location of HELP. INTEGER*2 IPHLOC ! Location of first keywd. INTEGER*2 IPHEND ! Location of end of cmd. INTEGER*4 EVTFLG ! Event flag. INTEGER*4 HCLEN ! Length of help command. EQUIVALENCE (IPBUF,INPCMD) IPXLOC = IPLOC ! Save location of "HELP". IPHLOC = 0 ! Assume no arguments. 1000 IF (.NOT. IPANY()) GO TO 2000 ! If no more characters, die. IF (IPMCH .EQ. ';') GO TO 2000 ! If terminator, quit. IPHLOC = IPLOC ! Find the first parameter. 1100 IF (.NOT. IPANY()) GO TO 2000 ! If no more characters, die. IF (IPMCH .NE. ';') GO TO 1100 ! If not separator, continue. 2000 IPHEND = IPLOC - 1 ! Last valid character. IPLOC = IPXLOC ! Restore location. IPLEN = IPHEND - IPLOC ! Set up actual length. HLPCMD = 'HELP FIGURE' ! Basic command. HCLEN = 11 ! Length of same. IF (IPHLOC .EQ. 0) GO TO 3000 ! If no args, quit. WRITE (HLPCMD,92020) ! Set up the 1 INPCMD(IPHLOC:IPHEND) ! desired command. 92020 FORMAT ('HELP FIGURE ',A) HCLEN = 13 + IPHEND - IPHLOC ! Get its length. 3000 CONTINUE ! Now spawn the command. D WRITE (LUNOUT,3010) ! Display the D 1 HLPCMD(:HCLEN) ! generated command. D3010 FORMAT (' FIG - Debug - Generated HELP command is',/, D 1 15X,'"',A,'".') CALL LIB$GET_EF(EVTFLG) ! Get an event flag. CALL LIB$SPAWN(HLPCMD(:HCLEN), ! Spawn 1 ,,,,,,EVTFLG,,,,) ! help CALL SYS$WAITFR(EVTFLG) ! Wait for it to finish. CALL LIB$FREE_EF(EVTFLG) ! Free up the event flag. RETURN ! Return to caller. END ! End of module. SUBROUTINE SYSOPN(LUN,NAMLEN,NAM,IDSW) ! Open a file. INTEGER*2 LUN ! Logical unit. INTEGER*2 NAMLEN ! Length of name. LOGICAL*1 NAM(NAMLEN) ! Name. INTEGER*2 IDSW ! Status. CHARACTER*255 FILNAM ! Real name. CHARACTER*255 INPNAM ! Input name. CHARACTER*80 FILDEF ! Default. INTEGER*4 CONTXT ! Find context. INTEGER*4 FNDRES ! Find result. INCLUDE 'FIGI01.FTN' DATA FILDEF /'SYS$DISK:[].FIG;'/ WRITE (INPNAM,1200) NAM ! Put it in CHARACTER var. 1200 FORMAT (A1) CONTXT = 0 ! Init context. FNDRES = LIB$FIND_FILE(INPNAM,FILNAM,CONTXT,FILDEF,,,) CALL LIB$FIND_FILE_END(CONTXT) IF (.NOT. FNDRES) GO TO 9000 ! If can't find, error. FNDRES = INDEX(FILNAM,' ') - 1 D WRITE (LUNOUT,1999) FILNAM(:FNDRES) ! Display file name. D1999 FORMAT (' Debug - Opening file "',A,'".') OPEN (UNIT=LUN,NAME=FILNAM, ! Open the 1 TYPE='OLD',READONLY,SHARED, ! desired 2 ERR=9000) ! file. IDSW = .TRUE. ! Success. GO TO 9900 ! Return. 9000 IDSW = .FALSE. ! Failure. 9900 RETURN ! Return. END