10 !MENU THIS IS A DUMMY MENU PROGRAM TO DEMONSTRATE & ! THE 'DETACHED PROCESS' LOGIC & 100 EXTERNAL LONG FUNCTION SYS$TRNLOG,SYS$HIBER,LIB$DO_COMMAND & \ DECLARE LONG SYS_STATUS & 700 FIXMB$=SPACE$(5%) & \ SYS_STATUS=SYS$TRNLOG('FORMBX',,FIXMB$,,,) & \ IF INSTR(1%,FIXMB$,"ADDCR") THEN & FIXMB$=CHR$(32%)+CHR$(8%)+CHR$(13%)+CHR$(10%) & \ PRINT ":BASIC:CCR:" & ELSE & FIXMB$="" & ! if logical formbx has been assigned for this process, then it & ! is being run via the mailbox logic & ! Any input requests with a prompt string must be forced through & ! the mailbox by adding a . & 900 OPTLST$="RUN.DIR.ATT.LOG.BAT" & \ MARGIN 132% & 1000 PRINT "SAMPLE MENU PROGRAM" & \ PRINT & 1010 PRINT "AVAILABLE OPTIONS ARE:" & \ PRINT "(RUN) A PROGRAM" & \ PRINT "(DIR)ECTORY" & \ PRINT "(ATT)ACH TO ANOTHER PROCESS" & \ PRINT "(LOG)OFF SYSTEM" & \ PRINT "(BAT)CH REQUEST" & \ PRINT & 1020 PRINT "OPTION";FIXMB$; \INPUT OPT$ & \ GOTO 1020 IF LEN(OPT$)<>3% & \ I%=INSTR(1%,OPTLST$,OPT$) & \ GOTO 1020 IF I%=0% & \ I%=(I%/4%)+1% & \ ON I% GOTO 1100,1200,1300,1400,1500 & 1100 ! RUN PROGRAM & PRINT "PROGRAM TO RUN";FIXMB$; \INPUT PR$ !** NEW WAY ** & \ CHAIN PR$ & 1200 !GET DIRECTORY & SYS_STATUS=LIB$DO_COMMAND("DIR [RUTHR.KEEP]") & \ CALL SYS$EXIT(SYS_STATUS BY VALUE) IF (SYS_STATUS AND 1%)=0% & \ GOTO 32767 & 1300 !ATTACH & PRINT ":ATT: MENU" & \ SYS_STATUS=SYS$HIBER() & \ CALL SYS$EXIT(SYS_STATUS BY VALUE) IF (SYS_STATUS AND 1%)=0% & \ GOTO 32767 & 1400 !LOGOUT & PRINT ":BYE: MENU" & \ SYS_STATUS=SYS$HIBER() & \ CALL SYS$EXIT(SYS_STATUS BY VALUE) IF (SYS_STATUS AND 1%)=0% & \ GOTO 32767 & 1500 !BATCH REQUEST & CHAIN "BATCH" & \ GOTO 32767 & 32767 END