File: MULTI.03 of Tape: Various/Decus/decus-2
(Source file text)
/THIS SUBROUTINE WILL HANDLE MULTI-REEL FILES,AND HAS / SIX ENTRY POINTS / /VERSION 03 / / /SPOOP(FILE NAME) WILL OPEN AN OUTPUT FILE ON DEVICE / DTA1. IT WILL REJECT THE FILE IF THERE ARE LESS / THAN 650(10) FREE BLOCKS AND TRY AGAIN,UNLESS THE / USER RESPONDS WITH AN A (ACCEPT IT). / /WRTCH(NO ARG) IS CALLED AFTER A WRITE(4,X) STATEMENT / AND WILL CHECK THE SPACE LEFT. IF IT / IS TWO BLOCKS OR LESS IT WILL WRITE A '999 ' IN / COLUMNS 1-4, WRTIE 'END ' IN THE NEXT / COLUMNS 1-4, CLOSE THE CURRENT FILE AND OPEN ANOTHER / ONE WITH THE NAME OF SPOOP + 0001 ON DEVICE DTA2. / IT WILL THEN ALTERNATE BETWEEN DTA1 AND DTA2. / /SPOCL(NO ARG) WILL WRITE '999 ' IN COLS 1-4,'END ' IN / COLS 1-4 AND THEN CLOSE THE FILE / /SPIOP(FILE NAME) WILL OPEN AN INPUT FILE ON DEVICE DTA5 / /RDCHK(SWITCH) IS CALLED AFTER A READ(4,X) LIST STATEMENT / AND WILL EXAMINE THE NEXT 4 COLUMNS. IF THEY CONTAIN / A'EN ', IT WILL RETURN THE ARGUMENT SWITCH TO / A 1 (NOT A TRUE EOF), OR 0 (A TRUE EOF). IF IT / IS NOT A TRUE EOF, IT WILL OPEN A NEW INPUT FILE AS IN / WRTCH ABOVE, ALTERNATING DEVICES BETWEEN DTA5 AND DTA6. / / ENTRY SPOOP /SPECIAL OUTPUT OPEN ENTRY WRTCH /WRITE CHECK ENTRY SPOCL /SPECIAL OUTPUT CLOSE ENTRY SPIOP /SPECIAL INPUT OPEN ENTRY RDCHK /READ CHECK / / / / OPDEF CDF1 6211 /CHANGE TO DATA FIELD 1 OPDEF CDFZ 6201 /CHACGE TO DATA FIELD 0 OPDEF TADI 1400 /TAD INDIRECT OPDEF DCAI 3400 /DCA INDIRECT OPDEF ISZI 2400 /ISZ INDIRECT DEVO, TEXT 'DTA1' /DECTAPE 1 S746, 746 /LOCATION OF AVAIL FILE SIZE SPOOP, BLOCK 2 /ENTRY POINT TAD I SPOOP /GET THE ADDR OF FILE NAME DCA NAMEO INC SPOOP# TADI SPOOP# DCA NAMEO# INC SPOOP# RETRY, CALL 2,OOPEN /AND OPEN THE FILE ARG DEVO NAMEO, ARG 0 CDFZ TADI S746 /GET THE FILE LENGTH(-) TAD (1224 /TEST FOR >650(10) SMA CLA JMP TOOSML DNOPN, RETRN SPOOP /AND GO HOME TOOSML, CALL 2,READ /WRITE A NASTY GRAM ARG (1 ARG MSG1 /AND PRINT IT CALL 1,IOH ARG WRTCH CALL 1,IOH ARG 0 TAD WRTCH /WAS IT AN 'A ' TAD (7640 SNA CLA JMP DNOPN /YUP - - ACCEPT IT CDF1 /LETS INHIBIT 'IOER' MESSAGE TAD DEVO# /GET OUT DEV NO AND (3 /AND MASK ALL BUT THE LASE TWO BITS TAD (7764 DCA WRTCH TADI WRTCH /AND GET THE TABLE ENTRY AND (7770 /AND ZERO THE FILE OPEN BITS DCAI WRTCH /AND STORE IT AWAY JMP RETRY /AND TRY AGAIN MSG1, 5047 /('REEL NOT EMPTY-PLEASE RELOAD',A1) 2205 0514 4016 1724 4005 1520 2431 5520 1405 0123 0540 2205 1417 0104 4754 0161 5100 WRTCH, BLOCK 2 /CHECK FOR END OF FILE CDFZ IAC RAL /SET AC=2 TADI S746 /GET FILE LENGTH SMA CLA JMP OPNEXT /FULL - OPEN NEXT RETRN WRTCH OPNEXT, CALL 2,WRITE /WRITE THE GOODIES ARG (4 ARG MSG2 CALL 1,IOH ARG MORE CALL 1,IOH ARG 0 CALL 0,OCLOS /AND CLOSE THE FILE TAD DEVO# CMA AND (3 /STRIP ALL BUT LAST TWO BITS DCA SPOOP TAD DEVO# /GET THE DEV AGAIN AND (7774 TAD SPOOP DCA DEVO# TAD NAMEO /BUMP FILE NAME BY 1 DCA OXXX STL RTL /STE AC=2 TAD NAMEO# DCA SPOOP OXXX, HLT /SET TO CDF CALLING ISZI SPOOP TAD WRTCH /AND SAVE THE RETURN DCA SPOOP TAD WRTCH# DCA SPOOP# JMP RETRY /AND GO TO OPENING ROUTINE PAGE SPOCL, BLOCK 2 /CLOSE THE OUTPUT FILE CALL 2,WRITE ARG (4 ARG MSG2 CALL 1,IOH ARG ENDX CALL 1,IOH ARG 0 CALL 0,OCLOS /AND CLOSE THE FILE TAD (161 /RESET LAST HALF OF DEVO DCA DEVO# RETRN SPOCL DEVI, TEXT 'DTA5' /DECTAPE 5 SPIOP, BLOCK 2 /SPECIAL IOPEN TAD I SPIOP /GET THE NAME DCA NAMEI INC SPIOP# TADI SPIOP# DCA NAMEI# INC SPIOP# OPN, CALL 2,IOPEN /AND OPEN THE FILE ARG DEVI NAMEI, ARG 0 RETRN SPIOP /AND GO HOME RDCHK, BLOCK 2 /READ CHECK TAD I RDCHK /PICK UP THE LOC OF ARG DCA SPIOP /USE SP TO SAVE TWO LOCS INC RDCHK# TADI RDCHK# DCA SPIOP# INC RDCHK# CALL 2,READ ARG (4 ARG MSG4 /READ THE FIRST TWO CHARS CALL 1,IOH ARG SPOCL TAD SPOCL /AND TEST IT FOR 'MO' TAD (6261 SZA CLA /IS IT 'MO'??? JMP DONE IAC DCA I SPIOP /AND SET THE SWITHH TAD NAMEI /BUMP INPUT NAME BY 1 DCA IXXX STL RTL TAD NAMEI# DCA SPIOP IXXX, HLT /SET TO CDF CALLING ISZI SPIOP TAD DEVI# /AND SWAP DEV NAME CMA AND (3 DCA SPIOP TAD DEVI# AND (7774 TAD SPIOP DCA DEVI# TAD RDCHK /AND SET UP RETURN DCA SPIOP TAD RDCHK# DCA SPIOP# JMP OPN /AND OPEN ANOTHER REEL DONE, DCA I SPIOP /SET THE RETURN SWITCH RETRN RDCHK /AND GO HOME MORE, TEXT 'MORE' /MORE TO COME ENDX, TEXT 'END ' /THATS ALL FOLKS MSG4, 5001 /(A2) 6251 0000 LAP /WE NEED THE LAST TWO LOCS MSG2, 5047 /('999' ,/,A4) 7171 7147 4054 5754 0164 5100 END