PROGRAM NULTST C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING TO IT. * C * C ************************************************************************ C C NULACP TEST TASK. ISSUE IX.??? REQUESTS AND REPORT RESULTS C C VERSION: 01.00 C C AUTHOR: R.W. STAMERJOHN MAPC 09-APR-80 C C MODIFICATION HISTORY: C C V01.00 RWS 09-APR-80 INITIAL VERSION C C PROGRAM DECLARATIONS C C INPUT/OUTPUT BUFFERS, VARAIBLES C LOGICAL*1 OUTBUF(80) LOGICAL*1 INPBUF(80) INTEGER*2 OUTSIZ INTEGER*2 INPSIZ C C I/O VARIABLES. C INTEGER*2 IOFUNC INTEGER*2 IOPARM(6) C C ERROR RETURN VARIABLES. C INTEGER*2 IERROR INTEGER*2 IOSTAT(2) C C OTHER VARIABLES. C INTEGER*2 OPDISP REAL*8 OPCODE C C START OF CODE. C C ANNOUNCE OURSELVES. C WRITE (5,1000) 1000 FORMAT (/,' NULTST - V01.00',/) INPSIZ = 80 C C ASSIGN LUN TO AC0:. C CALL ASNLUN (1,'AC',0,IERROR) IF (IERROR.GT.0) GOTO 100 WRITE (5,1010) IERROR 1010 FORMAT (/,' ASSIGN FAILED, $DSW = ',O6,/) GOTO 999 C C GET NEXT OPERATION DESIRED BY USER. C 100 CONTINUE WRITE (5,1020) 1020 FORMAT ('$OPERATION: ') READ (5,1030,END=999) OPCODE 1030 FORMAT (A8) C C DECODE OPCODE AND GO DISPATCH. C OPDISP = 0 IF (OPCODE.EQ.'IX.CRE') OPDISP = 1 IF (OPCODE.EQ.'IX.CLO') OPDISP = 2 IF (OPCODE.EQ.'IX.PUT') OPDISP = 3 IF (OPCODE.EQ.'IX.GET') OPDISP = 4 IF (OPCODE.EQ.'IX.CTL') OPDISP = 5 IF (OPCODE.EQ.'IO.RLB') OPDISP = 6 IF (OPCODE.EQ.'IO.WLB') OPDISP = 7 GOTO (200,210,220,230,240,250,260), OPDISP WRITE (5,1040) 1040 FORMAT (/,' BAD OPERATION SELECTED',/) GOTO 100 C C SETUP FOR I/O TO NULACP BASED ON SELECTED OPTION. C C SETUP FOR IX.CRE FUNCTION. C 200 CONTINUE IOFUNC = "17400 IOPARM(1) = 0 IOPARM(2) = 0 IOPARM(3) = 0 IOPARM(4) = 0 WRITE (5,2000) 2000 FORMAT ('$ACCESS CODE: ') READ (5,2010) IOPARM(5) 2010 FORMAT (I) IOPARM(6) = 0 GOTO 300 C C SETUP FOR IX.CLO FUNCTION. C 210 CONTINUE IOFUNC = "17401 IOPARM(1) = 0 IOPARM(2) = 0 IOPARM(3) = 0 IOPARM(4) = 0 IOPARM(5) = 0 IOPARM(6) = 0 GOTO 300 C C SETUP FOR IX.PUT FUNCTION. C 220 CONTINUE IOFUNC = "17402 WRITE (5,2020) 2020 FORMAT ('$OUTPUT STRING: ') READ (5,2030) OUTSIZ,OUTBUF 2030 FORMAT (Q,80A1) CALL GETADR (IOPARM(1),OUTBUF(1)) IOPARM(2) = OUTSIZ IOPARM(3) = 0 IOPARM(4) = 0 IOPARM(5) = 0 IOPARM(6) = 0 GOTO 300 C C SETUP FOR IX.GET FUNCTION. C 230 CONTINUE IOFUNC = "17403 IOPARM(1) = 0 IOPARM(2) = 0 CALL GETADR (IOPARM(3),INPBUF(1)) IOPARM(4) = INPSIZ IOPARM(5) = 0 IOPARM(6) = 0 GOTO 300 C C SETUP FOR IX.CTL FUNCTION. C 240 CONTINUE IOFUNC = "17404 IOPARM(1) = 0 IOPARM(2) = 0 IOPARM(3) = 0 IOPARM(4) = 0 WRITE (5,2000) READ (5,2010) IOPARM(5) IOPARM(6) = 0 GOTO 300 C C SETUP FOR IO.RLB FUNCTION. C 250 CONTINUE IOFUNC = "001000 CALL GETADR (IOPARM(1),INPBUF(1)) IOPARM(2) = 80 IOPARM(3) = 0 IOPARM(4) = 0 IOPARM(5) = 0 IOPARM(6) = 0 GOTO 300 C C SETUP FOR IO.WLB FUNCTION. C 260 CONTINUE IOFUNC = "000400 CALL GETADR (IOPARM(1),OUTBUF(1)) IOPARM(2) = 80 IOPARM(3) = 0 IOPARM(4) = 0 IOPARM(5) = 0 IOPARM(6) = 0 GOTO 300 C C ISSUE I/O FUNCTION AND REPORT RESULTS. C C REPORT WE ARE ISSUING I/O REQUEST. C 300 CONTINUE WRITE (5,3000) OPCODE,IOPARM 3000 FORMAT (/,' ISSUING ',A8,' REQUEST WITH PARAMETERS:', 1 /,6(1X,O6),/) C C ISSUE I/O REQUEST TO NULACP DEVICE. C CALL WTQIO (IOFUNC,1,1,,IOSTAT,IOPARM,IERROR) C C REPORT RESULT FROM I/O REQUEST. C WRITE (5,3010) OPCODE,IERROR,IOSTAT 3010 FORMAT (/,' ',A8,' REQUEST FINISHED WITH FOLLOWING CODES', 1 /,' $DSW = ',O6,' IOSTAT(1) = ',O6,' IOSTAT(2) = ',O6,/) C C IF IX.GET, ALSO OUTPUT RETURN BUFFER C IF (OPCODE.NE.'IX.GET') GOTO 310 WRITE (5,3020) (INPBUF(I),I=1,IOSTAT(2)) 3020 FORMAT (' IX.GET INPUT BUFFER = ',80A1,/) C C LOOP FOR NEXT TEST C 310 CONTINUE GOTO 100 C C ALL DONE, EXIT C 999 STOP END