C---THIS PROGRAM TESTS THE "SELECT" PROGRAM FEATURES. C BYTE ENDCHR !TO HOLD CHAR ENDING OPT IN SELECT LOGICAL*1 FILSPC BYTE TABLE(6,10) COMMON /SELCOM/ ENDCHR !COMMON FROM SELECT FOR END CHAR OF OPT COMMON /MAPCOM/ IDENS,FILSPC(16),ISTOP C IDENS SAVES DENSITY (EITHER 800 OR 1600) C FILSPC SAVES FILESPEC FOR OUTPUT DEVICE (ASCII STRING) C ISTOP SAVES STOP CONDITION (0=>EOT, 1=>EOF/EOF) C C ESTABLISH DEFAULTS C DATA TABLE/'A','B','C','D','E','F', + 'G','H',4*0, + '%','I','J',3*0, + '#','K',4*0, + '$','L','M','N',2*0, + 'O',5*0, + 24*0/ FILSPC(1)='T' !ASSUME DEFAULT OUTPUT DEVICE TO BE A TERMINAL FILSPC(2)='I' FILSPC(3)=':' IDENS=800 !ASSUME 800 BPI ISTOP=0 !ASSUME STOP ON END-OF-TAPE, NOT EOF/EOF C C ASK USER FOR CHOICE C 10 CALL SELECT(IOPT,0,'*', + '$Density (is:)', + 'Output (to device/file:)', + '#Try table driven select', + '#Stop (condition is:)', + '%Verify (map conditions)', + '#Quit (and exit to monitor)') WRITE(5,*) 'ENDING CHARACTER IS: ',ENDCHR GO TO (100,200,300,400,500,600,700), IOPT C---SET DENSITY 100 CALL SELECT(IOPT,-999,':','Lowdensity (800 bpi)', + 'Hidensity (1600 bpi)') WRITE(5,*) 'ENDING CHARACTER IS: ',ENDCHR GO TO (110,120,10), IOPT 110 IDENS=800 GO TO 10 120 IDENS=1600 GO TO 10 C---SET OUTPUT DESTINATION 200 READ(5,210) FILSPC 210 FORMAT(16A1) FILSPC(16)=0 !SET GUARD BYTE TO NULL FOR END GO TO 10 C---START PROCESSING MAP 300 CALL SELTBL(IOPT,-2,'TABLE PROMPT: ',5,6,TABLE) WRITE(5,*) 'ENDING CHARACTER WAS: ',ENDCHR WRITE(5,*) 'OPTION SELECTED WAS: ',IOPT CALL EXIT C---SET STOP CONDITION 400 CALL SELECT(IOPT,1,0,'Double EOFs','End-of-tape') WRITE(5,*) 'ENDING CHAR WAS: ',ENDCHR GO TO (410,420,10), IOPT 410 ISTOP=1 !STOP ON EOF/EOF GO TO 10 420 ISTOP=0 !STOP ONLY ON EOT GO TO 10 C---VERIFY CURRENT PARAMETERS FOR USER 500 WRITE(5,510) IDENS 510 FORMAT(5X,'DENSITY (BPI)=',I5) WRITE(5,520) FILSPC 520 FORMAT(5X,'OUTPUT TO: ',16A1) IF(ISTOP.EQ.1) WRITE(5,530) 530 FORMAT(5X,'STOP ON DOUBLE-END-OF-FILE') IF(ISTOP.EQ.0) WRITE(5,540) 540 FORMAT(5X,'STOP AT END-OF-TAPE') GO TO 10 C---QUIT PROGRAM AND EXIT TO MONITOR 600 STOP C---^Z SPECIAL EXIT...GOES INTO "WAIT" STATE FOR 10 SECS 700 WRITE(5,*) 'GOING INTO WAIT STATE FOR 10 SECONDS' CALL WAIT(10000,1,ISUB) CALL EXIT END