cdc:nos2.source:opl871:copyc
Table of Contents
COPYC
Table Of Contents
- [00013] COPYC - CODED FILE COPIES.
- [00015] CODED FILE COPIES.
- [00074] COMMON DATA
- [00103] MAIN PROGRAMS.
- [00300] SUBROUTINES.
- [00302] CPR - COPY RECORD.
- [00403] ITM - ISSUE TERMINATION MESSAGES.
- [00506] SLR - SELECT LINE RANGE.
- [00594] PRS - PRESET PROGRAM.
- [00652] SCC - SET CHARACTER COUNTS.
- [00696] CNA - CHECK FOR *NA* PARAMETER (NO ABORT).
- [00718] SXP - SET EXTRA PARAMETERS.
- [00782] CCS - CHECK CHARACTER SET.
- [00809] ERR - PROCESS ERRORS.
Source Code
- COPYC.txt
- IDENT COPYC,FETS
- ABS
- ENTRY COPYSBF
- ENTRY COPYCF
- ENTRY SCOPY
- ENTRY COPYCR
- ENTRY NPC=
- ENTRY RFL=
- ENTRY SSM=
- SYSCOM B1 DEFINE (B1) = 1
- *COMMENT COPYC - CODED FILE COPIES.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE COPYC - CODED FILE COPIES.
- SPACE 4
- *** COPYC - CODED FILE COPIES.
- * G. R. MANSFIELD. 70/11/25.
- SPACE 4
- *** DAYFILE MESSAGES.
- *
- * * COPY COMPLETE.* = INFORMATIVE MESSAGE INDICATING COPY
- * COUNT WAS EXHAUSTED BEFORE EOI REACHED.
- *
- * * EOI ENCOUNTERED.* = INFORMATIVE MESSAGE INDICATING END
- * OF INFORMATION WAS ENCOUNTED BEFORE THE COPY COUNT WAS
- * EXHAUSTED.
- *
- * *INCORRECT CHARACTER NUMBER.* = INCORRECT FIRST/LAST
- * CHARACTER NUMBER SPECIFIED.
- *
- * *INCORRECT COUNT.* = OPTIONAL RECORD/FILE COUNT INCORRECT
- * FORMAT.
- *
- * * NO LINE TERMINATOR AT EOR(S).* = NO LINE TERMINATOR WAS
- * FOUND FOR THE LAST LINE OF A RECORD(S) (RECORD NOT Z-TYPE
- * DATA). THE LINE TERMINATOR IS ADDED, AND THE JOB IS ABORTED
- * IF THE *NA* PARAMETER IS NOT SPECIFIED.
- *
- * * NNNN LINE(S) TRUNCATED.* = INFORMATIVE MESSAGE INDICATING
- * NNNN LINES WERE TRUNCATED DURING COPYING.
- *
- * *TOO MANY PARAMETERS.* = MORE THAN SIX PARAMETERS WERE
- * SPECIFIED ON A *COPYCF* OR *COPYCR* CALL, OR MORE THAN
- * ELEVEN ON AN *SCOPY* CALL.
- *
- * *INCORRECT LINE NUMBER SPECIFICATION.* = INCORRECT
- * FIRST/LAST LINE NUMBER SPECIFIED.
- *
- * *INCORRECT REWIND SPECIFICATION.* = REWIND PARAMETER
- * NOT *R* OR OMITTED.
- *
- * *INCORRECT STRUCTURE SPECIFICATION.* = STRUCTURE
- * PARAMETER NOT *NS* OR OMITTED.
- *
- * *INCORRECT CHARACTER SET SPECIFICATION.* = CHARACTER
- * SET PARAMETER NOT *D* OR OMITTED.
- SPACE 4
- **** ASSEMBLY CONSTANTS.
- LINL EQU 500D WORKING BUFFER LENGTH (6-BIT CHARACTERS)
- BUFL EQU LINL+1 WORKING BUFFER LENGTH + 1
- IBUFL EQU 2001B IFILE BUFFER LENGTH
- OBUFL EQU 2001B OFILE BUFFER LENGTH
- ****
- * SPECIAL ENTRY POINTS.
- NPC= EQU 0 FORCE OPERATING SYSTEM PARAMETER FORMAT
- SSM= EQU 0 SUPPRESS DUMPS OF FIELD LENGTH
- *CALL COMCMAC
- TITLE COMMON DATA
- DATA SPACE 4
- ORG 120B
- FETS BSS 0
- I BSS 0
- INPUT RFILEC IBUF,IBUFL,(FET=8)
- O BSS 0
- OUTPUT RFILEC OBUF,OBUFL,(FET=8)
- CT CON 1 COUNT
- SK CON 0 SKIP FLAG
- FC CON 0 FIRST CHARACTER
- LC CON 136 LAST CHARACTER
- LTC CON 0 COUNT OF LINES TRUNCATED
- NA CON 0 NO-ABORT FLAG
- NZ CON 0 NON Z-TYPE DATA FLAG
- FL CON 0 FIRST LINE NUMBER
- LL CON -1 LAST LINE NUMBER
- NS CON 0 STRUCTURE REPORTING FLAG
- AS CON 0 ASCII8 FLAG
- AF CON 0 ASCII8 WITH FORMAT EFFECTORS FLAG
- LN CON 0 LINE NUMBER ERROR MESSAGE FLAG
- SC CON 0 *SCOPY* FLAG
- FCNT CON 0 FILE COUNT
- RCNT CON 0 RECORD COUNT
- TITLE MAIN PROGRAMS.
- COPYCF SPACE 4,25
- *** COPYCF (IFILE,OFILE,N,FCHAR,LCHAR,NA)
- *
- *
- * COPYCF COPIES FILES FROM MEDIUM TO MEDIUM IN CODED MODE.
- * FILES ARE TREATED AS 6-BIT CHARACTER DATA WITH A MAXIMUM
- * LINE LENGTH DEFINED BY THE CONSTANT *LINL* (500) .
- *
- * IFILE INPUT FILE NAME.
- * OFILE OUTPUT FILE NAME.
- * N NUMBER OF FILES TO COPY.
- * FCHAR FIRST CHARACTER TO COPY.
- * LCHAR LAST CHARACTER TO COPY.
- * NA DO NOT ABORT IF RECORD NOT Z-TYPE DATA.
- *
- * IF IFILE = OFILE, FILES ON IFILE ARE SKIPPED.
- *
- * ASSUMED PARAMETERS.
- * IFILE = *INPUT*
- * OFILE = *OUTPUT*
- * N = 1
- * FCHAR = 1
- * LCHAR = 136
- * NA NOT SPECIFIED.
- COPYCF BSS 0 ENTRY
- SB1 1 (B1) = 1
- RJ PRS PRESET PROGRAM
- RJ SCC SET CHARACTER COUNTS
- NZ B7,ERR3 IF TOO MANY ARGUMENTS
- SX0 0 INITIALIZE LINE TRANSFER COUNT
- CCF1 READ I BEGIN READ
- RECALL O
- READS I,BUF,-BUFL
- RJ CPR COPY RECORD
- NG X1,ITM IF EOI
- ZR X1,CCF1 LOOP TO EOF
- SA2 CT DECREMENT COUNT
- SX6 X2-1
- SA6 A2
- NZ X6,CCF1 LOOP FOR ALL FILES
- EQ ITM TERMINATE PROGRAM
- COPYCR SPACE 4,25
- *** COPYCR (IFILE,OFILE,N,FCHAR,LCHAR,NA)
- *
- *
- * COPYCR COPIES RECORDS FROM MEDIUM TO MEDIUM IN CODED MODE.
- * FILES ARE TREATED AS 6-BIT CHARACTER DATA WITH A MAXIMUM
- * LINE LENGTH DEFINED BY THE CONSTANT *LINL* (500) .
- *
- * IFILE INPUT FILE NAME.
- * OFILE OUTPUT FILE NAME.
- * N NUMBER OF RECORDS TO COPY.
- * FCHAR FIRST CHARACTER TO COPY.
- * LCHAR LAST CHARACTER TO COPY.
- * NA DO NOT ABORT IF RECORD NOT Z-TYPE DATA.
- *
- * IF IFILE = OFILE, RECORDS ON IFILE ARE SKIPPED.
- *
- * ASSUMED PARAMETERS.
- * IFILE = *INPUT*
- * OFILE = *OUTPUT*
- * N = 1
- * FCHAR = 1
- * LCHAR = 136
- * NA NOT SPECIFIED.
- COPYCR BSS 0 ENTRY
- SB1 1 (B1) = 1
- RJ PRS PRESET PROGRAM
- RJ SCC SET CHARACTER COUNTS
- NZ B7,ERR3 IF TOO MANY ARGUMENTS
- SX0 0 INITIALIZE LINE TRANSFER COUNT
- CCR1 READ I BEGIN READ
- RECALL O
- READS I,BUF,-BUFL
- RJ CPR COPY RECORD
- NG X1,ITM IF EOI
- SA2 CT DECREMENT COUNT
- SX6 X2-1
- SA6 A2
- NZ X6,CCR1 LOOP FOR ALL RECORDS
- EQ ITM TERMINATE PROGRAM
- COPYSBF SPACE 4,20
- *** COPYSBF (IFILE,OFILE,N,NA)
- *
- *
- * COPYSBF COPIES FILES FROM MEDIUM TO MEDIUM IN BINARY MODE,
- * SHIFTING EACH LINE IMAGE 1 CHARACTER TO THE RIGHT AND ADDING
- * A LEADING SPACE. A PAGE EJECT IS WRITTEN AT THE BEGINNING
- * OF EACH RECORD.
- *
- * IFILE INPUT FILE NAME.
- * OFILE OUTPUT FILE NAME.
- * N NUMBER OF FILES TO COPY.
- * NA DO NOT ABORT IF RECORD NOT Z-TYPE DATA.
- *
- * ASSUMED PARAMETERS.
- * IFILE = *INPUT*
- * OFILE = *OUTPUT*
- * N = 1
- * NA NOT SPECIFIED.
- COPYSBF BSS 0 ENTRY
- SB1 1 (B1) = 1
- RJ PRS PRESET PROGRAM
- RJ CNA CHECK FOR *NO ABORT* PARAMETER
- NZ B7,ERR3 IF TOO MANY PARAMETERS
- SX6 -1 SET CHARACTER -1
- SA6 FC
- SX7 LINL SET MAXIMUM LINE LENGTH
- SA7 LC
- SA1 I SET BINARY OPERATION
- SA2 O
- SX3 2
- BX6 X1+X3
- BX7 X2+X3
- SA6 A1
- SA7 A2
- SX0 0 INITIALIZE LINE TRANSFER COUNT
- CSF1 READ I BEGIN READ
- RECALL O
- READS I,BUF,-BUFL
- NZ X1,CSF3 IF EOR, EOF, OR EOI
- SA2 SK
- NZ X2,CSF2 IF SKIP SET
- SB7 BUF+BUFL LWA+1 OF BUFFER
- NE B6,B7,CSF1.1 IF BUFFER NOT FULL
- SA1 LTC INCREMENT TRUNCATION COUNT
- SX3 B1
- IX7 X1+X3
- SA7 A1 UPDATE COUNT
- SB6 B6-B1 DECREMENT CHARACTER COUNT
- CSF1.1 SX6 1R1 SET PAGE EJECT
- SB5 B6-BUF+1 GET NUMBER OF CHARACTERS IN BUFFER
- SA6 BUF-1
- WRITES O,BUF-1,B5 OUTPUT LINE
- SX6 1R CLEAR EJECT
- SA6 BUF-1
- SX1 B1
- IX0 X0+X1 SHOW LINE WRITTEN OUT ALREADY
- CSF2 READS I,BUF,-BUFL COPY REMAINDER OF RECORD
- CSF3 RJ CPR
- NG X1,ITM IF EOI
- ZR X1,CSF1 LOOP TO EOF
- SA2 CT DECREMENT COUNT
- SX6 X2-1
- SA6 A2
- NZ X6,CSF1 LOOP FOR ALL FILES
- EQ ITM TERMINATE PROGRAM
- SCOPY SPACE 4,25
- *** SCOPY(IFILE,OFILE,N,FCAR,LCAR,NA,R,FCS,FLINE,LLINE,NS)
- *
- *
- * *SCOPY* (STRUCTURE COPY) IS SIMILAR TO *COPYCF*, WITH EXTRA
- * PARAMETERS. THE FIRST SIX PARAMETERS ARE EXPLAINED IN THE
- * *COPYCF* HEADER. THE EXTRA PARAMETERS ARE AS FOLLOWS.
- *
- * R REWIND BOTH INPUT AND OUTPUT FILES.
- * FCS FILE CHARACTER SET -
- * D, BLANK, OR OMITTED = 6/12 DISPLAY CODE.
- * FLINE LINE NUMBER OF FIRST LINE TO COPY.
- * LLINE LINE NUMBER OF LAST LINE TO COPY.
- * NS NO STRUCTURE REPORTING.
- *
- * DEFAULT VALUES (IF PARAMETER OMITTED) -
- *
- * N -1 (COPY TO EOI).
- * LCHAR 500 (250 6/12 CHARACTERS).
- * R DO NOT REWIND FILES.
- * FCS 6/12 DISPLAY CODE.
- * FLINE PRESENT POSITION, BOI IF REWIND SPECIFIED.
- * LLINE EOI OR END OF FILE COUNT.
- * NS REPORT FILE STRUCTURE.
- SCOPY BSS 0 ENTRY
- SB1 1
- SX6 B1 SET *SCOPY* FLAG
- SX7 B1 SET STRUCTURE REPORTING
- SA6 SC
- SA7 NS
- SX6 500D SET 250-CHARACTER LINE LENGTH
- SX7 -1 SET TO COPY TO EOI
- SA6 LC
- SA7 CT
- RJ PRS PRESET PROGRAM
- RJ SCC SET CHARACTER COUNTS
- RJ SXP SET EXTRA PARAMETERS
- EQ CCF1 PROCESS FILE
- TITLE SUBROUTINES.
- CPR SPACE 4,20
- ** CPR - COPY RECORD.
- *
- * ENTRY (X1) = FIRST BLOCK STATUS.
- * (X0) = NUMBER OF LINES COPIED.
- * (B6) = ADDRESS PLUS ONE OF LAST CHARACTER IN BUFFER.
- *
- * EXIT (X1) .LT. 0, IF EOI ENCOUNTERED.
- * (X1) .NE. 0, IF EOF ENCOUNTERED.
- * (X1) = 0, IF EOR ENCOUNTERED.
- *
- * USES X - 0, 1, 2, 3, 6, 7.
- * B - 5, 7.
- * A - 1, 2, 3, 7.
- *
- * CALLS SLR.
- *
- * MACROS ABORT, READS, MESSAGE, WRITEF, WRITER, WRITEW.
- CPR SUBR ENTRY/EXIT
- BX7 X1
- SA7 CPRA SAVE READ STATUS
- NZ X1,CPR4 IF EOR, EOF, OR EOI
- CPR1 SA2 SK
- SX3 B1
- IX0 X0+X3 SHOW LINE COPIED
- NZ X2,CPR3 IF SKIP SET
- SB7 BUF+BUFL LWA+1 OF BUFFER
- NE B6,B7,CPR1.1 IF BUFFER NOT FULL
- SA1 LTC INCREMENT TRUNCATION COUNT
- IX7 X1+X3
- SA7 A1+ UPDATE COUNT
- SB6 B6-B1 DECREMENT CHARACTER COUNT
- CPR1.1 SA1 FC
- SA3 LC
- SB5 X1+BUF ADDRESS OF FIRST CHARACTER TO BE OUTPUT
- GE B5,B6,CPR9 IF FIRST CHARACTER TO COPY AFTER EOL
- SB5 X3+BUF ADDRESS OF LAST CHARACTER TO BE OUTPUT
- LE B5,B6,CPR2 IF LAST CHARACTER TO COPY BEFORE EOL
- SX3 B6-BUF RESET LAST CHARACTER
- CPR2 IX6 X3-X1 NUMBER OF CHARACTERS TO BE OUTPUT
- RJ SLR SELECT LINE RANGE
- NG X6,CPR3 IF LINE NOT TO BE PRINTED
- WRITES O,X1+BUF,X6
- CPR3 SA1 CPRA
- NZ X1,CPR4.1 IF LAST READ STATUS WAS EOR/EOF/EOI
- READS I,BUF,-BUFL
- BX7 X1
- SA7 CPRA SAVE READ STATUS
- ZR X1,CPR1 LOOP IF NO EOR/EOF
- CPR4 SB5 B6-BUF
- NZ B5,CPR8 IF UNTERMINATED LINE
- CPR4.1 NG X1,CPR6 IF EOF OR EOI
- * PROCESS EOR.
- SA2 NS CHECK STRUCTURE PARAMETER
- ZR X2,CPR4.2 IF STRUCTURE NOT REQUESTED
- WRITEW O,CPRB,2
- CPR4.2 SA2 SK
- NZ X2,CPR5 IF SKIP SET
- WRITER O END RECORD
- CPR5 SX1 B0 SET EOR STATUS
- SA3 RCNT INCREMENT RECORD COUNT
- SX7 X3+B1
- SA7 A3
- EQ CPRX RETURN
- * PROCESS EOF AND EOI.
- CPR6 SA2 NS
- ZR X2,CPR6.1 IF STRUCTURE NOT REQUESTED
- WRITEW O,CPRC,2
- CPR6.1 SA2 SK
- NZ X2,CPR7 IF SKIP SET
- WRITEF O
- CPR7 SA2 I CHECK FILE STATUS
- LX2 59-9
- SX1 B1 SET EOF
- SA3 FCNT INCREMENT FILE COUNT
- SX6 X3+B1
- SA6 A3
- PL X2,CPRX IF NOT EOI
- SX1 -B1 SET EOI STATUS
- EQ CPRX RETURN
- CPR8 SX7 B1 SET NON Z-TYPE DATA FLAG
- SA7 NZ
- SA1 NA
- NZ X1,CPR1 IF NO-ABORT SPECIFIED
- MESSAGE ITMD,0 ISSUE NO LINE TERMINATOR MESSAGE
- ABORT
- CPR9 WRITEW O,(=1L ),B1 ISSUE NULL LINE
- EQ CPR3 CONTINUE RECORD COPY
- CPRA CON 0 LAST READ STATUS
- CPRB DATA C*--EOR-- *
- CPRC DATA C*--EOF-- *
- ITM SPACE 4,15
- ** ITM - ISSUE TERMINATION MESSAGES.
- *
- * ENTRY (LTC) = NUMBER OF LINES TRUNCATED.
- * (X1) = -1 IF EOI ENCOUNTERED.
- * = 0 IF EOR ENCOUNTERED.
- * = 1 IF EOF ENCOUNTERED.
- *
- * EXIT APPROPRIATE MESSAGES ISSUED TO DAYFILE.
- *
- * USES X - 1, 2, 5, 7.
- * A - 1, 2, 7.
- * B - 2, 5.
- *
- * CALLS CDD, SNM.
- *
- * MACROS ENDRUN, MESSAGE.
- ITM BSS 0 ENTRY
- SX7 X1+ SAVE TERMINATION TYPE
- SA7 ITME
- SA1 X1+ITMG+1 TERMINATION TYPE
- SB5 ITMF
- SB2 1R/
- RJ SNM SET TERMINATION TYPE INTO MESSAGE
- SA1 LTC GET TRUNCATION COUNT
- ZR X1,ITM1 IF NO LINES TRUNCATED
- RJ CDD CONVERT TO DECIMAL DISPLAY CODE
- MX1 1 ENTER COUNT IN MESSAGE
- SB2 B2-B1
- AX1 B2
- BX1 X1*X4
- SB2 1RX
- SB5 ITMA
- RJ SNM
- MESSAGE ITMA,3 ISSUE LINES TRUNCATED MESSAGE
- ITM1 SA1 NZ
- ZR X1,ITM2 IF Z-TYPE DATA
- MESSAGE ITMD,0 ISSUE NO LINE TERMINATOR MESSAGE
- ITM2 SX1 ITMB * EOI ENCOUNTERED.*
- SA2 ITME
- NG X2,ITM3 IF EOI ENCOUNTERED
- SX1 ITMC * COPY COMPLETE.*
- ITM3 MESSAGE X1,0 ISSUE COMPLETION MESSAGE
- SA1 FCNT FILE COUNT
- RJ CDD CONVERT TO DISPLAY
- SB2 B2-B1
- MX5 1
- AX1 X5,B2
- BX1 X1*X4 ZERO FILL
- SB5 ITMF
- SB2 1R+
- RJ SNM SET FILE COUNT INTO MESSAGE
- SA1 FCNT
- SX1 X1-1
- ZR X1,ITM3.1 IF JUST ONE FILE
- SA1 =1LS
- ITM3.1 SB2 1R#
- RJ SNM SET PLURAL INTO MESSAGE
- SA1 RCNT RECORD COUNT
- RJ CDD CONVERT TO DISPLAY
- SB2 B2-B1
- AX1 X5,B2
- BX1 X1*X4 ZERO FILL
- SB2 1R-
- RJ SNM SET RECORD COUNT INTO MESSAGE
- SA1 RCNT
- SX1 X1-1
- ZR X1,ITM3.2 IF JUST ONE RECORD
- SA1 =1LS
- ITM3.2 SB2 1R$
- RJ SNM SET PLURAL INTO MESSAGE
- BX1 X0 LINE COUNT
- RJ CDD CONVERT TO DISPLAY
- SB2 B2-B1
- AX1 X5,B2
- BX1 X1*X4 ZERO FILL
- SB2 1R,
- RJ SNM SET LINE COUNT INTO MESSAGE
- SX1 B1
- IX1 X0-X1
- ZR X1,ITM3.3 IF JUST ONE LINE
- SA1 =1LS
- ITM3.3 SB2 1R=
- RJ SNM SET PLURAL INTO MESSAGE
- MESSAGE ITMF
- SA2 SC CHECK CALL
- ZR X2,ITM4 IF NOT *SCOPY*
- MESSAGE =0,1 CLEAR *MS1W* FOR INTERACTIVE USERS
- ITM4 ENDRUN
- ITMA DATA C* XXXXXXXXXX LINE(S) TRUNCATED.*
- ITMB DATA C* EOI ENCOUNTERED.*
- ITMC DATA C* COPY COMPLETE.*
- ITMD DATA C* NO LINE TERMINATOR AT EOR(S).*
- ITME BSS 1 TERMINATION TYPE
- ITMF DATA C* ///. ++++++++++ FILE#; ---------- RECORD$; ,,,,,,,,,
- ,, LINE=.*
- ITMG DATA L*EOI*
- DATA L*EOR*
- DATA L*EOF*
- SLR SPACE 4,15
- ** SLR - SELECT LINE RANGE.
- *
- * ENTRY (X1) = OFFSET INTO BUF OF FIRST CHARACTER OF LINE.
- * (X6) = NUMBER OF CHARACTERS IN LINE.
- *
- * EXIT (X1) = UNCHANGED.
- * (X6) = UNCHANGED IF LINE TO BE COPIED.
- * = -1 IF LINE TO BE SKIPPED.
- *
- * USES X - 1, 2, 3, 4, 5, 6.
- * A - 1, 2, 3, 4, 6.
- * B - 6, 7.
- *
- * CALLS DXB.
- SLR SUBR ENTRY/EXIT
- SA2 FL CHECK LINE RANGE
- SA3 LL
- IX2 X2+X3
- NG X2,SLRX IF NO LINE RANGE SPECIFIED
- SB7 X6 SET CHARACTER COUNT
- SA6 SLRB SAVE ENTRY CONDITION
- BX6 X1
- SA6 A6-B1
- SA1 X1+BUF GET FIRST CHARACTER
- BX5 X5-X5 CLEAR ASSEMBLY WORD
- SB6 60
- * PROCESS DISPLAY CODE FILE.
- SLR1 SX2 X1-1R0 CHECK CHARACTER
- NG X2,SLR2 IF NOT NUMERIC
- SX2 X1-1R+
- PL X2,SLR2 IF NOT NUMERIC
- SB6 B6-6
- LX1 X1,B6
- BX5 X1+X5 MERGE DIGIT
- ZR B6,SLR2 IF TEN DIGITS PROCESSED
- SB7 B7-B1
- SA1 A1+B1
- ZR B7,SLR2 IF END OF LINE
- EQ SLR1 CONTINUE PROCESSING
- SLR2 ZR X5,SLR3 IF NO DIGITS FOUND
- RJ DXB TRANSLATE LINE NUMBER
- SA2 SLRB
- SA3 FL
- SA4 LL
- IX5 X6-X3
- SA1 SLRA
- IX3 X4-X6
- NG X5,SLR3 IF LINE NOT IN RANGE
- BX6 X2
- NG X4,SLRX IF NO END OF RANGE SPECIFIEC
- PL X3,SLRX IF IN RANGE
- SLR3 SX6 -1
- EQ SLRX EXIT
- SLRA CON 0 SAVE (X1)
- SLRB CON 0 SAVE (X6)
- SPACE 4
- * COMMON DECKS.
- *CALL COMCCDD
- *CALL COMCCIO
- *CALL COMCDXB
- *CALL COMCRDS
- *CALL COMCRDW
- *CALL COMCSNM
- *CALL COMCSYS
- *CALL COMCWTS
- *CALL COMCWTW
- SPACE 4
- ** BUFFERS.
- BUFFERS BSS 0
- USE //
- SEG
- BSS 1
- BUF BSS BUFL
- IBUF BSS IBUFL
- OBUF BSS OBUFL
- RFL= BSS 0
- PRS TITLE PRESET.
- ** PRS - PRESET PROGRAM.
- *
- * EXIT (B7) = REMAINDER ARGUMENT COUNT.
- * (A5) = LAST ARGUMENT ADDRESS.
- ORG BUF
- PRS SUBR ENTRY/EXIT
- SX6 IBUF ENTER POINTER TO INPUT BUFFER
- SA6 0
- SA1 ACTR CHECK ARGUMENT COUNT
- MX4 42
- SB7 X1
- ZR B7,PRSX IF NO ARGUMENTS
- * PROCESS IFILE NAME.
- SA5 ARGR SET IFILE NAME
- SA2 I
- BX7 X4*X5
- SX3 X2
- ZR X7,PRS1 IF BLANK ARGUMENT
- IX7 X7+X3
- SA7 A2
- * PROCESS OFILE NAME.
- PRS1 SB7 B7-B1
- ZR B7,PRS2 IF 1 ARGUMENT
- SA5 A5+B1 SET OFILE NAME
- SA2 O
- BX7 X4*X5
- SB7 B7-B1
- ZR X7,PRS2 IF BLANK ARGUMENT
- IX7 X7+X3
- SA7 A2
- * CHECK FILE NAMES.
- PRS2 SA1 I CHECK FILE NAMES
- SA2 O
- IX7 X1-X2
- NZ X7,PRS3 IF IFILE .NE. OFILE
- SX6 B1 SET SKIP FLAG
- SA6 SK
- * PROCESS COUNT.
- PRS3 ZR B7,PRSX IF NO ADDITIONAL ARGUMENTS
- SA5 A5+1
- ZR X5,PRS4 IF BLANK ARGUMENT
- RJ DXB CONVERT NUMBER
- NZ X4,ERR1 IF INCORRECT COUNT
- ZR X6,ERR1 IF COUNT = 0
- SA6 CT
- PRS4 SB7 B7-1
- EQ PRSX RETURN
- SPACE 4,15
- ** SCC - SET CHARACTER COUNTS.
- *
- * ENTRY (A5) = ADDRESS OF LAST ARGUMENT PROCESSED.
- * (B7) = REMAINING ARGUMENT COUNT.
- *
- * EXIT (A5) = ADDRESS-1 OF NEXT ARGUMENT.
- * (B7) = REMAINING ARGUMENT COUNT.
- * (NA) = 1 IF NO-ABORT SPECIFIED.
- *
- * USES X - 1, 2, 5, 6.
- * A - 1, 2, 5, 6.
- * B - 2, 7.
- *
- * CALLS CNA, DXB.
- SCC SUBR ENTRY/EXIT
- ZR B7,SCCX IF NO REMAINING ARGUMENTS
- SA5 A5+B1 CHECK START CHARACTER
- ZR X5,SCC2 IF BLANK
- RJ DXB
- NZ X4,ERR2 IF INCORRECT COUNT
- ZR X6,ERR2 IF FIRST CHARACTER COUNT = ZERO
- SB2 X6-BUFL-1
- PL B2,ERR2 IF FIRST OUT OF RANGE
- SX6 X6-1
- SA6 FC
- SCC2 SB7 B7-B1
- ZR B7,SCC3 IF NO ADDITIONAL COUNTS
- SA5 A5+B1 CHECK TERMINAL CHARACTER
- ZR X5,SCC2.1 IF BLANK
- RJ DXB
- NZ X4,ERR2 IF INCORRECT COUNT
- SB2 X6-BUFL-1
- PL B2,ERR2 IF LAST OUT OF RANGE
- SA6 LC
- SCC2.1 SB7 B7-B1 DECREMENT ARGUMENT COUNT
- SCC3 SA1 FC CHECK CHARACTER LIMITS
- SA2 LC
- IX6 X2-X1
- NG X6,ERR2 IF FIRST .GT. LAST
- RJ CNA CHECK FOR *NA* PARAMETER
- EQ SCCX RETURN
- CNA SPACE 4,10
- ** CNA - CHECK FOR *NA* PARAMETER (NO ABORT).
- *
- * ENTRY (A5) = ADDRESS OF LAST ARGUMENT PROCESSED.
- * (B7) = REMAINING ARGUMENT COUNT.
- *
- * EXIT (NA) = 1 IF NO-ABORT SPECIFIED.
- * (B7) = REMAINING ARGUMENT COUNT.
- *
- * USES X - 5, 6.
- * A - 5, 6.
- * B - 7.
- CNA SUBR ENTRY/EXIT
- ZR B7,CNAX IF NO REMAINING ARGUMENTS
- SA5 A5+B1 CHECK *NA* PARAMETER
- SB7 B7-B1
- ZR X5,CNAX IF BLANK
- SX6 B1
- SA6 NA SET *NA* FLAG
- EQ CNAX RETURN
- SXP SPACE 4,15
- ** SXP - SET EXTRA PARAMETERS.
- *
- * ENTRY (A5) = ADDRESS OF LAST ARGUMENT PROCESSED.
- * (B7) = ARGUMENT COUNT.
- *
- * USES X - 0, 1, 2, 4, 5, 6.
- * A - 1, 2, 5, 6.
- * B - 7.
- *
- * CALLS CCS, DXB, ERR.
- *
- * MACROS REWIND.
- SXP SUBR ENTRY/EXIT
- ZR B7,SXPX IF NO REMAINING ARGUMENTS
- * PROCESS REWIND PARAMETER.
- SA5 A5+B1
- ZR X5,SXP1 IF NULL PARAMETER
- AX5 54
- SX6 X5-1RR
- NZ X6,ERR4 IF INCORRECT PARAMETER
- REWIND I
- REWIND O
- SXP1 SB7 B7-B1
- RJ CCS CHECK CHARACTER SET
- ZR B7,SXPX IF NO MORE PARAMETERS
- * PROCESS LINE NUMBER PARAMETERS.
- SA5 A5+B1 GET FIRST LINE NUMBER
- ZR X5,SXP2 IF NULL PARAMETER
- RJ DXB TRANSLATE PARAMETER
- NZ X4,ERR5 IF ERROR DETECTED
- SA6 FL
- SXP2 SB7 B7-B1
- ZR B7,SXPX IF NO MORE PARAMETERS
- SA5 A5+B1
- ZR X5,SXP3 IF NULL PARAMETER
- RJ DXB TRANSLATE PARAMETER
- NZ X4,ERR5 IF ERROR DETECTED
- SA6 LL
- ZR X6,SXP3 IF EOI SPECIFIED
- SA1 FL
- IX6 X6-X1
- NG X6,ERR5 IF FIRST .GT. LAST
- SXP3 SB7 B7-B1
- ZR B7,SXPX IF NO MORE PARAMETERS
- * PROCESS STRUCTURE PARAMETER.
- SA5 A5+B1
- ZR X5,SXP4 IF NULL PARAMETER
- AX5 48
- BX6 X6-X6
- SX5 X5-2RNS
- NZ X5,ERR6 IF NOT *NS*
- SA6 NS
- SXP4 SB7 B7-B1
- NZ B7,ERR3 IF TOO MANY PARAMETERS
- EQ SXPX EXIT
- CCS SPACE 4,15
- ** CCS - CHECK CHARACTER SET.
- *
- * ENTRY (A5) = ADDRESS OF LAST ARGUMENT PROCESSED.
- * (B7) = NUMBER OF PARAMETERS LEFT TO PROCESS.
- *
- * EXIT (A5) = UPDATED.
- * (B7) = UPDATED.
- *
- * USES X - 1, 2, 5.
- * A - 5.
- * B - 7.
- *
- * CALLS ERR.
- CCS SUBR ENTRY/EXIT
- ZR B7,CCSX IF NO REMAINING ARGUMENTS
- SA5 A5+B1
- SB7 B7-B1
- ZR X5,CCSX IF NULL PARAMETER
- MX2 48
- BX5 X2*X5
- LX5 6
- SX1 X5-1RD
- NZ X1,ERR7 IF NOT 6/12 DISPLAY CODE
- EQ CCSX EXIT
- ERR SPACE 4
- ** ERR - PROCESS ERRORS.
- ERR1 SX0 ERRA
- EQ ERR
- ERR2 SX0 ERRB
- EQ ERR EXIT
- ERR3 SX0 ERRC
- EQ ERR EXIT
- ERR4 SX0 ERRD
- EQ ERR EXIT
- ERR5 SX0 ERRE
- EQ ERR EXIT
- ERR6 SX0 ERRF
- EQ ERR EXIT
- ERR7 SX0 ERRG
- ERR MESSAGE X0
- ABORT
- ERRA DATA C*INCORRECT COUNT.*
- ERRB DATA C*INCORRECT CHARACTER NUMBER.*
- ERRC DATA C*TOO MANY PARAMETERS.*
- ERRD DATA C*INCORRECT REWIND SPECIFICATION.*
- ERRE DATA C*INCORRECT LINE NUMBER SPECIFICATION.*
- ERRF DATA C*INCORRECT STRUCTURE SPECIFICATION.*
- ERRG DATA C*INCORRECT CHARACTER SET SPECIFICATION.*
- SPACE 4
- END
cdc/nos2.source/opl871/copyc.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator