home *** CD-ROM | disk | FTP | other *** search
- TITLE 'TESTIO - TEST FIXED, VARIABLE, AND TEXT FILE I/O'
- *
- * PGM-ID. TESTIO.ALC
- * COPYRIGHT 1987 DONALD S. HIGGINS
- *
- * MAINTENANCE.
- *
- * 03/30/85 CONVERTED TO 8086 PC/370 R1.0
- * 02/25/87 CONVERT DCB FOR PC/370 R2.0 WITH EXTENDED ADDRESS SPACE
- * AND MS-DOC FILE HANDLE I/O SUPPORT
- * 02/27/87 RESTRUCTURE FOR MULTIPLE TESTS WITH DIFFERENT LRECL/BLKSZ
- * 03/02/87 ADD EMPTY FILE TEST AND SHORT FIXED BLOCK READ/WRITE TEST
- * 03/03/87 ADD SHORT MEMORY TESTS
- * 04/16/87 CLEAR R1 FOR GET/PUT/READ/WRITE FOR RCD/BUF OPTION TESTS
- * 04/17/87 ADD TEST OF BLK AND RCD OPTIONS IN SWF AND SPF RTNS
- * 05/24/87 ADD TEST OF SYNAD EXIT FOR BAD RBA RANDOM READ/WRITE
- *
- * MAINLINE
- *
- TESTIO CSECT
- LR R10,R15
- USING TESTIO,R10
- LA R11,4095(R10)
- USING TESTIO+4095,R11
- LA R2,=C'TESTIO STARTED$'
- SVC WTO
- CLC =A(LDCB),=A(86) VERIFY IHADCB LENGTH
- BNE FSYN
- LA R2,=C'FMEM - SAVE ORIGINAL FREE QUEUE ELEMENT$'
- SVC WTO
- L R1,ASCBASF R1=FIRST FQE
- MVC SAVEFQE,0(R1)
- BAL R12,FINIT SEARCH AND DELETE
- LA R2,=C'FSET - LRECL=BLKSZ=128$'
- SVC WTO
- BAL R12,FNUL FIXED OPEN CLOSE OPEN GET CLOSE
- BAL R12,FSPF SEQ PUT FIXED
- CLC TESTF+(IOCNT-IHADCB)(4),=F'10'
- BNE FSYN VERIFY 10 I/O'S FOR 10 RECORDS
- BAL R12,FSGF SEQ GET FIXED
- CLC TESTF+(IOCNT-IHADCB)(4),=F'10'
- BNE FSYN VERIFY 10 I/O'S FOR 10 RECORDS
- CLC TESTF+(PRECL-IHADCB)(2),=H'128'
- BNE FSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- LA R2,=C'FSET - LRECL=128 BLKSZ=256$'
- SVC WTO
- MVC TESTF+(BLKSZ-IHADCB)(2),=H'256'
- BAL R12,FSPF SEQ PUT FIXED
- CLC TESTF+(IOCNT-IHADCB)(4),=F'5'
- BNE FSYN VERIFY 5 I/O'S FOR 10 RECORDS
- BAL R12,FSGF SEQ GET FIXED
- CLC TESTF+(PRECL-IHADCB)(2),=H'256'
- BNE FSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTF+(IOCNT-IHADCB)(4),=F'5'
- BNE FSYN VERIFY 5 I/O'S FOR 10 RECORDS
- BAL R12,FRWR RANDOM UPDATE
- BAL R12,FREN SEARCH, RENAME, DELETE
- BAL R12,FSWF SEQ WRITE FIXED
- BAL R12,FSRF SEQ READ FIXED
- CLC TESTF+(PRECL-IHADCB)(2),=H'128'
- BNE FSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTF+(IOCNT-IHADCB)(4),=F'10'
- BNE FSYN VERIFY 10 I/O'S FOR 10 RECORDS
- LA R2,=C'FSET - LRECL=500 BLKSZ=500$'
- SVC WTO
- MVC TESTF+(LRECL-IHADCB)(2),=H'500'
- BAL R12,FCPY COPY TESTF.DAT TO TESTC.DAT
- CLC TESTF+(PRECL-IHADCB)(2),=AL2(10*128-2*500) 280
- BNE FSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTF+(IOCNT-IHADCB)(4),=F'3'
- BNE FSYN VERIFY 3 I/O'S FOR 10 RECORDS
- LA R2,=C'VSET - LRECL=55 BLKSZ=0$'
- SVC WTO
- SVC TRACE
- DC C'V00'
- BAL R12,VNUL VAR OPEN CLOSE OPEN GET CLOSE
- BAL R12,VSPV SEQ PUT VAR
- CLC TESTV+(IOCNT-IHADCB)(4),=F'1'
- BNE VSYN VERIFY 1 I/O'S FOR 10 RECORDS
- BAL R12,VSGV SEQ GET VAR
- CLC TESTV+(PRECL-IHADCB)(2),=AL2(15)
- BNE VSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTV+(IOCNT-IHADCB)(4),=F'1'
- BNE VSYN VERIFY 1 I/O'S FOR 10 RECORDS
- LA R2,=C'VSET - LRECL=55 BLKSZ=16$'
- SVC WTO
- MVC TESTV+(BLKSZ-IHADCB)(2),=H'16'
- SVC TRACE
- DC C'V25'
- BAL R12,VSPV SEQ PUT VAR
- CLC TESTV+(IOCNT-IHADCB)(4),=F'1'
- BNE VSYN VERIFY 1 I/O'S FOR 10 RECORDS
- BAL R12,VSGV SEQ GET VAR
- CLC TESTV+(PRECL-IHADCB)(2),=AL2(15)
- BNE VSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTV+(IOCNT-IHADCB)(4),=F'1'
- BNE VSYN VERIFY 1 I/O'S FOR 10 RECORDS
- LA R2,=C'VSET - LRECL=55 BLKSZ=8$'
- SVC WTO
- MVC TESTV+(BLKSZ-IHADCB)(2),=H'8'
- SVC TRACE
- DC C'V25'
- BAL R12,VSPV SEQ PUT VAR
- CLC TESTV+(IOCNT-IHADCB)(4),=F'2'
- BNE VSYN VERIFY 2 I/O'S FOR 10 RECORDS
- BAL R12,VSGV SEQ GET VAR
- CLC TESTV+(PRECL-IHADCB)(2),=AL2(7)
- BNE VSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTV+(IOCNT-IHADCB)(4),=F'2'
- BNE VSYN VERIFY 2 I/O'S FOR 10 RECORDS
- LA R2,=C'FMEM - SET MAX MEMORY AVAIL = 64$'
- SVC WTO
- L R1,ASCBASF
- CLC SAVEFQE,0(R1)
- BNE FSYN
- MVC SAVEFQE+4(4),=A(64)
- MVC 4(4,R1),=A(64)
- SVC TRACE
- DC C'M64'
- LA R2,=C'TSET - LRECL=128 BLKSZ=0$'
- SVC WTO
- BAL R12,TNUL TXT OPEN CLOSE OPEN GET CLOSE
- BAL R12,TSPT SEQ PUT TXT
- CLC TESTT+(BLKSZ-IHADCB)(2),=H'64'
- BNE FSYN
- CLC TESTT+(IOCNT-IHADCB)(4),=F'1'
- BNE TSYN VERIFY 1 I/O'S FOR 2 RECORDS
- BAL R12,TSGT SEQ GET TXT
- CLC TESTT+(PRECL-IHADCB)(2),=AL2(17)
- BNE TSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTT+(IOCNT-IHADCB)(4),=F'1'
- BNE TSYN VERIFY 1 I/O'S FOR 2 RECORDS
- LA R2,=C'TSET - LRECL=55 BLKSZ=16$'
- SVC WTO
- MVC TESTT+(BLKSZ-IHADCB)(2),=H'16'
- BAL R12,TSPT SEQ PUT VAR
- CLC TESTT+(IOCNT-IHADCB)(4),=F'1'
- BNE TSYN VERIFY 1 I/O'S FOR 2 RECORDS
- BAL R12,TSGT SEQ GET VAR
- CLC TESTT+(PRECL-IHADCB)(2),=AL2(1)
- BNE TSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTT+(IOCNT-IHADCB)(4),=F'2'
- BNE TSYN VERIFY 2 I/O'S FOR 2 RECORDS (EOF IN BUF 2)
- LA R2,=C'TSET - LRECL=55 BLKSZ=8$'
- SVC WTO
- MVC TESTT+(BLKSZ-IHADCB)(2),=H'8'
- BAL R12,TSPT SEQ PUT VAR
- CLC TESTT+(IOCNT-IHADCB)(4),=F'2'
- BNE TSYN VERIFY 2 I/O'S FOR 2 RECORDS
- BAL R12,TSGT SEQ GET VAR
- CLC TESTT+(PRECL-IHADCB)(2),=AL2(1)
- BNE TSYN VERIFY LAST PHYICAL RECORD LENGTH READ
- CLC TESTT+(IOCNT-IHADCB)(4),=F'3'
- BNE TSYN VERIFY 3 I/O'S FOR 2 RECORDS (EOF IN BUF 3)
- L R1,ASCBASF
- CLC SAVEFQE,0(R1)
- BNE FSYN VERIFY ORIG. FQE
- LA R2,=C'TESTIO END$'
- SVC WTO
- SVC EXIT
- *
- * FILE I/O ROUTINES
- *
- *
- * TESTF TEST FIXED LENGTH RECORD I/O
- *
- FINIT EQU *
- LA R2,=C'FINT - SEARCH DELETE TESTF.DAT$'
- SVC WTO
- LA R2,TESTF
- SVC SEARCH
- CLM R0,1,=X'00'
- BNE FNFD TESTF.DAT NOT FOUND
- LA R2,TESTF
- SVC DELETE
- LA R2,TESTF
- SVC SEARCH
- CLM R0,1,=X'00'
- BE FSYN ERROR IF FOUND THIS TIME
- FNFD EQU *
- BR R12
- FNUL EQU *
- LA R2,=C'FNUL - FIXED OPEN CLOSE OPEN GET CLOSE$'
- SVC WTO
- LA R2,TESTF
- USING IHADCB,R2
- MVI MACRF,C'W'
- MVC SYNAD,=A(FNUL1)
- L R1,ASCBASF
- MVC 4(4,R1),=A(64) FORCE SYNAD EXIT - BLKSZ NOT AVAIL FOR W
- SVC TRACE
- DC C'FME'
- SVC OPEN
- B FSYN
- FNUL1 EQU *
- L R1,ASCBASF
- CLC SAVEFQE(4),0(R1)
- BNE FSYN
- CLC 4(4,R1),=A(64)
- BNE FSYN
- MVC 4(4,R1),SAVEFQE+4 RESTORE FQE
- MVI MACRF,C'P'
- MVC SYNAD,=A(FSYN)
- SVC OPEN
- SVC CLOSE
- MVC EODAD,=A(FNULEOF1)
- MVI MACRF,C'G'
- SVC OPEN
- SR R1,R1
- SVC GET
- B FSYN
- FNULEOF1 EQU *
- SVC CLOSE
- MVI MACRF,C'W'
- SVC OPEN
- SVC CLOSE
- MVC EODAD,=A(FNULEOF2)
- MVI MACRF,C'R'
- SVC OPEN
- SR R1,R1
- SVC GET
- B FSYN
- FNULEOF2 EQU *
- SVC CLOSE
- BR R12
- FSPF EQU *
- LA R2,=C'FSPT - SEQ PUT FIXED$'
- SVC WTO
- LA R2,TESTF
- USING IHADCB,R2
- MVI MACRF,C'P'
- MVC RCD,=A(0) ZERO DEFAULT AREA ADDR TO TEST OVERRIDE
- SVC OPEN
- LA R3,10
- LA R4,1
- PFLOOP EQU *
- STC R4,FREC
- MVC FREC+1(L'FREC-1),FREC FILL RECORD WITH RECORD #
- LA R4,1(R4)
- LA R1,FREC OVERRIDE AREA ADDRESS
- SVC PUT SEQUENTIALLY WRITE FIXED FILE RECORDS
- BCT R3,PFLOOP
- SVC CLOSE
- BR R12
- FSGF EQU *
- LA R2,=C'FSGF - SEQ GET FIXED$'
- SVC WTO
- LA R2,TESTF
- USING IHADCB,R2
- MVC EODAD,=A(GFEOF)
- MVI MACRF,C'G'
- SVC OPEN
- LA R4,0
- GFLOOP EQU *
- SR R1,R1
- SVC GET SEQUENTIALLY GET FIXED FILE RECORDS
- LA R4,1(R4)
- CLM R4,1,FREC
- BNE FSYN
- CLC FREC+1(L'FREC-1),FREC FILL RECORD WITH RECORD #
- BNE FSYN
- B GFLOOP
- GFEOF EQU *
- CH R4,=H'10'
- BNE FSYN
- SVC CLOSE
- BR R12
- FRWR EQU *
- LA R2,=C'FRWR - RANDOM UDATE$'
- SVC WTO
- LA R2,TESTF
- MVI DSORG,C'R' RANDOM
- MVI MACRF,C'W' READ OR WRITE
- MVC SYNAD,=A(FRWRSYN)
- MVI SYNOK,FALSE NO SYNAD ALLOWED DEFAULT
- SVC OPEN
- LA R4,4 RELATIVE RECORD NUMBER 4
- MH R4,LRECL RELALIVE BYTE
- ST R4,RBA
- SR R1,R1
- SVC READ RANDOMLY READ RECORD 5
- L R5,BLK
- CLI 0(R5),5
- BAL R14,CHKF
- CLC 1(L'FREC-1,R5),0(R5)
- BAL R14,CHKF
- MVI 0(R5),X'FF'
- MVC 1(L'FREC-1,R5),0(R5)
- SVC TRACE
- DC C'WR5'
- SVC WRITE UPDATE RECORD 5 WITH HIGH VALUES
- LA R4,1
- MH R4,LRECL
- ST R4,RBA
- SR R1,R1
- SVC READ RANDOMLY READ RECORD 2 AND VERIFY
- CLI 0(R5),2
- BAL R14,CHKF
- CLC 1(L'FREC-1,R5),0(R5)
- BAL R14,CHKF
- LA R4,4 RELATIVE RECORD NUMBER 4
- MH R4,LRECL REALITVE BYTE
- ST R4,RBA
- SR R1,R1
- SVC READ REREAD RECORD 5 AND VERFIY
- CLI 0(R5),X'FF'
- BAL R14,CHKF
- CLC 1(L'FREC-1,R5),0(R5)
- BAL R14,CHKF
- L R4,=X'0FFFFFFF' ATTEMPT RANDOM WRITE BEYOND DISK CAP.
- ST R4,RBA
- SR R1,R1
- LA R14,FRWROK1
- MVI SYNOK,TRUE
- SVC TRACE
- DC C'RW1'
- SVC WRITE
- B FSYN
- FRWROK1 EQU *
- L R4,=X'0FFFFFFF' ATTEMPT RANDOM WRITE BEYOND DISK CAP.
- ST R4,RBA
- SR R1,R1
- LA R14,FRWROK2
- MVI SYNOK,TRUE
- SVC TRACE
- DC C'RW2'
- SVC READ
- B FSYN
- FRWROK2 EQU *
- MVI SYNOK,FALSE
- SVC CLOSE
- BR R12
- FREN EQU *
- LA R2,=C'FREN - SEARCH RENAME DELETE$'
- SVC WTO
- LA R2,TESTF
- SVC SEARCH
- CLM R0,1,=X'00'
- BNE FSYN TESTF.DAT NOT FOUND
- LA R2,TESTF
- MVC DCBDSN,=A(TESTFTST)
- SVC SEARCH
- CLM R0,1,=X'00'
- BNE SKPDTST TESTF.TST NOT FOUND
- LA R2,TESTF
- SVC DELETE
- SKPDTST EQU *
- LA R2,TESTF
- MVC DCBDSN,=A(FDSN)
- MVC REN,=A(TESTFTST)
- SVC RENAME
- LA R2,TESTF
- MVC DCBDSN,=A(TESTFTST)
- SVC SEARCH
- CLM R0,1,=X'00'
- BNE FSYN ERROR IF RENAMED FILE NOT FOUND
- LA R2,TESTF
- SVC TRACE
- DC C'TST '
- SVC DELETE
- LA R2,TESTF
- MVC DCBDSN,=A(TESTFTST)
- SVC SEARCH
- CLM R0,1,=X'00'
- BE FSYN ERROR IF DELETED RENAMED FILE FOUND
- BR R12
- *
- * TESTF SWF/SRF
- *
- FSWF EQU *
- LA R2,=C'FSWF - SEQ WRITE FIXED$'
- SVC WTO
- LA R2,TESTF
- USING IHADCB,R2
- MVI DSORG,C'S'
- MVI MACRF,C'W'
- MVC DCBDSN,=A(FDSN)
- MVC BLKSZ,LRECL RESET BLKSZ=LRECL
- OI DCBFLG,DFUBUF SET USER BUFFER OPTION
- MVC BLK,=A(FREC) INIT TO PRIMARY RECORD AREA
- SVC OPEN
- LA R3,10
- LA R4,1
- LA R5,FALT
- WFLOOP EQU *
- SVC TRACE
- DC C'SWF '
- STC R4,0(R5)
- MVC 1(L'FREC-1,R5),0(R5) FILL BLOCK WITH RECORD #
- LA R4,1(R4)
- LA R1,FALT OVERRIDE BUFFER ADDRESS FOR WRITE
- SVC WRITE SEQUENTIALLY WRITE FIXED FILE RECORDS
- BCT R3,WFLOOP
- SVC CLOSE
- XI DCBFLG,DFUBUF TURN OFF USER BUFFER
- MVC BLK,=A(0) RESET BLK POINTER
- BR R12
- FSRF EQU *
- LA R2,=C'FSRF - SEQ READ FIXED$'
- SVC WTO
- LA R2,TESTF
- USING IHADCB,R2
- MVC EODAD,=A(RFEOF)
- MVI MACRF,C'R'
- SVC OPEN
- LA R4,0
- L R5,BLK
- RFLOOP EQU *
- SVC TRACE
- DC C'RWF '
- SR R1,R1
- SVC READ SEQUENTIALLY READ FIXED FILE RECORDS
- LA R4,1(R4)
- CLM R4,1,0(R5)
- BNE FSYN
- CLC 1(L'FREC-1,R5),0(R5) CHECK FULL BLOCK
- BNE FSYN
- B RFLOOP
- RFEOF EQU *
- CH R4,=H'10'
- BNE FSYN
- SVC CLOSE
- BR R12
- FCPY EQU *
- LA R2,=C'FCPY - SEQ READ/WRITE FIXED COPY$'
- SVC WTO
- LA R2,TESTC
- USING IHADCB,R2
- MVC LRECL,TESTF+(LRECL-IHADCB) COPY LRECL SET
- MVC BLKSZ,LRECL
- SVC OPEN OPEN SWF OUTPUT COPY FILE
- L R1,BLK
- LA R2,TESTF
- USING IHADCB,R2
- MVC LRECL,TESTF+(LRECL-IHADCB)
- MVC BLKSZ,LRECL
- ST R1,BLK SET INPUT FILE BUFFER TO OUTPUT BUFFER
- OI DCBFLG,DFUBUF TURN ON USER DEFINED BUFFER
- MVC EODAD,=A(FCEOF)
- MVI MACRF,C'R'
- SVC OPEN OPEN SRF INPUT FILE
- FCLOOP EQU *
- LA R2,TESTF
- SR R1,R1
- SVC READ
- LH R1,PRECL
- LA R2,TESTC
- STH R1,PRECL COPY PHYSICAL RECORD LENGTH READ VS BLOCK
- SVC WRITE SEQUENTIALLY WRITE FIXED FILE RECORDS
- B FCLOOP
- FCEOF EQU *
- LA R2,TESTF
- SVC CLOSE
- LA R2,TESTC
- SVC CLOSE
- BR R12
- *
- * TESTV TEST VARIABLE SPANNED RECORDS WITH 2 BYTE LENGTH PREFIX
- *
- VNUL EQU *
- LA R2,=C'VNUL - VAR OPEN CLOSE OPEN GET CLOSE$'
- SVC WTO
- LA R2,TESTV
- USING IHADCB,R2
- MVI MACRF,C'P'
- SVC OPEN
- SVC CLOSE
- MVI MACRF,C'G'
- MVC EODAD,=A(VNULEOF)
- SVC OPEN
- SR R1,R1
- SVC GET
- B VSYN
- VNULEOF EQU *
- SVC CLOSE
- BR R12
- VSPV EQU *
- LA R2,=C'VSPV - SEQ PUT VAR$'
- SVC WTO
- LA R2,TESTV
- USING IHADCB,R2
- MVI MACRF,C'P'
- SVC OPEN
- LA R3,2
- LA R4,0
- VLOOP EQU *
- LA R4,5(R4)
- STH R4,VREC
- SR R1,R1
- SVC PUT SEQUENTIALLY WRITE 10 RCDS FROM 5 TO 50
- BCT R3,VLOOP
- SVC CLOSE
- BR R12
- VSGV EQU *
- LA R2,=C'VSGV - SEQ GET VAR$'
- SVC WTO
- LA R2,TESTV
- MVI MACRF,C'G'
- MVC EODAD,=A(VEOF)
- SVC OPEN
- LA R4,0
- VRLOOP EQU *
- SR R1,R1
- SVC GET SEQ. READ AND VERIFY LENGTHS
- LA R4,5(R4)
- CLM R4,3,VREC
- BAL R14,CHKV
- B VRLOOP
- VEOF EQU *
- SVC CLOSE
- CH R4,=H'10' FOR TEST ****************
- BAL R14,CHKV
- BR R12
- *
- * TESTT -TEST TEXT FILES
- *
- TNUL EQU *
- LA R2,=C'TNUL - TEXT OPEN CLOSE OPEN GET CLOSE$'
- SVC WTO
- LA R2,TESTT
- USING IHADCB,R2
- MVI MACRF,C'P'
- SVC OPEN
- SVC CLOSE
- MVI MACRF,C'G'
- MVC EODAD,=A(TNULEOF)
- SVC OPEN
- SR R1,R1
- SVC GET SEQ. READ
- B TSYN
- TNULEOF EQU *
- SVC CLOSE
- BR R12
- TSPT EQU *
- LA R2,=C'TSPT - SEQ PUT TXT$'
- SVC WTO
- LA R2,TESTT
- USING IHADCB,R2
- MVI MACRF,C'P'
- SVC OPEN
- MVC TREC,TL1
- SVC TRACE
- DC C'SPT '
- SR R1,R1
- SVC PUT
- MVC TREC,TL2
- SR R1,R1
- SVC PUT
- SVC CLOSE
- BR R12
- TSGT EQU *
- LA R2,=C'TSGT - SEQ GET TXT$'
- SVC WTO
- LA R2,TESTT
- MVI MACRF,C'G'
- MVC EODAD,=A(TEOF)
- SVC OPEN
- SVC TRACE
- DC C'SGT '
- SR R1,R1
- SVC GET SEQ. READ
- CLC TL1,TREC
- BNE TSYN
- SR R1,R1
- SVC GET
- CLC TL2,TREC
- BNE TSYN
- MVI TEOF+1,X'00' NOP TEOF FOR EXPECTED EOF
- SR R1,R1
- SVC GET
- B FSYN
- TEOF B FSYN CHANGED TO NOP IF OK
- SVC CLOSE
- BR R12
- CHKF EQU *
- BER R14
- FEOF EQU *
- FSYN EQU *
- SVC TRACE
- DC C'BUG'
- SVC EXIT
- FRWRSYN EQU *
- CLI SYNOK,TRUE
- BER R14
- B FSYN
- CHKV EQU *
- BER R14
- VSYN EQU *
- TSYN EQU *
- SVC TRACE
- DC C'BUG'
- SVC EXIT
- LTORG
- SYNOK DC AL1(FALSE)
- FALSE EQU 0
- TRUE EQU 1
- R0 EQU 0
- R1 EQU 1
- R2 EQU 2
- R3 EQU 3
- R4 EQU 4
- R5 EQU 5
- R6 EQU 6
- R7 EQU 7
- R8 EQU 8
- R9 EQU 9
- R10 EQU 10 BASE
- R11 EQU 11 BASE+4095
- R12 EQU 12 ROUTINE LINK
- R13 EQU 13
- R14 EQU 14
- R15 EQU 15
- WTO EQU 209 WRITE TO OPERATOR
- EXIT EQU 0 EXIT TO CP/M
- OPEN EQU 1 OPEN FILE
- CLOSE EQU 2 CLOSE FILE
- READ EQU 3 READ BLOCK
- WRITE EQU 4 WRITE BLOCK
- GET EQU 5 GET RECORD
- PUT EQU 6 PUT RECORD
- DELETE EQU 7 DELETE FILE
- SEARCH EQU 8 LOCATE FILE (R0=0 IF FOUND)
- RENAME EQU 23 RENAME FILE
- TRACE EQU 9 TRACE SVC
- ****************************************************************************
- *
- * IHADCB - I HAD A DCB DSECT FOR PC/370 RELEASE 2.0+ FILE DATA CONTROL BLOCK
- *
- ****************************************************************************
- IHADCB DSECT
- DCBDCB DS CL4 CONSTANT EBCDIC C'ADCB' DCB IDENTIFIER
- DCBDSN DS A ADDRESS OF UP TO 64 BYTE PATH/FILE SPEC FOLLOWED BY ZERO
- DCBFID DS H FILE HANDLE ASSIGNED BY MS-DOS AT OPEN (X'FFFF'DEFAULT)
- DCBFLG DS X DATA CONTROL BLOCK FLAGS (ONLY DFTRAN MAY BE SET BY USER)
- DFOPEN EQU X'80' FILE OPEN
- DFUBUF EQU X'40' USER DEFINED BLOCK AREA (NO DYNAMIC ALLOC/DEALLOC)
- DFOUT EQU X'20' OPEN FOR OUTPUT
- DFGEOF EQU X'10' END OF FILE PENDING ON SHORT BLOCK
- DFTRAN EQU X'08' TRANSLATE GET/PUT RECORDS FOR ASCII FILE
- DFADCB EQU X'01' ASSIST DCB - DO NOT TRANSLATE 370 ADDRESSES
- DSORG DS C DATA SET ORGANIZATION (R=RANDOM, S=SEQUENTIAL)
- MACRF DS C DATA SET ACCESS MODE (R=READ, W=WRITE, G=GET, P=PUT)
- RECFM DS C DATA SET RECORD FORMAT (F=FIXED, V=VAR, T=TEXT)
- EOR DS X END OF RECORD CODE (DEFAULT IS LINE FEED X'0A')
- EOF DS X END OF FILE CODE (DEFAULT IS CTL-Z X'1A')
- LRECL DS H RECORD LENGTH (2<LRECL<64K-16)
- BLKSZ DS H BLOCK LENGTH (2<BLKSZ<64K-16)
- EODAD DS A END OF DATA EXIT ADDRESS
- SYNAD DS A SYCHRONOUS ERROR EXIT ADDRESS
- RCD DS A RECORD AREA ADDRESS FOR GET/PUT
- BLK DS A BLOCK AREA ADDRESS (0 FOR DYNAMICALLY ALLOCATED)
- RBA DS A RELATIVE BYTE ADDRESS FOR RANDOM READ/WRITE
- REN DS A RENAME ASCIIZ FILE (ONLY USED BY RENAME SVC)
- IOCNT DS F BLOCK I/O COUNT SINCE OPEN
- PRECL DS H PHYSICAL BLOCK SIZE OF LAST READ/WRITE
- *
- * RESERVED AREA FOR USE BY PC/370 IOS SUPERVISOR WHILE FILE OPEN
- *
- DSNSG DS XL4 SEGMENT:OFFSET OF DCBDSN PATH/FILE NAME
- EODSG DS XL4 SEGMENT:OFFSET OF EODAD EXIT
- SYNSG DS XL4 SEGMENT:OFFSET OF SYNAD EXIT
- RCDSG DS XL4 SEGMENT:OFFSET OF RECORD AREA FOR GET/PUT
- RENSG DS XL4 SEGMENT:OFFSET OF RENAME FILE NAME
- BLKSG DS XL4 SEGMENT:OFFSET OF BLOCK AREA
- BLKPTR DS XL4 SEGMENT:OFFSET OF CURRENT RECORD IN BLOCK AREA
- BLKEOD DS XL2 OFFSET OF CURRENT END OF DATA IN BLOCK AREA
- BLKEND DS XL2 OFFSET OF END OF ALLOCATED BLOCK AREA
- WLRECL DS H REVERSED LRECL
- WBLKSZ DS H REVERSED BLKSZ
- LDCB EQU *-IHADCB
- *
- ******************************************************************************
- TESTIO CSECT
- DC C'FREC'
- FREC DC XL128'00'
- DC C'FALT'
- FALT DC XL128'FF'
- DC C'VREC'
- VREC DC XL55'00'
- TESTFTST DC C'TESTF.TST',X'00' RENAME ASCIIZ FOR TESTF.DAT
- FDSN DC C'TESTF.DAT',X'00'
- DC C'TESTF DCB'
- TESTF DS 0A
- DC C'ADCB' DCBDCB EDCDIC DCB IDENTIFIER
- DC A(FDSN) DCBDSN PATH/FILE NAME FOLLOWED BY ZERO
- DC X'FFFF' DCBFID FILE ID ASSIGNED BY MS-DOS AT OPEN
- DC X'00' DCBFLG FLAGS
- DC C'S' DSORG DATA SET ORGANIZATION
- DC C'P' MACRF ACCESS MODE
- DC C'F' RECFM RECORD FORMAT
- DC X'0A' EOR END OF RECORD CODE (TEST ONLY)
- DC X'1A' EOF END OF FILE CODE (TEXT ONLY)
- DC H'128' LRECL LOGICAL RECORD LENGTH
- DC H'128' BLKSZ BLOCK SIZE
- DC A(FEOF) EODAD END OF DATA EXIT ADDRESS
- DC A(FSYN) SYNAD ERROR EXIT ADDRESS
- DC A(FREC) RCD RECORD AREA FOR GET/PUT
- DC A(0) BLK BLOCK AREA FOR READ/WRITE (0 FOR DYNAMIC)
- DC A(0) RBA RELATIVE BYTE ADDRESS FOR RANDOM READ/WRITE
- DC A(0) REN RENAME FILE FOLLOWED BY ZERO
- DC F'0' IOCNT BLOCK I/O COUNT SINCE OPEN
- DC H'0' PRECL PHYSICAL BLOCK SIZE OF LAST READ/WRITE
- DC XL(TESTF+LDCB-*)'00' RESERVED WORK AREA (SEE IHADCB)
- CDSN DC C'TESTC.DAT',X'00'
- DC C'TESTC DCB'
- TESTC DS 0A
- DC C'ADCB' DCBDCB EDCDIC DCB IDENTIFIER
- DC A(CDSN) DCBDSN PATH/FILE NAME FOLLOWED BY ZERO
- DC X'FFFF' DCBFID FILE ID ASSIGNED BY MS-DOS AT OPEN
- DC X'00' DCBFLG FLAGS
- DC C'S' DSORG DATA SET ORGANIZATION
- DC C'W' MACRF ACCESS MODE
- DC C'F' RECFM RECORD FORMAT
- DC X'0A' EOR END OF RECORD CODE (TEST ONLY)
- DC X'1A' EOF END OF FILE CODE (TEXT ONLY)
- DC H'500' LRECL LOGICAL RECORD LENGTH
- DC H'500' BLKSZ BLOCK SIZE
- DC A(FCEOF) EODAD END OF DATA EXIT ADDRESS
- DC A(FSYN) SYNAD ERROR EXIT ADDRESS
- DC A(FREC) RCD RECORD AREA FOR GET/PUT
- DC A(0) BLK BLOCK AREA FOR READ/WRITE (0 FOR DYNAMIC)
- DC A(0) RBA RELATIVE BYTE ADDRESS FOR RANDOM READ/WRITE
- DC A(0) REN RENAME FILE FOLLOWED BY ZERO
- DC F'0' IOCNT BLOCK I/O COUNT SINCE OPEN
- DC H'0' PRECL PHYSICAL BLOCK SIZE OF LAST READ/WRITE
- DC XL(TESTC+LDCB-*)'00' RESERVED WORK AREA (SEE IHADCB)
- VDSN DC C'TESTV.DAT',X'00'
- DC C'TESTV DCB'
- TESTV DS 0A
- DC C'ADCB' DCBDCB EBCDIC DCB IDENTIFIER
- DC A(VDSN) DCBDSN PATH/FILE NAME FOLLOWED BY ZERO
- DC X'FFFF' DCBFID FILE ID ASSIGNED BY MS-DOS AT OPEN
- DC X'00' DCBFLG FLAGS
- DC C'S' DSORG DATA SET ORGANIZATION
- DC C'P' MACRF ACCESS MODE
- DC C'V' RECFM RECORD FORMAT
- DC X'0A' EOR END OF RECORD CODE (TEST ONLY)
- DC X'1A' EOF END OF FILE CODE (TEXT ONLY)
- DC H'55' LRECL LOGICAL RECORD LENGTH
- DC H'2048' BLKSZ BLOCK SIZE
- DC A(VEOF) EODAD END OF DATA EXIT ADDRESS
- DC A(VSYN) SYNAD ERROR EXIT ADDRESS
- DC A(VREC) RCD RECORD AREA FOR GET/PUT
- DC A(0) BLK BLOCK AREA FOR READ/WRITE (0 FOR DYNAMIC)
- DC A(0) RBA RELATIVE BYTE ADDRESS FOR RANDOM READ/WRITE
- DC A(0) REN RENAME FILE FOLLOWED BY ZERO
- DC F'0' IOCNT BLOCK I/O COUNT SINCE OPEN
- DC H'0' PRECL PHYSICAL BLOCK SIZE OF LAST READ/WRITE
- DC XL(TESTV+LDCB-*)'00' RESERVED WORK AREA (SEE IHADCB)
- TREC DC XL10'00'
- TL1 DC 0CL8' ',C'TEXT 1',X'0D0A'
- TL2 DC 0CL8' ',C'TEXT 2',X'0D0A'
- TDSN DC C'TESTT.DAT',X'00'
- DC C'TESTT DCB'
- TESTT DS 0A
- DC C'ADCB' DCBDCB EDCDIC DCB IDENTIFIER
- DC A(TDSN) DCBDSN PATH/FILE NAME FOLLOWED BY ZERO
- DC X'FFFF' DCBFID FILE ID ASSIGNED BY MS-DOS AT OPEN
- DC X'00' DCBFLG FLAGS
- DC C'S' DSORG DATA SET ORGANIZATION
- DC C'P' MACRF ACCESS MODE
- DC C'T' RECFM RECORD FORMAT
- DC X'0A' EOR END OF RECORD CODE (TEST ONLY)
- DC X'1A' EOF END OF FILE CODE (TEXT ONLY)
- DC H'10' LRECL LOGICAL RECORD LENGTH
- DC H'0' BLKSZ BLOCK SIZE
- DC A(TEOF) EODAD END OF DATA EXIT ADDRESS
- DC A(TSYN) SYNAD ERROR EXIT ADDRESS
- DC A(TREC) RCD RECORD AREA FOR GET/PUT
- DC A(0) BLK BLOCK AREA FOR READ/WRITE (0 FOR DYNAMIC)
- DC A(0) RBA RELATIVE BYTE ADDRESS FOR RANDOM READ/WRITE
- DC A(0) REN RENAME FILE FOLLOWED BY ZERO
- DC F'0' IOCNT BLOCK I/O COUNT SINCE OPEN
- DC H'0' PRECL PHYSICAL BLOCK SIZE OF LAST READ/WRITE
- DC XL(TESTT+LDCB-*)'00' RESERVED WORK AREA (SEE IHADCB)
- ASCBASF EQU X'118' ASCB FREE MEMORY QUEUE POINTER
- SAVEFQE DC XL8'00' SAVE FIRST FQE FOR VERIFY AT EOJ
- END TESTIO