./ ADD SSI=01011720,SOURCE=1,NAME=IERABA TITLE 'IERABA - OS/360 SORT/MERGE - 360-SM023 05/11/66' 00300013 SPACE 2 00600013 *MODULE NAME *** IERABA *** 00900013 SPACE 2 01200013 *STATUS:CHANGE LEVEL 000 01500013 SPACE 2 01800013 *MODULE FUNCTION: OSCILLATING/2314 BLOCK ASSIGNMENT 02100013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBA. IT IS USED 02400013 * FOR VARIABLE LENGTH RCDS. IN THE SORT PHASE OF AN OSCILLATING/2314 02700013 * SORT. IT INITIALIZES THE RUNNING PROGRAM AND SETS UP POINTERS TO 03000013 * THE OUTPUT BUFFER. 03300013 SPACE 2 03600013 *USED AS A DSECT IN - N/A 03900013 * 04200013 * 04500013 *LIST OF MACROS USED BY MODULE - 04800013 * 05100013 * SMPPI 05400013 * 05700013 * 06000013 *ENTRY POINTS: 06300013 SPACE 1 06600013 * CSECT NAME ONLY -IERABA ENTRY FROM IERRC9- 06900013 * LOAD EP=IERABE,DCB=SORTLIB 07200013 * LR RP,RA 07500013 * BALR RO,RP 07800013 SPACE 2 08100013 *INPUT: - PPI FIELDS REFERENCED - 08400013 SPACE 1 08700013 * PPILAB04 09000013 * PPILAB07 09300013 * PPIBLK 09600013 SPACE 1 09900013 * VALUES USED TO COMPUTE THE SIZE OF THE OUTPUT BLOCK. 10200013 SPACE 2 10500013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED - 10800013 SPACE 1 11100013 * NONE 11400013 SPACE 2 11700013 *EXTERNAL ROUTINES: 12000013 SPACE 1 12300013 * N/A 12600013 SPACE 2 12900013 *EXTERNAL PARAMETERS: 13200013 SPACE 1 13500013 * NONE 13800013 SPACE 2 14100013 *EXITS-NORMAL 14400013 SPACE 1 14700013 * IERRC9 - RETURN VIA RO 15000013 SPACE 2 15300013 *EXITS-ERROR: 15600013 SPACE 1 15900013 * NONE 16200013 SPACE 2 16500013 *TABLES/WORK AREAS: 16800013 SPACE 1 17100013 * NONE 17400013 SPACE 2 17700013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 18000013 SPACE 2 18300013 *NOTES: THIS MODULE WILL BE EXECUTED ONLY FOR A VARIABLE LENGTH SORT. 18600013 EJECT 18900013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 19200013 SPACE 1 19500013 RA EQU 0 CONTENTS IN - N/A 19800013 * USED - NOT USED 20100013 * CONTENT OUT - N/A 20400013 RB EQU 1 CONTENTS IN- N/A 20700013 * USE- NOT USED 21000013 * CONTENTS OUT- N/A 21300013 RC EQU 2 CONTENTS IN- N/A 21600013 * USE- NOT USED 21900013 * CONTENTS OUT- N/A 22200013 RD EQU 3 CONTENTS IN- N/A 22500013 * USE- NOT USED 22800013 * CONTENTS OUT- N/A 23100013 RE EQU 4 CONTENTS IN- N/A 23400013 * USE- NOT USED 23700013 * CONTENTS OUT- N/A 24000013 RF EQU 5 CONTENTS IN - N/A 24300013 * USED - GENERAL WORK REGISTER 24600013 * CONTENTS OUT - N/A 24900013 RG EQU 6 CONTENTS IN - N/A 25200013 * USED - NOT USED 25500013 * CONTENTS OUT - N/A 25800013 RH EQU 7 CONTENTS IN- N/A 26100013 * USE- NOT USED 26400013 * CONTENTS OUT- N/A 26700013 RI EQU 8 CONTENTS IN- N/A 27000013 * USE- NOT USED 27300013 * CONTENTS OUT- N/A 27600013 RJ EQU 9 CONTENTS IN- N/A 27900013 * USE- NOT USED 28200013 * CONTENTS OUT- N/A 28500013 RK EQU 10 CONTENTS IN - N/A 28800013 * USED - BASE REG FOR IERRBE DSECT 29100013 * CONTENTS OUT - N/A 29400013 RL EQU 11 CONTENTS IN - N/A 29700013 * USED - MODULE BASE REGISTER 30000013 * CONTENTS OUT - N/A 30300013 RM EQU 12 CONTENTS IN - EQUALS OR EXTRACT ADDR 30600013 * USED - NOT USED 30900013 * CONTENTS OUT - EQULS OR EXTRACT ADDR 31200013 RN EQU 13 CONTENTS IN - ADDRESS OF PPI 31500013 * USED - PPI REFERENCES 31800013 * CONTENTS OUT - ADDRESS OF PPI 32100013 RO EQU 14 CONTENTS IN - RETURN REG 32400013 * USED - NOT USED 32700013 * CONTENTS OUT - RETURN REG 33000013 RP EQU 15 CONTENTS IN - THIS MODULE ENTRY ADDR 33300013 * USED - ESTABLISH THIS MOD BASE REG 33600013 * CONTENTS OUT - N/A 33900013 SPACE 2 34200013 *START OF MODULE CODE PROPER: 34500013 SPACE 2 34800013 IERABA CSECT 35100013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 35400013 USING IERRCA,RN ADDR OF PPI 35700013 USING IERRBAD,RK ADDR OF RUNNING PROGRAM DUMMY MOD 36000013 IERMBA LR RL,RP LOAD MODULE BASE REG 36300013 L RK,PPIBLK+4 ADDR OF IERRBA FOR DSECT BASE 36600013 MVC WBLKCCNT,KEIGHT SET R.P. BLOCK CHAR CTR TO 8 36900013 L RF,PPILAB04 LOAD ADDR OF OUTPUT BUFFER #1 37200013 TM PPISW1+6,X'02' 37500013 BC 8,ABA1010 37800013 SPACE 1 38100013 *OVERLAY INSTRUCTIONS IN RUNNING PROGRAM SO THAT RECORD IS MOVED TO THE 38400013 * OUTPUT AREA BEFORE BLOCK POINTER IS INCREMENTED AND SO THAT INITIAL 38700013 * POINTER RATHER THAN BLOCK POINTER IS PASSED TO WRITE ROUTINE AS 39000013 * THE BUFFER ADDRESS 39300013 LA RF,16(0,RF) START OF BUF + EOS + BCC + CHAIN 39600013 MVI KEIGHT+3,X'10' SET CONSTANT TO 16 39900013 MVC RBTAPE(2),KNOP NOP, SO MVC BEFORE UPDATE BUF.PTR. 40200013 MVC RBINCR(4),KON INCR. FOR OUTPUT FILE 40500013 MVI WBLKCCNT+3,X'10' BLOCK COUNT= BCC + EOS + CHAIN. 40800013 MVC RBTAPE1(4),KON1 OBTAIN INITIAL 41100013 MVC RBOVLAY2(4),KON2 POINTER TO BUFFER 41400013 MVC RBLDLPTR(4),KON1 41700013 B ABA1020 42000013 SPACE 2 42300013 ABA1010 AH RF,PPILAB07+2 ADD ROUNDED LENGTH OF OUTPUT BLOCK 42600013 MVC RBDISK(2),KNOP NOP, FOR UPDATE BUF.PTR. BEFORE MVC 42900013 SPACE 1 43200013 ABA1020 ST RF,WLSTPTR OUTPUT BUFFER POINTER 43500013 ST RF,WLSTPTRD CURRENT OUTPUT BLK ENDG ADDR+1 43800013 BR RO RETURN TO LOAD ROUTINE 44100013 SPACE 2 44400013 *LIST OF CONSTANTS USED BY THE MODULE: 44700013 SPACE 1 45000013 KNOP DC X'4700' NOP 45300013 DROP RL 45600013 DROP RK 45900013 USING IERRBAD,RL 46200013 KON IC RJ,PPIDEPHO+1 INCR. FOR OUTPUT FILE 46500013 KON1 L RH,WLSTPTRD INITIAL BUFFER 46800013 KON2 L RC,WLSTPTRD POINTER 47100013 EJECT 47400013 *** IERRBA *** 47700013 SPACE 2 48000013 IERRBAD DSECT , DUMMY MOD OF RUNNING PROGRAM 48300013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 48600013 USING IERRCA,RN PPI COMMON MODULE BASE REGISTER 48900013 SPACE 1 49200013 * ENTRY TABLE 49500013 SPACE 1 49800013 IERDB1 B RBLSTRCD LAST RCD ENTRY FROM REPLACEMENT 50100013 B RBEOS EOS ENTRY FROM REPLACEMENT 50400013 B RBWRT WRITE ENTRY. 50700013 * NORMAL REPLACEMENT ENTRY-INCR BLOCK CHAR CTR,CHECK IF RCD WILL FIT 51000013 * IN OUTPUT BLOCK. IF NOT, WRITE THE BUFFER BEFORE MOVING THE RCD. 51300013 SPACE 1 51600013 RBLDCCNT L RG,WBLKCCNT OUTPUT BLOCK CHARACTER CTR INITIALLY 51900013 * PRESET TO 8 BY A.P. 52200013 B RBBRANCH 52500013 SPACE 1 52800013 WLSTPTR DC F'0' INITIALLY LOADED BY A.P. TO OUTPUT 53100013 * BLOCK ENDING ADDRESS + 1. 53400013 WLSTPTRD DC F'0' OUTPUT BLOCK ENDING ADDRESS + 1. 53700013 SPACE 1 54000013 RBBRANCH AH RG,0(RD) ADD LENGTH OF RECORD TO BE MOVED 54300013 CH RG,PPILAB07+2 GREATER THAN ROUNDED OUTPUT BLOCKING 54600013 BC 2,RBWRTBLK YES,BR TO WRITE THE BLOCK FIRST 54900013 RBSAVERD ST RD,WINNER SAVE ADDR OF RCD IN RSA TO BE BLOCKD 55200013 L RE,WLSTPTR ADDR IN OUTPUT BLOCK TO MOVE RCD- 55500013 RBTAPE SH RE,0(0,RD) DECR ADDR BY RCD LNGTH-FOR TAPE SORT 55800013 * RCDS FILL OUTPUT BLOCK STARTING 56100013 * FROM HIGH CORE TO LOW CORE. THIS 56400013 SPACE 1 56700013 * CALCULATE BEGINNING ADDR OF THIS BIN + STORE AS NEW AVAILABLE BIN 57000013 SPACE 1 57300013 S RD,KFOUR SUBTR 4 BYTES FOR TREE ADDR IN RSA 57600013 SH RD,PPILEXFF SUBTR LENGTH OF CONTROL FIELD 57900013 ST RD,WKEEPAVA SAVE STRTG ADDR OF BIN IN WORK AREA 58200013 SPACE 1 58500013 * LOAD PARAMETERS AND BRANCH TO MOVE MODULE TO MOVE RCD FROM RSA TO 58800013 * THE OUTPUT BLOCK. TEST IF LAST RCD SWITCH SET. 59100013 SPACE 1 59400013 L RF,WINNER LOAD ADDR OF RCD IN RSA 59700013 L RB,KFOUR A 4 DENOTES A BLOCK RTN TO MOVE MOD 60000013 L RP,PPIBDSVA+12 LOAD ADDR OF MOVE RTN 60300013 * 60600013 LR RI,RE ELLIOTT I PUT THIS IN. DLB 60900013 * 61200013 BALR RO,RP BR TO MOVE RTN(WILL SAVE ALL REGS + 61500013 * PASS = BINS VACATED IN RB,AND LINK 61800013 * ADDR OF LAST BIN OF RCD IN RF) 62100013 * 62400013 LR RE,RI ELLIOTT I PUT THIS IN. DLB 62700013 SR RJ,RJ 63000013 RBINCR IC RJ,PPIDEPHO+3 INCR. FOR OUTPUT FILE 63300013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 63600013 L RI,0(RJ,RH) LOAD COUNT FOR THIS UNIT 63900013 LA RI,1(RI) INCREMENT BY ONE 64200013 ST RI,0(RJ,RH) RESTORE 64500013 * 64800013 CLI WLASTRCD,X'00' LAST RCD SWITCH ON 65100013 BC 7,RBSEQSW YES,BR TO SET FINAL EOS SW FOR WRITE 65400013 L RI,WINNER DISK SORT ONLY - ADD RCD.LENGTH 65700013 RBDISK AH RE,0(0,RI) TO BLOCK PTR. -NOP AH FOR TAPE 66000013 ST RE,WLSTPTR SAVE UPDATED OUTPUT BLK ADDR PTR 66300013 SPACE 1 66600013 * UPDATE BIN COUNT AND PTR TO NEXT AVAILABLE AREA IN RSA.UPDATE CHAIN 66900013 * ADDRESS OF LAST BIN VACATED IN RSA IF BIN COUNT IS NOT ZERO 67200013 SPACE 1 67500013 L RI,PPIBDSVA+8 LOAD BIN COUNT 67800013 AR RI,RB INCR BY = OF BINS JUST VACATED 68100013 ST RI,PPIBDSVA+8 STORE UPDATED BIN COUNT FOR DEBLOCK 68400013 CR RI,RB WAS BIN COUNT ZERO BEFORE INCR(IF SO 68700013 * RI WILL NOW EQUAL RB) 69000013 BC 8,RBSTOKEP YES,BR TO UPDATE NEXT AVAILABLE BIN 69300013 * PTR ONLY,BECAUSE ALL BINS ARE 69600013 * LINKED TOGETHER ALREADY 69900013 MVC 0(4,RF),PPIBDSVA+4 STORE ADDR OF NEXT AVAIL BIN IN LINK 70200013 * ADDR OF LAST BIN VACATED 70500013 RBSTOKEP MVC PPIBDSVA+4(4),WKEEPAVA ADDR OF AVAIL BIN 70800013 ST RG,WBLKCCNT SAVE CHARACTER COUNTER 71100013 SPACE 1 71400013 * INTERFACE TO DEBLOCK MODULE 71700013 SPACE 1 72000013 RBOVLAY1 L RL,PPIDEB+4 ADDR OF DEBLOCK MOD. THIS INSTR WILL 72300013 * BE OVLAYED BY B RBLDLPTR ON NORMAL 72600013 * EOS, THEN RESTORED FOR NEXT SEQ. 72900013 B 8(RL) BR TO DEBLOCK MOD 73200013 SPACE 2 73500013 * FINAL SEQUENCE ROUTINE FOR LAST RECORD 73800013 SPACE 1 74100013 RBSEQSW ST RE,WLSTPTR SAVE STRTG ADDR OF LAST RCD IN OUT- 74400013 * PUT BLOCK. 74700013 SR RE,RE SET LAST SEQ SWITCH FOR WRITE MODULE 75000013 RBTAPE1 L RH,WLSTPTR 75300013 B RBDCRLST BR TO DECR OUTPUT BLOCK PTR 75600013 SPACE 2 75900013 * WRITE A BLOCK. THIS RCD CAN'T FIT INTO THIS BLOCK. 76200013 SPACE 1 76500013 RBWRTBLK SH RG,0(0,RD) SUBTRACT LENGTH OF RCD THAT CANT FIT 76800013 * FROM OUTPUT BLOCK COUNT 77100013 RBOVLAY2 L RC,WLSTPTR LOAD OUTPUT BLK PTR.FOR DISK,WLSTPTR 77400013 S RC,KEIGHT EQUALS ADDR OF OUTPUT BLK TO WRITE 77700013 STH RG,WHOLD SET ON HALF WORD BOUNDARY 78000013 MVC 0(2,RC),WHOLD BCC IN 1ST 2 BYTES OF OUTPUT BLK 78300013 LR RB,RG ALSO,IN RB FOR WRITE PARAM 78600013 L RL,PPIWRT+4 ADDR OF WRITE MODULE 78900013 B 8(RL) BR TO WRITE MODULE 79200013 SPACE 2 79500013 * WRITE MODULE REENTER VIA BRANCH TABLE. RC,FOR TAPE,HAS ADDR OF AN 79800013 * OUTPUT BLOCK ENDING ADDRESS+1. 80100013 SPACE 1 80400013 RBWRT ST RC,WLSTPTRD SAVE AS INITIAL OUTPUT BLK POINTER 80700013 ST RC,WLSTPTR STORE AS OUTPUT BLOCK WORK PTR 81000013 L RG,KEIGHT REINITIALIZE BCC TO 8 OR 16 81300013 AH RG,0(0,RD) ADD RCD LENGTH OF RCD TO BE MOVED 81600013 * TO OUTPUT BLOCK 81900013 B RBSAVERD 82200013 SPACE 2 82500013 * FROM REPLACEMENT. LAST RECORD 82800013 SPACE 1 83100013 RBLSTRCD OI WLASTRCD,X'01' TURN ON LAST RCD SWITCH 83400013 B RBLDCCNT 83700013 SPACE 2 84000013 * FROM REPLACEMENT. NORMAL EOS 84300013 SPACE 1 84600013 RBEOS MVC RBOVLAY1,KLDLPTR OVLAY EXIT TO DEBLOCK FOR NORMAL EOS 84900013 B RBLDCCNT BR TO MOVE LAST RCD OF THIS SEQUENCE 85200013 SPACE 2 85500013 * RETURN FROM RBOVLAY1 WHICH WAS OVERLAYED ON THIS NORMAL EOS. 85800013 SPACE 1 86100013 RBLDLPTR L RH,WLSTPTR 86400013 LA RE,4 SET SWITCH TO NORMAL EOS FOR WRITE 86700013 RBDCRLST MVC WLSTPTR,WLSTPTRD RESET OUTPUT BLOCK POINTER 87000013 MVC RBOVLAY1,KIERDD1 RESET RBOVLAY1 TO ORIGINAL INSTR 87300013 SPACE 1 87600013 * CONTINUATION POINT FOR LAST RCD. RH POINTS TO BYTE AFTER EOS ENTRY 87900013 SPACE 1 88200013 S RH,KEIGHT DECR OUTPUT BLK PTR BY 8 TO INSERT 88500013 * BLOCK CHAR CNT IN 1ST 2 BYTES 88800013 MVC WBLKCCNT,KEIGHT REINITIALIZE BLOCK CHAR CTR TO 8 89100013 STH RG,WHOLD SET ON HALF WORD BOUNDARY 89400013 MVI WLASTRCD,X'00' RESET LAST RECORD SWITCH TO ZERO 89700013 MVC 0(2,RH),WHOLD BCC IN 1ST 2 BYTES OF OUTPUT BLK 90000013 LR RB,RG LOAD BLOCK CHAR CNT FOR WRITE 90300013 LR RC,RH LOAD OUTPUT BLOCK PTR FOR WRITE MOD 90600013 SPACE 1 90900013 * INTERFACE TO WRITE MODULE FOR EOS 91200013 SPACE 1 91500013 L RL,PPIWRT+4 ADDR OF WRITE MODULE 91800013 B 4(RL) BR TO WRITE MODULE 92100013 SPACE 2 92400013 * LIST OF CONSTANTS USED BY THE MODULE 92700013 SPACE 1 93000013 KFOUR DC F'4' 93300013 KEIGHT DC F'8' CONSTANT =8 FOR OSCL., =16 FOR 2314 93600013 KIERDD1 L RL,PPIDEB+4 RESTORE RBOVLAY1 AFTER NORMAL EOS. 93900013 KLDLPTR B RBLDLPTR OVLAY RBOVLAY1 EVERY NORMAL EOS 94200013 SPACE 1 94500013 * LIST OF WORK AREAS USED BY THE MODULE 94800013 SPACE 1 95100013 WBLKCCNT DC F'0' OUTPUT BLOCK CHARACTER CTR INITIALLY 95400013 * PRESET TO 8 BY A.P.(2-BCC,2-SYSTEM 95700013 * CHECK,4-EOS) 96000013 * IF 2314, INITIALLY SET TO 16 TO 96300013 * INCLUDE CHAIN DISK ADDRESS TOO 96600013 WINNER DC F'0' ADDR OF RCD IN RSA TO BE BLOCKED 96900013 * POINTS TO 2 BYTE LENGTH FIELD 97200013 WKEEPAVA DC F'0' STARTG ADDR OF BIN 97500013 WHOLD DC H'0' HALF-WORD BOUNDARY WORK AREA 97800013 WLASTRCD DC X'00' LAST RCD SWITCH 98100013 EJECT 98400013 SMPPI 98700013 END 99000013 ./ ADD SSI=02011600,SOURCE=1,NAME=IERABB TITLE 'IERABB - OS/360 SORT/MERGE - 360-SM-023 04/09/65' 00300013 *MODULE NAME *** IERABB *** 00600013 SPACE 2 00900013 *STATUS:CHANGE LEVEL 0 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBB. IT IS A 02100013 * SORT PHASE MODULE USED FOR FIXED LENGTH RECORDS LESS THAN 256 BYTES 02400013 * LONG. IT INITIALIZES THE RUNNING PROGRAM AND SETS UP POINTERS TO 02700013 * THE OUTPUT BUFFER. 03000013 SPACE 2 03300013 *THIS MODULE IS USED AS A DSECT IN' 03600013 * 03900013 * N/A 04200013 * 04500013 *LIST OF MACROS USED BY THIS MODULE 04800013 SPACE 1 05100013 * SMPPI 05400013 SPACE 2 05700013 *ENTRY POINTS: 06000013 SPACE 1 06300013 * N/A 06600013 SPACE 2 06900013 *INPUT: - PPI FIELDS REFERENCED 07200013 SPACE 1 07500013 * PPISRTBL 07800013 * PPILAB07 08100013 * PPIRCDL2 08400013 * PPILAB04 08700013 * PPISW1 09000013 SPACE 2 09300013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED - 09600013 SPACE 1 09900013 * N/A 10200013 SPACE 1 10500013 * CONSTANTS AND CODE IN RUNNING PROGRAM ARE INITIALIZED 10800013 SPACE 2 11100013 *EXTERNAL ROUTINES: 11400013 SPACE 1 11700013 * N/A 12000013 *EXTERNAL PARAMETERS 12300013 SPACE 1 12600013 * PPIBLK-ADDRESS OF RUNNING PROGRAM USED TO ADDRESS DSECT 12900013 SPACE 2 13200013 *EXITS-NORMAL: 13500013 SPACE 1 13800013 * BR RO RETURN TO LOAD MODULE 14100013 SPACE 2 14400013 *EXITS-ERROR: 14700013 SPACE 1 15000013 * N/A 15300013 SPACE 2 15600013 *TABLES/WORK AREAS: 15900013 SPACE 1 16200013 * N/A 16500013 SPACE 2 16800013 *ATTRIBUTES: 17100013 SPACE 1 17400013 * THIS IS A CLASS A MODULE. 17700013 SPACE 2 18000013 *NOTES: 18300013 SPACE 1 18600013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS LESS THAN 256 BYTES. 18900013 EJECT 19200013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 19500013 SPACE 1 19800013 RA EQU 0 CONTENTS IN-N/A 20100013 * USE-N/A 20400013 * CONTENTS OUT-N/A 20700013 RB EQU 1 CONTENTS IN-N/A 21000013 * USE-N/A 21300013 * CONTENTS OUT-N/A 21600013 RC EQU 2 CONTENTS IN-N/A 21900013 * USE-N/A 22200013 * CONTENTS OUT-N/A 22500013 RD EQU 3 CONTENTS IN-N/A 22800013 * USE-WORK REG 23100013 * CONTENTS OUT-N/A 23400013 RE EQU 4 CONTENTS IN-N/A 23700013 * USE-N/A 24000013 * CONTENTS OUT-N/A 24300013 RF EQU 5 CONTENTS IN-N/A 24600013 * USE-WORK REG 24900013 * CONTENTS OUT-N/A 25200013 RG EQU 6 CONTENTS IN-N/A 25500013 * USE-WORK REG 25800013 * CONTENTS OUT-N/A 26100013 RH EQU 7 CONTENTS IN-N/A 26400013 * USE-N/A 26700013 * CONTENTS OUT-N/A 27000013 RI EQU 8 CONTENTS IN-N/A 27300013 * USE-DSECT BASE REG 27600013 * CONTENTS OUT-N/A 27900013 RJ EQU 9 CONTENTS IN-N/A 28200013 * USE-N/A 28500013 * CONTENTS OUT-N/A 28800013 RK EQU 10 CONTENTS IN-N/A 29100013 * USE-N/A 29400013 * CONTENTS OUT-N/A 29700013 RL EQU 11 CONTENTS IN-N/A 30000013 * USE-MODULE BASE REG 30300013 * CONTENTS OUT-N/A 30600013 RM EQU 12 CONTENTS IN-N/A 30900013 * USE-N/A 31200013 * CONTENTS OUT-N/A 31500013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 31800013 * USE- PPI REFERENCE,REGISTER SAVE 32100013 * AREA 32400013 * CONTENTS OUT- ADDRESS OF PPI 32700013 RO EQU 14 CONTENTS IN-LOAD MODULE ADDRS 33000013 * USE-RETURN REG 33300013 * CONTENTS OUT-LOAD MODULE ADDRS 33600013 RP EQU 15 CONTENTS IN-MODULE ADDRS 33900013 * USE-SET MODULE BASE REG 34200013 * CONTENTS OUT-N/A 34500013 SPACE 2 34800013 *START OF MODULE CODE PROPER: 35100013 SPACE 2 35400013 IERABB CSECT 35700013 USING *,RL 36000013 USING DIERRBB,RI 36300013 USING IERRCA,RN 36600013 IERMBA LR RL,RP 36900013 L RI,PPIBLK+4 MAKE RUNNING PROGRAM ADDRESSABLE 37200013 SPACE 3 37500013 LH RG,PPISRTBL 37800013 STH RG,KBLKCNT SET BLK CNT = SORT BLOCKING 38100013 L RD,PPILAB07 SET RD = BUFFER SIZE 38400013 N RD,KMASK 38700013 ST RD,KBUFSIZ STORE BUFSIZ IN RUNNING PROGRAM 39000013 LH RG,PPIRCDL2 39300013 BCTR RG,0 DECREMENT RCD LENGTH BY 1 39600013 STC RG,RBB1030+1 STORE RCD LENGTH - 1 IN MOVE INSTR 39900013 STC RG,KABBMOD2+1 STORE RCD LENGTH - 1 IN MOVE INSTR 40200013 L RF,PPILAB04 SET RF=ADDRS OF OUTPUT BUFFER 40500013 N RF,KMASK DELETE HIGH ORDER BYTE. 40800013 TM PPISW1+1,X'40' TEST FOR TAPE. 41100013 BC 1,ABB1010 BRANCH IF YES. 41400013 SPACE 1 41700013 LA RD,4 DISK - ADJUST FOR EOS INDICATION 42000013 SPACE 1 42300013 *OVERLAY INSTRUCTIONS IN RUNNING PROGRAM SO THAT RECORD IS MOVED TO THE 42600013 *OUTPUT BUFFER BEFORE BLOCK POINTER IS INCREMENTED AND SO THAT INITIAL 42900013 *POINTER RATHER THAN BLOCK POINTER IS PASSED TO WRITE ROUTINE AS THE 43200013 *BUFFER ADDRESS. 43500013 SPACE 1 43800013 MVC RBB1020(14),KABBMOD2 44100013 MVC RBB1055(4),KABBMOD1 44400013 MVC RBB1105(4),KABBMOD1 44700013 ABB1010 AR RF,RD CALCULATE BLK PTR 45000013 ST RF,KBLKPTR 45300013 ST RF,KIBLKPTR SET INITIAL PTR 45600013 BR RO RETURN TO LOAD MODULE 45900013 SPACE 2 46200013 DS 0F 46500013 *LIST OF CONSTANTS USED BY MODULE: 46800013 KMASK DC X'00FFFFFF' 47100013 DROP RL 47400013 DROP RI 47700013 USING DIERRBB,RL 48000013 KABBMOD1 L RC,KIBLKPTR LOAD INITIAL BLK PTR 48300013 KABBMOD2 MVC 0(1,RC),0(RD) MOVE RCD FROM RSA TO OUTPUT BUFFER 48600013 AH RC,PPIRCDL2 INCREMENT BLK PTR BY RCD LENGTH 48900013 ST RC,KBLKPTR 49200013 EJECT 49500013 *** IERRBB *** 49800013 *DUMMY RUNNING PROGRAM 50100013 SPACE 2 50400013 DIERRBB DSECT 50700013 *SORT NETWORK PASSES ADDRS OF RCD TO BE BLOCKED IN RD 51000013 IERDB1 B RBB1110 LAST RECORD EOF ENTRY 51300013 B RBB1080 EOS ENTRY 51600013 B RBB1060 ENTRY FROM WRITE - NORMAL 51900013 B RBB1010 NORMAL ENTRY FROM SORT NETWORK 52200013 B * DUMMY ENTRY POINT-NOT USED 52500013 KBLKPTR DS 1F BLOCK POINTER 52800013 KIBLKPTR DS 1F INITIAL BLOCK POINTER 53100013 * RESET BY WRITE RTN ON EOS 53400013 SPACE 2 53700013 RBB1010 SR RE,RE ENTRY FROM SORT NETWORK - NORMAL 54000013 * RD CONTAINS ADDRS OF WINNER RCD 54300013 CH RE,KBLKCNT IS BLOCK COUNT = 0 54600013 BC 8,RBB1050 YES, BUFFER IS FULL - TAKE BRANCH 54900013 SPACE 1 55200013 L RC,KBLKPTR NO, DECREMENT BLK PTR BY RCD LENGTH 55500013 SPACE 1 55800013 *THE FOLLOWING 3 INSTRUCTIONS ARE OVERLAID FOR DISK SO THAT THE RECORD 56100013 *IS MOVED TO THE OUTPUT BUFFER AND THEN THE BLOCK POINTER IS 56400013 *INCREMENTED 56700013 SPACE 1 57000013 RBB1020 SH RC,PPIRCDL2 57300013 ST RC,KBLKPTR 57600013 RBB1030 MVC 0(1,RC),0(RD) MOVE RCD FROM RSA TO OUTPUT BUFFER 57900013 LH RG,KBLKCNT NO - DECREMENT BLOCK COUNT BY 1 58200013 BCTR RG,0 58500013 STH RG,KBLKCNT 58800013 SPACE 1 59100013 *THIS MODULE EXIT IS OVERLAID WHEN AN EOS OR EOF IS INDICATED SO THAT 59400013 *IT BRANCHES TO EITHER THE EOS OR EOF PPORTION OF THIS MODULE, I. E. 59700013 *RBB1090 OR RBB1120 60000013 SPACE 1 60300013 RBB1040 L RL,PPIDEB+4 EXIT TO DEBLOCK. RD CONTAINS ADDRS 60600013 B 8(RL) OF WINNER RCD 60900013 SPACE 2 61200013 *BUFFER IS FULL. PASS BUFFER ADDRS TO WRITE ROUTINE. 61500013 SPACE 1 61800013 RBB1050 L RB,KBUFSIZ SET RB=NO. BYTES IN BUFFER 62100013 RBB1055 L RC,KBLKPTR LOAD PARAMREG WITH BUFFER ADDRS 62400013 * FOR DISK, THE INITIAL BLK PTR IS 62700013 * LOADED 63000013 SH RC,K4 DECREMENT BY 4 FOR EOS INDICATION 63300013 ST RD,WSAVRCD SAVE ADDRS OF LAST WINNER RCD 63600013 RBL34020 L RL,PPIWRT+4 EXIT TO EOJ 63900013 B 8(RL) 64200013 SPACE 2 64500013 *RETURN FROM WRITE. RC CONTAINS ADDRS OF EMPTY BUFFER 64800013 SPACE 1 65100013 RBB1060 MVC KBLKCNT(2),PPISRTBL RESET BLK CNT TO SORT BLOCKING 65400013 ST RC,KIBLKPTR SAVE INITIAL POINTER 65700013 L RD,WSAVRCD RESTORE ADDRS OF WINNER 66000013 B RBB1020 BLOCK NEXT RECORD 66300013 SPACE 2 66600013 *END OF SEQUENCE. RECORD STILL TO BE PUT IN THIS SEQUENCE 66900013 SPACE 1 67200013 RBB1080 MVC RBB1040(4),KRBBMOD1 MODIFY MODULE EXIT 67500013 B RBB1010 BLOCK LAST RCD OF THIS SEQUENCE 67800013 SPACE 2 68100013 RBB1090 MVC RBB1040(4),KRBBMOD2 RESET MODULE EXIT TO LINK TO DEBLK 68400013 LA RE,4 68700013 RBB1100 L RB,KBUFSIZ CALCULATE NO. BYTES TO BE WRITTEN 69000013 LH RG,KBLKCNT 69300013 MH RG,PPIRCDL2 BUFSIZ-(BLKCNT * RCDLENGTH) 69600013 SR RB,RG 69900013 SPACE 1 70200013 RBB1105 L RC,KBLKPTR 70500013 * FOR DISK, THE INITIAL BLK PTR IS 70800013 * LOADED 71100013 SH RC,K4 SET RC = BUFFER ADDRS 71400013 L RF,KIBLKPTR 71700013 ST RF,KBLKPTR 72000013 MVC KBLKCNT(2),PPISRTBL RESET BLK CNT TO SORT BLOCKING 72300013 L RL,PPIWRT+4 EXIT TO WRITE ON EOS 72600013 B 4(RL) 72900013 SPACE 2 73200013 *LAST RECORD IS TO BE BLOCKED 73500013 SPACE 1 73800013 RBB1110 MVC RBB1040(4),KRBBMOD3 OVERLAY MODULE EXIT TO BRANCH TO 74100013 * RBB1120 74400013 B RBB1010 BLOCK LAST RCD 74700013 SPACE 2 75000013 *LAST RECORD HAS BEEN BLOCKED 75300013 SPACE 1 75600013 RBB1120 SR RE,RE SET INDICATOR FOR FINAL EOS 75900013 B RBB1100 76200013 SPACE 2 76500013 DS 0F 76800013 *CONSTANTS 77100013 SPACE 1 77400013 KBUFSIZ DS 1F BUFFER SIZE 77700013 KBLKCNT DS 1H BLOCK COUNT 78000013 K4 DC X'0004' 78300013 SPACE 2 78600013 *INSTRUCTION CONSTANTS 78900013 SPACE 1 79200013 KRBBMOD1 B RBB1090 RETURN TO EOS ROUTINE 79500013 KRBBMOD2 L RL,PPIDEB+4 EXIT TO DEBLOCK 79800013 KRBBMOD3 B RBB1120 RETURN TO LAST RCD RTN 80100013 SPACE 2 80400013 *WORK AREAS 80700013 SPACE 1 81000013 WSAVRCD DS 1F SAVES WINNER ADDRS ON EXIT TO WRITE 81300013 SPACE 2 81600013 EJECT 81900013 SMPPI 82200013 END 82500013 ./ ADD SSI=02011600,SOURCE=1,NAME=IERABC TITLE 'IERABC - OS/360 SORT/MERGE - 360-SM-023 04/09/65' 00300013 *MODULE NAME:*** IERABC *** 00600013 SPACE 2 00900013 *STATUS: CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBC. IT IS A 02100013 * SORT PHASE MODULE USED FOR FIXED LENGTH RECORDS GREATER THAN 256 02400013 * BYTES LONG. IT INITIALIZES THE RUNNING PROGRAM AND SETS UP 02700013 * POINTERS TO THE OUTPUT BUFFER. 03000013 SPACE 2 03300013 *THIS MODULE IS USED AS A DSECT IN' 03600013 * 03900013 * N/A 04200013 * 04500013 * 04800013 *MACROS USED' 05100013 SPACE 1 05400013 * SMPPI 05700013 SPACE 2 06000013 *ENTRY POINTS: 06300013 SPACE 1 06600013 * ENTRY IERABC ENTRY FROM:IERRC9 06900013 * CALLING SEQUENCE- L RP,ASSG 07200013 * BALR RO,RP 07500013 SPACE 2 07800013 *INPUT: PPI FIELDS REFERENCED- 08100013 SPACE 1 08400013 * PPISRTBL 08700013 * PPILAB07 09000013 * PPILAB04 09300013 * PPISW1 09600013 SPACE 2 09900013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- N/A 10200013 SPACE 1 10500013 * CONSTANTS AND CODE IN RUNNING PROGRAM ARE INITIALIZED 10800013 SPACE 2 11100013 *EXTERNAL ROUTINES: 11400013 SPACE 1 11700013 * N/A 12000013 SPACE 2 12300013 *EXTERNAL PARAMETERS: 12600013 SPACE 1 12900013 * PPIBLK - ADDRESS OF RUNNING PROGRAM USED TO ADDRESS DSECT 13200013 SPACE 2 13500013 *EXITS: NORMAL 13800013 SPACE 1 14100013 * BR RO RETURN TO LOAD MODULE-IERRC9 14400013 SPACE 2 14700013 *EXITS: ERROR 15000013 SPACE 1 15300013 * N/A 15600013 * 15900013 * 16200013 * 16500013 SPACE 2 16800013 *TABLES/WORK AREAS: 17100013 SPACE 1 17400013 * N/A 17700013 SPACE 2 18000013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 18300013 SPACE 2 18600013 *NOTES: 18900013 SPACE 1 19200013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS GREATER THAN 256 BYTES 19500013 EJECT 19800013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 20100013 SPACE 1 20400013 RA EQU 0 CONTENTS IN-N/A 20700013 * USE-N/A 21000013 * CONTENTS OUT-N/A 21300013 RB EQU 1 CONTENTS IN/N/A 21600013 * USE-N/A 21900013 * CONTENTS OUT-N/A 22200013 RC EQU 2 CONTENTS IN-N/A 22500013 * USE-N/A 22800013 * CONTENTS OUT-N/A 23100013 RD EQU 3 CONTENTS IN-N/A 23400013 * USE-WORK REGISTER 23700013 * CONTENTS OUT-N/A 24000013 RE EQU 4 CONTENTS IN-N/A 24300013 * USE-N/A 24600013 * CONTENTS OUT-N/A 24900013 RF EQU 5 CONTENTS IN-N/A 25200013 * USE-WORK REGISTER 25500013 * CONTENTS OUT-N/A 25800013 RG EQU 6 CONTENTS IN-N/A 26100013 * USE-N/A 26400013 * CONTENTS OUT-N/A 26700013 RH EQU 7 CONTENTS IN-N/A 27000013 * USE-N/A 27300013 * CONTENTS OUT-N/A 27600013 RI EQU 8 CONTENTS IN-N/A 27900013 * USE-DSECT BASE REGISTER 28200013 * CONTENTS OUT-N/A 28500013 RJ EQU 9 CONTENTS IN-N/A 28800013 * USE-N/A 29100013 * CONTENTS OUT-N/A 29400013 RK EQU 10 CONTENTS IN-N/A 29700013 * USE-N/A 30000013 * CONTENTS OUT-N/A 30300013 RL EQU 11 CONTENTS IN-N/A 30600013 * USE-MODULE BASE REGISTER 30900013 * CONTENTS OUT-N/A 31200013 RM EQU 12 CONTENTS IN-N/A 31500013 * USE-N/A 31800013 * CONTENTS OUT-N/A 32100013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 32400013 * USE- PPI REFERENCE,REGISTER SAVE 32700013 * AREA 33000013 * CONTENTS OUT- ADDRESS OF PPI 33300013 RO EQU 14 CONTENTS IN-LAOD MODULE ADDRESS 33600013 * USE-N/A 33900013 * CONTENTS OUT-LOAD MODULE ADDRESS 34200013 RP EQU 15 CONTENTS IN-MODULE ADDRESS 34500013 * USE-SET MODULE BASE REGISTER 34800013 * CONTENTS OUT-N/A 35100013 SPACE 2 35400013 *START OF MODULE CODE PROPER: 35700013 SPACE 2 36000013 IERABC CSECT 36300013 USING *,RL 36600013 USING DIERRBC,RI 36900013 USING IERRCA,RN 37200013 IERMBA LR RL,RP 37500013 L RI,PPIBLK+4 MAKE RUNNING PROGRAM ADDRESSABLE 37800013 SPACE 3 38100013 LH RD,PPISRTBL 38400013 STH RD,KBLKCNT 38700013 L RD,PPILAB07 SET RD = OUTPUT BUFFER SIZE 39000013 N RD,KMASK 39300013 ST RD,KBUFSIZ STORE BUFF SIZE IN RUN PROG. 39600013 L RF,PPILAB04 39900013 N RF,KMASK DELETE HIGH ORDER BYTE. 40200013 TM PPISW1+1,X'40' TEST FOR TAPE. 40500013 BC 1,ABC1010 BRANCH IF YES. 40800013 SPACE 1 41100013 LA RD,4 DISK - ADJUST FOR EOS INDICATION 41400013 SPACE 1 41700013 *OVERLAY INSTRUCTIONS IN RUNNING PROGRAM SO THAT WINNER WILL BE 42000013 *MOVED TO OUTPUT BUFFER BEFORE BLOCK POINTER IS INCREMENTED AND 42300013 *INITIAL POINTER WILL BE PASSED TO WRITE ROUTINE AS BUFFER ADDRESS. 42600013 SPACE 1 42900013 MVC RBC1020(18),KABCMOD2 43200013 MVC RBC1045(4),KABCMOD1 43500013 MVC RBC1078(4),KABCMOD1 43800013 ABC1010 AR RF,RD SET BLK PTR AND INITIAL BLK PTR 44100013 ST RF,KBLKPTR 44400013 ST RF,KIBLKPTR 44700013 BR RO RETURN TO LOAD MODULE 45000013 SPACE 2 45300013 DS 0F 45600013 *LIST OF CONSTANTS USED BY THE MODULE: 45900013 SPACE 1 46200013 KMASK DC X'00FFFFFF' 46500013 DROP RL 46800013 DROP RI 47100013 USING DIERRBC,RL 47400013 KABCMOD1 L RC,KIBLKPTR LOAD INITIAL POINTER 47700013 KABCMOD2 LR RE,RD 48000013 LR RF,RC 48300013 L RP,PPIBDSVA+4 48600013 BALR RO,RP LINK TO MOVE LIST 48900013 AH RC,PPIRCDL2 INCREMENT BLK PTR BY RCD LENGTH 49200013 ST RC,KBLKPTR 49500013 EJECT 49800013 *** IERRBC *** 50100013 SPACE 1 50400013 *DUMMY RUNNING PROGRAM 50700013 SPACE 2 51000013 DIERRBC DSECT 51300013 *SORT NETWORK PASSES ADDRS OF RCD TO BE BLOCKED IN RD 51600013 IERDB1 B RBC1080 LAST RECORD EOF ENTRY 51900013 B RBC1060 EOS ENTRY 52200013 B RBC1050 ENTRY FROM WRITE - NORMAL 52500013 B RBC1010 NORMAL ENTRY FROM SORT NETWORK 52800013 B * DUMMY ENTRY-NOT USED 53100013 KBLKPTR DS 1F BLOCK POINTER 53400013 KIBLKPTR DS 1F INITIAL BLOCK POINTER 53700013 * RESET BY WRITE RTN ON EOS 54000013 RBC1010 SR RE,RE ENTRY FROM SORT NETWORK - NORMAL 54300013 CH RE,KBLKCNT IS BLOCK COUNT = 0 54600013 BC 8,RBC1040 YES, BUFFER IS FULL - TAKE BRANCH 54900013 SPACE 1 55200013 L RC,KBLKPTR NO - DECREMENT BLK PTR BY RCD LENGTH 55500013 SPACE 1 55800013 *FOR DISK, THE FOLLOWING 6 INSTRUCTIONS ARE OVERLAID SO THAT THE 56100013 *WINNER RECORD IS MOVED TO THE OUTPUT BUFFER AND THEN THE BLOCK 56400013 *POINTER IS INCREMENTED 56700013 SPACE 1 57000013 RBC1020 SH RC,PPIRCDL2 57300013 ST RC,KBLKPTR 57600013 SPACE 2 57900013 *SET UP LINKAGE TO MOVE LIST 58200013 SPACE 1 58500013 LR RE,RD SET RE'ADDRS OF RCD TO BE MOVED 58800013 LR RF,RC SET RF = BUFFER AREA ADDRS 59100013 L RP,PPIBDSVA+4 LINK TO MOVE RTN, MOVE RCD FROM RSA 59400013 BALR RO,RP TO OUTPUT BUFFER 59700013 SPACE 2 60000013 LH RG,KBLKCNT NO - DECREMENT BLOCK COUNT BY 1 60300013 BCTR RG,0 60600013 STH RG,KBLKCNT 60900013 SPACE 1 61200013 *THIS MODULE EXIT IS OVERLAID WHEN AN EOS OR EOF IS INDICATED SO THAT 61500013 *IT BRANCHES TO EITHER THE EOS OR EOF PORTION OF THIS MODULE, I. E. 61800013 *RBC1070 OR RBC1090 62100013 SPACE 1 62400013 RBC1030 L RL,PPIDEB+4 EXIT TO DEBLOCK, RD CONTAINS ADDR 62700013 B 8(RL) OF FREE AREA IN RSA 63000013 SPACE 2 63300013 *BUFFER IS FULL, PASS BUFF ADDRS TO WRITE ROUTINE TO BE WRITTEN 63600013 SPACE 1 63900013 RBC1040 L RB,KBUFSIZ SET RB=NO. BYTES TO BE WRITTEN 64200013 RBC1045 L RC,KBLKPTR SET RC = BUFFER ADDRS 64500013 * FOR DISK, INITIAL PTR IS LOADED 64800013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 65100013 ST RD,WSAVRCD SAVE ADDRS OF LAST WINNER RCD 65400013 L RL,PPIWRT+4 EXIT TO WRITE 65700013 B 8(RL) 66000013 SPACE 2 66300013 *WRITE RETURNS ADDRS OF EMPTY BUFFER TO BLOCK 66600013 SPACE 1 66900013 RBC1050 MVC KBLKCNT(2),PPISRTBL RESET BLK CTR TO SORT BLOCKING 67200013 ST RC,KIBLKPTR SAVE INITIAL BLK PTR 67500013 L RD,WSAVRCD RESTORE ADDRS OF LAST WINNER 67800013 B RBC1020 68100013 SPACE 2 68400013 *END OF SEQUENCE, RECORD STILL TO BE PUT IN THIS SEQUENCE 68700013 SPACE 1 69000013 RBC1060 MVC RBC1030(4),KRBCMOD1 MODIFY MODULE EXIT 69300013 B RBC1010 PROCESS LAST RCD OF THIS SEQUENCE 69600013 SPACE 2 69900013 RBC1070 MVC RBC1030(4),KRBCMOD2 RESET MODULE EXIT TO LINK TO DEBLK 70200013 SPACE 1 70500013 SPACE 1 70800013 LA RE,4 SET INDICATION FOR NOT FINAL EOS 71100013 RBC1075 L RB,KBUFSIZ CALCULATE NO. OF BYTES TO BE 71400013 LH RG,KBLKCNT WRITTEN 71700013 MH RG,PPIRCDL2 72000013 SR RB,RG 72300013 *RB = BUFFER SIZE WHEN FULL - (REMAINING BLK CNT * RCD LENGTH) 72600013 RBC1078 L RC,KBLKPTR SET RC = BUFFER ADDRS 72900013 * FOR DISK, INITIAL PTR IS LOADED 73200013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 73500013 L RF,KIBLKPTR RESET BLOCK PTR 73800013 ST RF,KBLKPTR 74100013 MVC KBLKCNT(2),PPISRTBL RESET BLK CNT TO SORT BLOCKING 74400013 L RL,PPIWRT+4 EXIT TO WRITE ON EOS 74700013 B 4(RL) 75000013 SPACE 2 75300013 *LAST RECORD IS TO BE BLOCKED, EOF 75600013 SPACE 1 75900013 RBC1080 MVC RBC1030(4),KRBCMOD3 OVERLAY MODULE EXIT TO RETURN TO 76200013 * EOF, RBC1090 76500013 B RBC1010 PROCESS LAST RCD 76800013 SPACE 2 77100013 *LAST RECORD HAS BEEN BLOCKED, WRITE FINAL SEQUENCE 77400013 SPACE 1 77700013 RBC1090 SR RE,RE SET INDICATOR FOR FINAL EOS 78000013 B RBC1075 78300013 SPACE 4 78600013 SPACE 2 78900013 *CONSTANTS 79200013 SPACE 1 79500013 KBUFSIZ DS 1F BUFFER SIZE 79800013 KBLKCNT DS 1H BLOCK COUNT 80100013 K4 DC X'0004' 80400013 SPACE 2 80700013 *INSTRUCTION CONSTANTS 81000013 SPACE 1 81300013 KRBCMOD1 B RBC1070 RETURN TO EOS ROUTINE 81600013 KRBCMOD2 L RL,PPIDEB+4 EXIT TO DEBLOCK 81900013 KRBCMOD3 B RBC1090 82200013 SPACE 2 82500013 *WORK AREAS 82800013 SPACE 1 83100013 WSAVRCD DS 1F SAVES WINNER ADDRS ON EXIT TO WRITE 83400013 SPACE 2 83700013 EJECT 84000013 SMPPI 84300013 END 84600013 ./ ADD SSI=02011600,SOURCE=1,NAME=IERABE TITLE ' IERABE - OS/360 SORT/MERGE - 360S-SM023 04/22/66' 00200013 SPACE 2 00400013 *MODULE NAME *** IERABE *** 00600013 SPACE 2 00800013 *STATUS:CHANGE LEVEL 000 01000013 SPACE 2 01200013 *MODULE FUNCTION/OPERATION: PHASE 1 ASSIGNMENT MODULE. ANY V.L. SORT. 01400013 * THE FUNCTION OF THIS MODULE IS TO OVERLAY IERRBE IN APPROPRIATE 01600013 * PLACES DEPENDING UPON THE TYPE OF SORT.(I.E. TAPE, DISK, DRUM ETC.) 01800013 * IT ALSO INITIALIZES POINTERS IN IERRBE. 02000013 SPACE 2 02200013 *THIS MODULE IS USED AS A DSECT IN' 02400013 * 02600013 * N/A 02800013 * 03000013 * 03200013 *MACROS USED 03400013 * 03600013 * SMPPI 03800013 * 04000013 * 04200013 *ENTRY POINTS' 04400013 * 04600013 * ENTRY IERABE ENTRY FROM IERRC9 04800013 * CALLING SEQUENCE- 05000013 * LOAD EP#IERABE,DCB#SORTLIB 05200013 * LR RP,RA 05400013 * BALR RO,RP 05600013 * 05800013 SPACE 2 06000013 *INPUT: - PPI FIELDS REFERENCED - 06200013 SPACE 1 06400013 * PPILAB04 06600013 * PPILAB07 06800013 * PPIBLK 07000013 SPACE 1 07200013 * VALUES USED TO COMPUTE THE SIZE OF THE OUTPUT BLOCK. 07400013 SPACE 2 07600013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED - 07800013 SPACE 1 08000013 * NONE 08200013 SPACE 2 08400013 *EXTERNAL ROUTINES: 08600013 SPACE 1 08800013 * IERRBE BLOCK RUNNING PROGRAM 09000013 SPACE 2 09200013 *EXTERNAL PARAMETERS: 09400013 SPACE 1 09600013 * NONE 09800013 SPACE 2 10000013 *EXITS-NORMAL 10200013 SPACE 1 10400013 * IERRC9 - RETURN VIA RO 10600013 SPACE 2 10800013 *EXITS-ERROR: 11000013 SPACE 1 11200013 * NONE 11400013 SPACE 2 11600013 *TABLES/WORK AREAS: 11800013 SPACE 1 12000013 * NONE 12200013 SPACE 2 12400013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 12600013 SPACE 2 12800013 *NOTES: THIS MODULE WILL BE EXECUTED ONLY FOR A VARIABLE LENGTH SORT. 13000013 EJECT 13200013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 13400013 SPACE 1 13600013 RA EQU 0 CONTENTS IN - N/A 13800013 * USED - NOT USED 14000013 * CONTENT OUT - N/A 14200013 RB EQU 1 CONTENTS IN- N/A 14400013 * USE- NOT USED 14600013 * CONTENTS OUT- N/A 14800013 RC EQU 2 CONTENTS IN- N/A 15000013 * USE- NOT USED 15200013 * CONTENTS OUT- N/A 15400013 RD EQU 3 CONTENTS IN- N/A 15600013 * USE- NOT USED 15800013 * CONTENTS OUT- N/A 16000013 RE EQU 4 CONTENTS IN- N/A 16200013 * USE- NOT USED 16400013 * CONTENTS OUT- N/A 16600013 RF EQU 5 CONTENTS IN - N/A 16800013 * USED - GENERAL WORK REGISTER 17000013 * CONTENTS OUT - N/A 17200013 RG EQU 6 CONTENTS IN - N/A 17400013 * USED - NOT USED 17600013 * CONTENTS OUT - N/A 17800013 RH EQU 7 CONTENTS IN- N/A 18000013 * USE- NOT USED 18200013 * CONTENTS OUT- N/A 18400013 RI EQU 8 CONTENTS IN- N/A 18600013 * USE- NOT USED 18800013 * CONTENTS OUT- N/A 19000013 RJ EQU 9 CONTENTS IN- N/A 19200013 * USE- NOT USED 19400013 * CONTENTS OUT- N/A 19600013 RK EQU 10 CONTENTS IN - N/A 19800013 * USED - BASE REG FOR IERRBE DSECT 20000013 * CONTENTS OUT - N/A 20200013 RL EQU 11 CONTENTS IN - N/A 20400013 * USED - MODULE BASE REGISTER 20600013 * CONTENTS OUT - N/A 20800013 RM EQU 12 CONTENTS IN - EQUALS OR EXTRACT ADDR 21000013 * USED - NOT USED 21200013 * CONTENTS OUT - EQULS OR EXTRACT ADDR 21400013 RN EQU 13 CONTENTS IN - ADDRESS OF PPI 21600013 * USED - PPI REFERENCES 21800013 * CONTENTS OUT - ADDRESS OF PPI 22000013 RO EQU 14 CONTENTS IN - RETURN REG 22200013 * USED - NOT USED 22400013 * CONTENTS OUT - RETURN REG 22600013 RP EQU 15 CONTENTS IN - THIS MODULE ENTRY ADDR 22800013 * USED - ESTABLISH THIS MOD BASE REG 23000013 * CONTENTS OUT - N/A 23200013 SPACE 2 23400013 *START OF MODULE CODE PROPER: 23600013 SPACE 2 23800013 IERABE CSECT 24000013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 24200013 USING IERRCA,RN ADDR OF PPI 24400013 USING IERRBED,RK ADDR OF RUNNING PROGRAM DUMMY MOD 24600013 IERMBA LR RL,RP LOAD MODULE BASE REG 24800013 L RK,PPIBLK+4 ADDR OF IERRBE(R.P) FOR DSECT BASE 25000013 MVC WBLKCCNT,KEIGHT SET R.P. BLOCK CHAR CTR TO 8 25200013 L RF,PPILAB04 LOAD ADDR OF OUTPUT BUFFER #1 25400013 LA RF,0(0,RF) DELETE HIGH ORDER BYTE. 25600013 TM PPISW1+1,X'40' TEST IF TAPE SORT 25800013 BC 8,ABDISK NO, BR TO OVERLAY R.P. FOR DISK 26000013 SPACE 1 26200013 *TAPE SORT ROUTINE. CALCULATE ENDING ADDR+1 OF THE OUTPUT BUFFER 26400013 SPACE 1 26600013 AH RF,PPILAB07+2 ADD ROUNDED LENGTH OF OUTPUT BLOCK 26800013 ST RF,WLSTPTR HAS OUTPUT BLOCK PTR ENDING ADDR+1 27000013 ST RF,WLSTPTRD CURRENT OUTPUT BLK ENDG ADDR+1 27200013 MVC RBDISK(2),KNOP OVERLAY R.P. INSTR WITH A NOP 27400013 MVC RBLDLPTR(4),KON2 OVERLAY R.P. INSTR 27600013 MVC RBTAPE1(4),KON2 OVERLAY R.P. INSTR 27800013 SPACE 1 28000013 *INTERFACE TO NEXT MODULE 28200013 SPACE 1 28400013 ABNEXTAP BR RO RETURN 28600013 SPACE 2 28800013 * DISK SORT ROUTINE 29000013 SPACE 1 29200013 ABDISK LA RF,8(0,RF) EQUALS OUTPUT BLOCK STARTING ADDR+8 29400013 ST RF,WLSTPTR STORE IN R.P. OUTPUT BLK LIST PTR 29600013 ST RF,WLSTPTRD STORE IN R.P. AS CURRENT OUTPUT 29800013 * BLOCK ADDR+8 30000013 MVC RBTAPE(2),KNOP OVERLAY R.P. INSTR WITH A NOP 30200013 MVC RBOVLAY2(4),KON1 OVERLAY R.P. INSTR WITH KON1 30400013 B ABNEXTAP BR TO INTERFACE FOR NEXT A.P. 30600013 SPACE 2 30800013 SPACE 2 31000013 * LIST OF CONSTANTS USED BY MODULE 31200013 SPACE 1 31400013 KNOP DC X'4700' 31600013 DROP RK 31800013 USING IERRBED,RL 32000013 KON1 L RC,WLSTPTRD 32200013 KON2 L RH,WLSTPTR 32400013 USING IERABE,RL 32600013 USING IERRBED,RK 32800013 EJECT 33000013 * MODULE NAME *** IERRBE *** 33200013 SPACE 2 33400013 * MODULE DEFINITION- BLOCK,SORTPHASE. THE MODULE HANDLES THE VARIABLE 33600013 * LENGTH RECORDS BY WAY OF THE IOCS EXCP WRITE MACRO. THERE IS NO 33800013 * DATA CHAINING AND THE MODULE MAINTAINS THE BUFFER SCHEME. THE 34000013 * MODULE LINKS TO THE VARIABLE MOVE ROUTINE,IERRBF, WHICH MOVES THE 34200013 * VARIABLE LENGTH RECORD FROM RSA(BINS) TO AN OUTPUT BUFFER. UPON 34400013 * RETURN FROM THE MOVE ROUTINE, THE MODULE LINKS TO THE APPROPRIATE 34600013 * DEBLOCK MODULE. THIS MODULE UPDATES THE NEXT AVAILABLE RSA BIN 34800013 * POINTER AND BIN COUNTER LOCATED IN PPI. 35000013 SPACE 1 35200013 * INFORMATION COMMUNICATED BETWEEN MODULES--- 35400013 SPACE 1 35600013 * REPLACEMENT TO BLOCK-- RD HAS ADDRESS OF RECORD IN RSA. 1ST 2 35800013 * BYTES OF RECORD CONTAIN THE LENGTH. 36000013 * BLOCK TO MOVE-- RF HAS ADDRESS OF RCD IN RSA, RE HAS ADDRESS IN 36200013 * OUTPUT BUFFER TO MOVE RECORD, RB HAS A 4 FOR BLOCK RTN. 36400013 * MOVE TO BLOCK-- RB HAS NUMBER OF BINS FREED, RF POINTS TO LINK 36600013 * ADDRESS OF LAST BIN MOVED. 36800013 * BLOCK TO WRITE-- RB HAS OUTPUT BLOCK COUNT, RC HAS ADDRESS OF 37000013 * OUTPUT BUFFER, RE HAS 4 FOR NORMAL EOS OTHERWISE HAS A ZERO 37200013 * WRITE TO BLOCK-- RC HAS STARTING ADDRESS OF OUTPUT BLOCK+8 FOR 37400013 * DISK OR ENDING ADDRESS OF OUTPUT BLOCK+1 FOR TAPE 37600013 SPACE 2 37800013 IERRBED DSECT , DUMMY MODULE OF RUNNING PROGRAM CSECT **************** 38000013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 38200013 USING IERRCA,RN PPI COMMON MODULE BASE REGISTER 38400013 SPACE 1 38600013 * ENTRY TABLE 38800013 SPACE 1 39000013 IERDB1 B RBLSTRCD LAST RCD ENTRY FROM REPLACEMENT 39200013 B RBEOS EOS ENTRY FROM REPLACEMENT 39400013 B RBWRT WRITE ENTRY. 39600013 B RBLDCCNT NORMAL ENTRY FROM REPLACEMENT 39800013 B * DUMMY ENTRY-NOT USED 40000013 WLSTPTR DC F'0' INITIALLY LOADED BY A.P. TO OUTPUT 40200013 * BLOCK ENDING ADDR+1 FOR TAPE, OR 40400013 * OUTPUT BLOCK STARTG ADDR+8 FOR A 40600013 * DISK SORT 40800013 WLSTPTRD DC F'0' CURRENT OUTPUT BLK STRTG ADDR+8-DISK 41000013 * OR OUTPUT BLK ENDG ADDR+1-TAPE 41200013 * BOTH POINTERS ARE RESET BY WRITE 41400013 * RTN ON EOS 41600013 * NORMAL REPLACEMENT ENTRY-INCR BLOCK CHAR CTR,CHECK IF RCD WILL FIT 41800013 * IN OUTPUT BLOCK. IF NOT, WRITE THE BUFFER BEFORE MOVING THE RCD. 42000013 SPACE 1 42200013 RBLDCCNT L RG,WBLKCCNT OUTPUT BLOCK CHARACTER CTR INITIALLY 42400013 * PRESET TO 8 BY A.P. 42600013 AH RG,0(0,RD) ADD LENGTH OF RCD TO BE MOVED 42800013 CH RG,PPILAB07+2 GREATER THAN ROUNDED OUTPUT BLOCKING 43000013 BC 2,RBWRTBLK YES,BR TO WRITE THE BLOCK FIRST 43200013 RBSAVERD ST RD,WINNER SAVE ADDR OF RCD IN RSA TO BE BLOCKD 43400013 L RE,WLSTPTR ADDR IN OUTPUT BLOCK TO MOVE RCD- 43600013 RBTAPE SH RE,0(0,RD) DECR ADDR BY RCD LNGTH-FOR TAPE SORT 43800013 * RCDS FILL OUTPUT BLOCK STARTING 44000013 * FROM HIGH CORE TO LOW CORE. THIS 44200013 * INSTR WILL BE NOP BY A.P. IF DISK 44400013 SPACE 1 44600013 * CALCULATE BEGINNING ADDR OF THIS BIN + STORE AS NEW AVAILABLE BIN 44800013 SPACE 1 45000013 S RD,KFOUR SUBTR 4 BYTES FOR TREE ADDR IN RSA 45200013 SH RD,PPILEXFF SUBTR LENGTH OF CONTROL FIELD 45400013 ST RD,WKEEPAVA SAVE STRTG ADDR OF BIN IN WORK AREA 45600013 SPACE 1 45800013 * LOAD PARAMETERS AND BRANCH TO MOVE MODULE TO MOVE RCD FROM RSA TO 46000013 * THE OUTPUT BLOCK. TEST IF LAST RCD SWITCH SET. 46200013 SPACE 1 46400013 L RF,WINNER LOAD ADDR OF RCD IN RSA 46600013 L RB,KFOUR A 4 DENOTES A BLOCK RTN TO MOVE MOD 46800013 L RP,PPIBDSVA+12 LOAD ADDR OF MOVE RTN 47000013 * 47200013 LR RI,RE ELLIOTT I PUT THIS IN. DLB 47400013 * 47600013 BALR RO,RP BR TO MOVE RTN(WILL SAVE ALL REGS + 47800013 * PASS = BINS VACATED IN RB,AND LINK 48000013 * ADDR OF LAST BIN OF RCD IN RF) 48200013 * 48400013 LR RE,RI ELLIOTT I PUT THIS IN. DLB 48600013 * 48800013 CLI WLASTRCD,X'00' LAST RCD SWITCH ON 49000013 BC 7,RBSEQSW YES,BR TO SET FINAL EOS SW FOR WRITE 49200013 L RI,WINNER LOAD ADDR OF RCD IN RSA 49400013 RBDISK AH RE,0(0,RI) DISK SORT ONLY-INCR ADDR IN OUTPUT 49600013 * BLOCK BY RCD LENGTH. THIS INSTR 49800013 * WILL BE A NOP IF TAPE SORT. 50000013 ST RE,WLSTPTR SAVE UPDATED OUTPUT BLK ADDR PTR 50200013 SPACE 1 50400013 * UPDATE BIN COUNT AND PTR TO NEXT AVAILABLE AREA IN RSA.UPDATE CHAIN 50600013 * ADDRESS OF LAST BIN VACATED IN RSA IF BIN COUNT IS NOT ZERO 50800013 SPACE 1 51000013 L RI,PPIBDSVA+8 LOAD BIN COUNT 51200013 AR RI,RB INCR BY = OF BINS JUST VACATED 51400013 ST RI,PPIBDSVA+8 STORE UPDATED BIN COUNT FOR DEBLOCK 51600013 CR RI,RB WAS BIN COUNT ZERO BEFORE INCR(IF SO 51800013 * RI WILL NOW EQUAL RB) 52000013 BC 8,RBSTOKEP YES,BR TO UPDATE NEXT AVAILABLE BIN 52200013 * PTR ONLY,BECAUSE ALL BINS ARE 52400013 * LINKED TOGETHER ALREADY 52600013 MVC 0(4,RF),PPIBDSVA+4 STORE ADDR OF NEXT AVAIL BIN IN LINK 52800013 * ADDR OF LAST BIN VACATED 53000013 RBSTOKEP MVC PPIBDSVA+4(4),WKEEPAVA ADDR OF AVAIL BIN 53200013 ST RG,WBLKCCNT SAVE CHARACTER COUNTER 53400013 SPACE 1 53600013 * INTERFACE TO DEBLOCK MODULE 53800013 SPACE 1 54000013 RBOVLAY1 L RL,PPIDEB+4 ADDR OF DEBLOCK MOD. THIS INSTR WILL 54200013 * BE OVLAYED BY B RBLDLPTR ON NORMAL 54400013 * EOS, THEN RESTORED FOR NEXT SEQ. 54600013 B 8(RL) BR TO DEBLOCK MOD 54800013 SPACE 2 55000013 * FINAL SEQUENCE ROUTINE FOR LAST RECORD 55200013 SPACE 1 55400013 RBSEQSW ST RE,WLSTPTR SAVE STRTG ADDR OF LAST RCD IN OUT- 55600013 * PUT BLK FOR TAPE. IGNORE FOR DISK. 55800013 SR RE,RE SET LAST SEQ SWITCH FOR WRITE MODULE 56000013 RBTAPE1 L RH,WLSTPTRD FOR DISK,LOAD OUTPUT BLK PTR. FOR 56200013 * TAPE,A.P. WILL SET TO L RH,WLSTPTR 56400013 B RBDCRLST BR TO DECR OUTPUT BLOCK PTR 56600013 SPACE 2 56800013 * WRITE A BLOCK. THIS RCD CAN'T FIT INTO THIS BLOCK. 57000013 SPACE 1 57200013 RBWRTBLK SH RG,0(0,RD) SUBTRACT LENGTH OF RCD THAT CANT FIT 57400013 * FROM OUTPUT BLOCK COUNT 57600013 RBOVLAY2 L RC,WLSTPTR LOAD OUTPUT BLK PTR.FOR DISK,WLSTPTR 57800013 * WILL BE OVLAYED BY WLSTPTRD BY A.P 58000013 S RC,KEIGHT EQUALS ADDR OF OUTPUT BLK TO WRITE 58200013 STH RG,WHOLD SET ON HALF WORD BOUNDARY 58400013 MVC 0(2,RC),WHOLD BCC IN 1ST 2 BYTES OF OUTPUT BLK 58600013 LR RB,RG ALSO,IN RB FOR WRITE PARAM 58800013 L RL,PPIWRT+4 ADDR OF WRITE MODULE 59000013 B 8(RL) BR TO WRITE MODULE 59200013 SPACE 2 59400013 * WRITE MODULE REENTER VIA BRANCH TABLE. RC,FOR TAPE,HAS ADDR OF AN 59600013 * OUTPUT BLK ENDING ADDR+1.RC,FOR DISK,HAS OUTPUT BLK STRTG ADDR+8 59800013 SPACE 1 60000013 RBWRT ST RC,WLSTPTRD SAVE AS INITIAL OUTPUT BLK POINTER 60200013 ST RC,WLSTPTR STORE AS OUTPUT BLOCK WORK PTR 60400013 LA RG,8 REINITIALIZE BLOCK CHAR CTR TO 8 60600013 AH RG,0(0,RD) ADD RCD LENGTH OF RCD TO BE MOVED 60800013 * TO OUTPUT BLOCK 61000013 B RBSAVERD 61200013 SPACE 2 61400013 * FROM REPLACEMENT. LAST RECORD 61600013 SPACE 1 61800013 RBLSTRCD OI WLASTRCD,X'01' TURN ON LAST RCD SWITCH 62000013 B RBLDCCNT 62200013 SPACE 2 62400013 * FROM REPLACEMENT. NORMAL EOS 62600013 SPACE 1 62800013 RBEOS MVC RBOVLAY1,KLDLPTR OVLAY EXIT TO DEBLOCK FOR NORMAL EOS 63000013 B RBLDCCNT BR TO MOVE LAST RCD OF THIS SEQUENCE 63200013 SPACE 2 63400013 * RETURN FROM RBOVLAY1 WHICH WAS OVERLAYED ON THIS NORMAL EOS. 63600013 SPACE 1 63800013 RBLDLPTR L RH,WLSTPTRD LOAD OUTPUT BLOCK PTR(DISK SORT).A.P 64000013 * WILL MAKE L RH,WLSTPTR (TAPE SORT) 64200013 LA RE,4 SET SWITCH TO NORMAL EOS FOR WRITE 64400013 MVC WLSTPTR,WLSTPTRD RESET OUTPUT BLOCK POINTER 64600013 MVC WBLKCCNT,KEIGHT REINITIALIZE BLOCK CHAR CTR TO 8 64800013 MVC RBOVLAY1,KIERDD1 RESET RBOVLAY1 TO ORIGINAL INSTR 65000013 SPACE 1 65200013 * CONTINUATION POINT FOR LAST RCD. RH POINTS TO BYTE AFTER EOS ENTRY 65400013 SPACE 1 65600013 RBDCRLST S RH,KEIGHT DECR OUTPUT BLK PTR BY 8 TO INSERT 65800013 * BLOCK CHAR CNT IN 1ST 2 BYTES 66000013 STH RG,WHOLD SET ON HALF WORD BOUNDARY 66200013 MVC 0(2,RH),WHOLD BCC IN 1ST 2 BYTES OF OUTPUT BLK 66400013 LR RB,RG LOAD BLOCK CHAR CNT FOR WRITE 66600013 LR RC,RH LOAD OUTPUT BLOCK PTR FOR WRITE MOD 66800013 SPACE 1 67000013 * INTERFACE TO WRITE MODULE FOR EOS 67200013 SPACE 1 67400013 L RL,PPIWRT+4 ADDR OF WRITE MODULE 67600013 B 4(RL) BR TO WRITE MODULE 67800013 SPACE 2 68000013 * LIST OF CONSTANTS USED BY THE MODULE 68200013 SPACE 1 68400013 KFOUR DC F'4' 68600013 KEIGHT DC F'8' 68800013 KIERDD1 L RL,PPIDEB+4 RESTORE RBOVLAY1 AFTER NORMAL EOS 69000013 KLDLPTR B RBLDLPTR OVLAY RBOVLAY1 EVERY NORMAL EOS 69200013 SPACE 1 69400013 * LIST OF WORK AREAS USED BY THE MODULE 69600013 SPACE 1 69800013 WBLKCCNT DC F'0' OUTPUT BLOCK CHARACTER CTR INITIALLY 70000013 * PRESET TO 8 BY A.P.(2-BCC,2-SYSTEM 70200013 * CHECK,4-EOS) 70400013 WINNER DC F'0' ADDR OF RCD IN RSA TO BE BLOCKED 70600013 * POINTS TO 2 BYTE LENGTH FIELD 70800013 WKEEPAVA DC F'0' STARTG ADDR OF BIN 71000013 WHOLD DC H'0' HALF-WORD BOUNDARY WORK AREA 71200013 WLASTRCD DC X'00' LAST RCD SWITCH 71400013 EJECT 71600013 SMPPI 71800013 END 72000013 ./ ADD SSI=03010172,NAME=IERABF,SOURCE=0 TITLE 'IERABF - OS/360 SORT/MERGE - 360-SM-023 02/28/65' 00100013 *MODULE NAME *** IERABF *** 00200013 SPACE 2 00300013 *STATUS: CHANGE LEVEL 0 00400013 SPACE 2 00500013 *FUNCTION/OPERATION: THE PURPOSE OF THIS MODULE IS TO CHOOSE ONE OF 00600013 * THE THREE VARIABLE MOVE ROUTINGS, ASSIGN IT AND PLACE IT IN RUNNING 00700013 * PROGRAM CORE. IN ORDER TO CHOOSE THE CORRECT VARIABLE MOVE ROUTINE 00800013 * THIS MODULE CALCULATES THE FOLLOWING VALUES. 00900013 * 01000013 * X = LENGTH OF EXTRACTED CONTROL FIELDS + 4 01100013 * 01200013 * Y = BINSIZE - X - 4 01300013 * 01400013 * IF Y .LE. 256 AND (X+Y) .LE. 256 ROUTINE RBFM1 IS CHOSEN. 01500013 * 01600013 * IF Y .LE. 256 AND (X+Y) .GT. 256 ROUTINE RBFM2 IS CHOSEN. 01700013 * 01800013 * IF Y .GT. 256 AND (X+Y) .GT. 256 ROUTINE RBFM3 IS CHOSEN. 01900013 SPACE 2 02000013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 02100013 * N/A 02200013 SPACE 2 02300013 *LIST OF MACROS USED BY MODULE: 02400013 * SMPPI 02500013 SPACE 2 02600013 *ENTRY POINTS: 02700013 SPACE 1 02800013 * CALLING SEQUENCE- 02900013 * L RP,=A(IERABF) 03000013 * BALR RO,RP 03100013 SPACE 2 03200013 *INPUT: - PPI FIELDS REFERENCED - 03300013 SPACE 1 03400013 * PPIBINSZ 03500013 * PPILEXFF 03600013 SPACE 1 03700013 * THESE VALUES ARE USED TO CALCULATE THE VALUES OF X AND Y. 03800013 SPACE 2 03900013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED - 04000013 SPACE 1 04100013 * PPIBDSVA 04200013 SPACE 1 04300013 * THE ADDRESS FO THE MOVE ROUTINE IS PLACED IN THIS FIELD. 04400013 SPACE 2 04500013 *EXTERNAL ROUTINES: 04600013 * N/A 04700013 SPACE 2 04800013 *EXTERNAL PARAMETERS: 04900013 SPACE 1 05000013 * N/A 05100013 SPACE 2 05200013 *EXITS-NORMAL: 05300013 SPACE 1 05400013 * BR RO RETURN TO CALLER 05500013 SPACE 2 05600013 *EXITS-ERROR: 05700013 SPACE 1 05800013 * N/A 05900013 SPACE 2 06000013 *TABLES/WORK AREA: 06100013 * N/A 06200013 SPACE 2 06300013 *ATTRIBUTES: THIS IS A CLASS 'A' MODULE. 06400013 SPACE 2 06500013 *NOTES: THIS MODULE IS USED IN PHASE 1 OF A VARIABLE SORT. 06600013 EJECT 06700013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 06800013 SPACE 1 06900013 RA EQU 0 CONTENTS IN - N/A 07000013 * USED - N/A 07100013 * CONTENTS OUT - N/A 07200013 RB EQU 1 CONTENTS IN - N/A 07300013 * USED - N/A 07400013 * CONTENTS OUT - N/A 07500013 RC EQU 2 CONTENTS IN - N/A 07600013 * USED - WORK REGISTER 07700013 * CONTENTS OUT - N/A 07800013 RD EQU 3 CONTENTS IN - N/A 07900013 * USED - LENGTH OF EXTRACTED CTL FLDS 08000013 * CONTENTS OUT - N/A 08100013 RE EQU 4 CONTENTS IN - N/A 08200013 * USED - BIN SIZE 08300013 * CONTENTS OUT - N/A 08400013 RF EQU 5 CONTENTS IN - N/A 08500013 * USED - WORK REGISTER 08600013 * CONTENTS OUT - N/A 08700013 RG EQU 6 CONTENTS IN - N/A 08800013 * USED - WORK REGISTER 08900013 * CONTENTS OUT - N/A 09000013 RH EQU 7 CONTENTS IN - N/A 09100013 * USED - N/A 09200013 * CONTENTS OUT - N/A 09300013 RI EQU 8 CONTENTS IN - N/A 09400013 * USED - N/A 09500013 * CONTENTS OUT - N/A 09600013 RJ EQU 9 CONTENTS IN - N/A 09700013 * USED - N/A 09800013 * CONTENTS OUT - N/A 09900013 RK EQU 10 CONTENTS IN - N/A 10000013 * USED - ADDRESS OF MOVE ROUTINE 10100013 * CONTENTS OUT - N/A 10200013 RL EQU 11 CONTENTS IN - N/A 10300013 * USED - BASE 10400013 * CONTENTS OUT - N/A 10500013 RM EQU 12 CONTENTS IN - N/A 10600013 * USED - N/A 10700013 * CONTENTS OUT - N/A 10800013 RN EQU 13 CONTENTS IN - PPI ADDRESS 10900013 * USED - PPI REFERENCED 11000013 * CONTENTS OUT - PPI ADDRESS 11100013 RO EQU 14 CONTENTS IN - RETURN ADDRESS 11200013 * USED - N/A 11300013 * CONTENTS OUT - RETURN ADDRESS 11400013 RP EQU 15 CONTENTS IN - ENTRY POINT 11500013 * USED - N/A 11600013 * CONTENTS OUT - RETURN CODE 11700013 SPACE 2 11800013 *START OF MODULE CODE PROPER: 11900013 SPACE 2 12000013 IERABF CSECT VARIABLE MOVE ASSIGNMENT MODULE 12100013 USING *,RL 12200013 USING IERRCA,RN 12300013 USING DIERAMA,RI MESSAGE BASE REG. 12400013 IERMBF LR RL,RP SET BASE 12500013 ST RO,KSAVE SAVE RETURN REGISTER TO IERRC9 12600013 L RK,PPIVMV+4 GET ADDRESS OF MOVE ROUTINE 12700013 ST RK,PPIBDSVA+12 PUT ADDRESS OF MOVE ROUTINE IN PPI 12800013 L RI,PPIAMA+4 SET MESSAGE BASE REG. 12900013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 13000013 BNO ABFNOMES SWITCH OFF BYPASS MESSAGE 13100013 LR RA,RK LOAD NUMBER TO BE CONVERTED 13200013 L RP,PPICONV+4 LOAD ADDR OF CONVERSION ROUTINE 13300013 BAL RO,4(RP) BRANCH TO CONVERSION ROUTINE 13400013 MVC DMSG905A(8),0(RB) MOVE NUMBER INTO MESSAGE 13500013 LM RA,RB,DMSG905X SET UP FOR PRINTING 13600013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 13700013 BAL RO,12(0,RP) BRANCH AND PRINT 13800013 ABFNOMES L RE,PPIBINSZ GET BIN SIZE 13900013 S RE,BFK4 X + Y = BINSIZE - 4 14000013 LH RD,PPILEXFF GET LENGTH OF EXTRACTED FIELDS 14100013 A RD,BFK4 X = LEXFF + 4 14200013 LR RC,RE PUT X+Y IN RC 14300013 SR RC,RD Y = (X+Y) - X 14400013 C RE,BFK256 COMPARE (X+Y) TO 256 14500013 BNH BFMOVE1 IF (X+Y) .LE. 256 BRANCH TO MOVE1 14600013 C RC,BFK256 COMPARE Y TO 256 14700013 BNH BFMOVE2 IF Y .LE. 256 BRANCH TO MOVE 14800013 BFMOVE3 ST RC,M3VALUES+8 PUT Y IN M3VALUES 14900013 ST RE,M3XPLUSY PUT (X+Y) IN M3XPLUSY 15000013 MVC 0(256,RK),RBFM3 MOVE RBFM3 INTO IERRBF (256 CHARS) 15100013 LA RK,256(0,RK) UPDATE ADDRESS OF IERRBF 15200013 MVC 0(52,RK),RBFM3+256 MOVE REST OF RBFM3 INTO IERRBF 15300021 BFEXIT L RO,KSAVE RESTORE RETURN REGISTER 15400013 BR RO TO IERRC9 15500013 * 15600013 EJECT 15700013 BFMOVE2 ST RC,M2VALUES+8 PUT Y IN M2VALUES 15800013 ST RE,M2XPLUSY PUT (X+Y) IN M2VALUES 15900013 MVC 0(256,RK),RBFM2 MOVE RBFM2 INTO IERRBF (256 CHARS) 16000013 LA RK,256(0,RK) UPDATE ADDRESS OF IERRBF 16100013 MVC 0(64,RK),RBFM2+256 MOVE REST OF RBFM2 INTO IERRBF 16200021 B BFEXIT BRANCH TO RETURN 16300013 * 16400013 EJECT 16500013 BFMOVE1 LCR RF,RC PUT -Y IN RF 16600013 LCR RG,RE PUT -(X+Y) IN RG 16700013 ST RC,M1VALUES+8 PUT Y IN M1VALUES 16800013 ST RF,M1VALUES+12 PUT -Y IN M1VALUES 16900013 ST RE,M1VALUES+16 PUT X+Y IN M1VALUES 17000013 ST RG,M1VALUES+20 PUT -(X+Y) IN M1VALUES 17100013 ST RE,M1VALUES+24 PUT X+Y IN M1VALUES 17200013 BCTR RC,0 Y = Y - 1 17300013 BCTR RE,0 X+Y = (X+Y) - 1 17400013 STC RC,M1D008+1 PUT Y IN DEBLOCK MOVE 17500013 STC RC,M1B008+1 PUT Y IN BLOCK MOVE 17600013 STC RE,M1D004+1 PUT (X+Y) IN DEBLOCK MOVE 17700013 STC RE,M1B004+1 PUT (X+Y) IN BLOCK MOVE 17800013 MVC 0(256,RK),RBFM1 MOVE RBFM1 INTO IERRBF (256 CHARS) 17900013 LA RK,256(0,RK) UPDATE ADDRESS OF IERRBF 18000013 MVC 0(8,RK),RBFM1+256 MOVE REST OF RBFM1 INTO IERRBF 18100021 B BFEXIT BRANCH TO RETURN 18200013 * 18300013 EJECT 18400013 BFK4 DC F'4' 18500013 BFK256 DC F'256' 18600013 KSAVE DC F'0' REGISTER RO SAVE AREA 18700013 EJECT 18800013 *********************************************************************** 18900013 * * 19000013 * REGISTER USAGE FOR VARIABLE MOVE ROUTINE 1 * 19100013 * * 19200013 * RA - RECORD LENGTH * 19300013 * RB - NUMBER OF AVAILABLE BINS * 19400013 * RC - NOT USED * 19500013 * RD - NOT USED * 19600013 * RE - CURRENT BUFFER ADDRESS * 19700013 * RF - CURRENT BIN ADDRESS * 19800013 * RG - NOT USED * 19900013 * RH - BINS USED COUNT * 20000013 * RI - 0 * 20100013 * RJ - Y * 20200013 * RK - -Y * 20300013 * RL - (X + Y) * 20400013 * RM - -(X + Y) * 20500013 * RN - (X + Y) * 20600013 * RO - RETURN REGISTER * 20700013 * RP - PROGRAM BASE * 20800013 * * 20900013 *********************************************************************** 21000013 RBFM1 DS 0D 21100013 USING *,RP 21200013 USING IERRCA,RN 21300013 STM RG,RO,PPIWKARE SAVE REGISTERS 6 THROUGH 14 21400013 LR RO,RN SWITCH BASE FOR PPI 21500013 DROP RN 21600013 USING IERRCA,RO 21700013 LM RH,RN,M1VALUES GET INITIAL REGISTER VALUES 21800013 B M1BRTAB(RB) BRANCH TO INDEXED BRANCH TABLE 21900013 M1BRTAB B M1DBLOCK BRANCH TO DEBLOCK (INDEX = 0) 22000013 B M1BLOCK BRANCH TO BLOCK (INDEX = 4) 22100013 L RB,PPIBDSVA+8 NO FIT LAST TIME (INDEX = 8) 22200013 M1NFLAST B M1D007 BRANCH TO CORRECT ENTRY IN DEBLOCK 22300013 B M1D006 BRANCH TO CORRECT ENTRY IN DEBLOCK 22400013 EJECT 22500013 M1DBLOCK L RB,PPIBDSVA+8 GET NUMBER OF AVAILABLE BINS 22600013 MVC PPIWKARE+36(2),0(RE) PUT LENGTH ON PROPER BOUNDARY 22700013 LH RA,PPIWKARE+36 GET VARIABLE RECORD LENGTH - VRL 22800013 BXLE RA,RI,M1D001 IF VRL .LE. Y TAKE BRANCH 22900013 M1D008 MVC 0(0,RF),0(RE) MOVE Y CHARS INTO RSA 23000013 AR RE,RJ BUF ADD = CURRENT + Y 23100013 LA RH,1(0,RH) BINS USED = CURRENT + 1 23200013 BCT RB,M1D002 AVAIL = CURRENT - 1, IF .NE. 0 BR 23300013 MVI M1NFLAST+1,X'00' MAKE NO FIT LAST SWITCH A NOP 23400013 M1NOFIT LR RB,RH PUT BINS USED IN R1 23500013 LA RF,0(RJ,RF) UPDATE R5 TO POINT TO CHAIN ADDRESS 23600013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 23700013 B 0(0,RO) RETURN TO NO FIT ENTRY 23800013 M1D002 L RF,0(RJ,RF) GET ADDRESS OF NEXT BIN 23900013 M1D006 BXLE RA,RK,M1D005 IF VRL - Y .LE. X+Y BRANCH 24000013 M1D004 MVC 0(0,RF),0(RE) MOVE X+Y CHARS INTO RSA 24100013 AR RE,RN BUF ADD = CURRENT + (X+Y) 24200013 LA RH,1(0,RH) BINS USED = CURRENT + 1 24300013 BCT RB,M1D003 AVAIL = CURRENT - 1, IF .NE. O BR 24400013 MVI M1NFLAST+1,X'F0' MAKE NO FIT LAST SWITCH A BRANCH 24500013 LR RJ,RN PUT CORRECT UPDATE VALUE IN R9 24600013 B M1NOFIT BRANCH TO START EXIT LINKAGE 24700013 M1D003 L RF,0(RN,RF) GET ADDRESS OF NEXT BIN 24800013 M1D007 BXH RA,RM,M1D004 IF VRL -(X+Y) .GT. X+Y BRANCH 24900013 M1D005 LR RJ,RN PUT CORRECT UPDATE VALUE IN R9 25000013 M1D001 BCTR RA,0 VRL = VRL - 1 25100013 STC RA,*+5 PUT VRL IN LENGTH OF FOLLOWING MOVE 25200013 MVC 0(0,RF),0(RE) MOVE VRL CHARS INTO RSA 25300013 LA RB,1(0,RH) PUT UPDATED BINS USED COUNT IN R1 25400013 LA RF,0(RJ,RF) UPDATE R5 TO POINT TO CHAIN ADDRESS 25500013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 25600013 B 4(0,RO) RETURN TO FIT ENTRY 25700013 EJECT 25800013 M1BLOCK LH RA,0(0,RF) GET VARIABLE RECORD LENGTH - VRL 25900013 BXLE RA,RI,M1B001 IF VRL .LE. Y TAKE BRANCH 26000013 M1B008 MVC 0(0,RE),0(RF) MOVE Y CHARS INTO OUTPUT BUFFER 26100013 AR RE,RJ BUF ADD = CURRENT + Y 26200013 LA RH,1(0,RH) BINS USED = CURRENT + 1 26300013 L RF,0(RJ,RF) GET ADDRESS OF NEXT BIN 26400013 BXLE RA,RK,M1B005 IF VRL - Y .LE. X+Y BRANCH 26500013 M1B004 MVC 0(0,RE),0(RF) MOVE X+Y CHARS INTO OUTPUT BUFFER 26600013 AR RE,RN BUF ADD = CURRENT + (X+Y) 26700013 LA RH,1(0,RH) BINS USED = CURRENT + 1 26800013 M1B003 L RF,0(RN,RF) GET ADDRESS OF NEXT BIN 26900013 BXH RA,RM,M1B004 IF VRL - (X+Y) .GT. X+Y BRANCH 27000013 M1B005 LR RJ,RN PUT CORRECT UPDATE VALUE IN R9 27100013 M1B001 BCTR RA,0 VRL = VRL - 1 27200013 STC RA,*+5 PUT VRL IN LENGTH OF FOLLOWING MOVE 27300013 MVC 0(0,RE),0(RF) MOVE VRL CHARS INTO OUTPUT BUFFER 27400013 LA RB,1(0,RH) PUT UPDATED BINS USED COUNT IN R1 27500013 LA RF,0(RJ,RF) UPDATE R5 TO POINT TO CHAIN ADDRESS 27600013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 27700013 B 0(0,RO) RETURN TO CALLER 27800013 DROP RO 27900013 EJECT 28000013 M1VALUES DC F'0' RH - 0 28100013 DC F'0' RI - 0 28200013 DC F'0' RF - Y 28300013 DC F'0' RK - -Y 28400013 DC F'0' RL - X+Y 28500013 DC F'0' RM - -(X+Y) 28600013 DC F'0' RN - X+Y 28700013 EJECT 28800013 *********************************************************************** 28900013 * * 29000013 * REGISTER USAGE FOR VARIABLE MOVE ROUTINE 2 * 29100013 * * 29200013 * RA RECORD LENGTH * 29300013 * RB - NUMBER OF AVAILABLE BINS * 29400013 * RC - NOT USED * 29500013 * RD - NOT USED * 29600013 * RE - CURRENT BUFFER ADDRESS * 29700013 * RF - CHAIN ADDRESS POINTER * 29800013 * RG - CURRENT BIN ADDRESS * 29900013 * RH - BINS USED COUNT * 30000013 * RI - 0, -Y, -(X + Y) * 30100013 * RJ - Y, (X + Y), (X + Y) * 30200013 * RK - 0 * 30300013 * RL - 256 * 30400013 * RM - -256 * 30500013 * RN - 256 * 30600013 * RO - RETURN REGISTER * 30700013 * RP - PROGRAM BASE * 30800013 * * 30900013 *********************************************************************** 31000013 RBFM2 DS 0D 31100013 USING *,RP 31200013 USING IERRCA,RN 31300013 STM RG,RO,PPIWKARE SAVE REGISTERS 6 THROUGH 14 31400013 LR RO,RN SWITCH BASE FOR PPI 31500013 DROP RN 31600013 USING IERRCA,RO 31700013 LR RG,RF PUT RSA ADDRESS IN R6 31800013 LM RH,RN,M2VALUES GET INITIAL REGISTER VALUES 31900013 B M2BRTAB(RB) BRANCH TO INDEXED BRANCH TABLE 32000013 M2BRTAB B M2DBLOCK BRANCH TO DEBLOCK (INDEX = O) 32100013 B M2BLOCK BRANCH TO BLOCK (INDEX = 4) 32200013 LM RI,RJ,M2SAVE8 NO FIT LAST TIME (INDEX = 8) 32300013 L RB,PPIBDSVA+8 GET NUMBER OF AVAILABLE BINS 32400013 B M2D007 BRANCH TO CORRECT ENTRY IN DEBLOCK 32500013 EJECT 32600013 M2DBLOCK L RB,PPIBDSVA+8 GET NUMBER OF AVAILABLE BINS 32700013 AR RF,RJ UPDATE R5 TO POINT TO CHAIN ADDRESS 32800013 MVC PPIWKARE+36(2),0(RE) PUT LENGTH ON PROPER BOUNDARY 32900013 LH RA,PPIWKARE+36 GET VARIABLE RECORD LENGTH - VRL 33000013 BXLE RA,RI,M2D005 IF VRL .LE. Y TAKE BRANCH 33100013 LCR RI,RJ PUT -Y IN R8 33200013 B M2D008 BRANCH TO MOVE Y CHARS 33300013 M2D004 LCR RI,RJ PUT -(X+Y) IN R8 33400013 M2D002 MVC 0(256,RG),0(RE) MOVE 256 CHARS INTO RSA 33500013 AR RG,RN RSA ADD = CURRENT + 256 33600013 AR RE,RN BUF ADD = CURRENT + 256 33700013 BXH RJ,RM,M2D002 IF Y OR X+Y - 256 .GT. 256 BRANCH 33800013 M2D008 BCTR RJ,0 L = Y OR X+³ MOD(256) - 1 33900013 STC RJ,*+5 PUT L IN LENGTH OF FOLLOWING MOVE 34000013 MVC 0(0,RG),0(RE) MOVE L CHARS INTO RSA 34100013 LA RE,1(RJ,RE) BUF ADD = CURRENT + L + 1 34200013 LA RH,1(0,RH) BINS USED = CURRENT + 1 34300013 BCT RB,M2D003 AVAIL = CURRENT - 1, IF .NE. 0 BR 34400013 M2NOFIT LR RB,RH PUT BINS USED IN R1 34500013 ST RI,M2SAVE8 SAVE CURRENT INDEX VALUE 34600013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 34700013 B 0(0,RO) RETURN TO NO FIT ENTRY 34800013 * 34900013 M2D003 L RJ,M2XPLUSY GET X+Y 35000013 L RG,0(0,RF) GET ADD OF NEXT BIN 35100013 M2D007 LA RF,0(RJ,RG) UPDATE R5 TO POINT TO CHAIN ADDRESS 35200013 BXH RA,RI,M2D004 IF VRL - Y OR X+³ .GT. X+³ BRANCH 35300013 M2D001 BXLE RA,RK,M2D005 IF VRL .LE. 256 TAKE BRANCH 35400013 M2D006 MVC 0(256,RG),0(RE) MOVE 256 CHARS INTO RSA 35500013 AR RG,RN RSA ADD = CURRENT + 256 35600013 AR RE,RN BUF ADD = CURRENT + 256 35700013 BXH RA,RM,M2D006 IF VRL - 256 .GT. 256 BRANCH 35800013 M2D005 BCTR RA,0 VRL = VRL - 1 35900013 STC RA,*+5 PUT VRL IN LENGTH OF FOLLOWING MOVE 36000013 MVC 0(0,RG),0(RE) MOVE VRL CHARS INTO RSA 36100013 LA RB,1(0,RH) PUT UPDATED BINS USED COUNT IN R1 36200013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 36300013 B 4(0,RO) RETURN TO FIT ENTRY 36400013 EJECT 36500013 M2BLOCK AR RF,RJ UPDATE R5 TO POINT TO CHAIN ADDRESS 36600013 LH RA,0(0,RG) GET VARIABLE RECORD LENGTH - VRL 36700013 BXLE RA,RI,M2B005 IF VRL .LE. Y BRANCH 36800013 LCR RI,RJ PUT -Y IN R8 36900013 B M2B008 BRANCH TO MOVE Y CHARS 37000013 M2B004 LCR RI,RJ PUT -(X+4) IN R8 37100013 M2B002 MVC 0(256,RE),0(RG) MOVE 256 CHARS INTO OUTPUT BUFFER 37200013 AR RE,RN BUF ADD = CURRENT + 256 37300013 AR RG,RN RSA ADD = CURRENT + 256 37400013 BXH RJ,RM,M2B002 IF Y OR X+Y - 256 .GT. 256 BRANCH 37500013 M2B008 BCTR RJ,0 L = Y OR X+Y MOD(256) - 1 37600013 STC RJ,*+5 PUT L IN LENGTH OF FOLLOWING MOVE 37700013 MVC 0(0,RE),0(RG) MOVE L CHARS INTO OUTPUT BUFFER 37800013 LA RE,1(RJ,RE) BUF ADD = CURRENT + L + 1 37900013 LA RH,1(0,RH) BINS USED = CURRENT + 1 38000013 L RJ,M2XPLUSY GET X+Y 38100013 L RG,0(0,RF) GET ADD OF NEXT BIN 38200013 LA RF,0(RJ,RG) UPDATE R5 TO POINT TO CHAIN ADDRESS 38300013 BXH RA,RI,M2B004 IF VRL - Y OR X+Y .GT. X+Y BRANCH 38400013 M2B001 BXLE RA,RK,M2B005 IF VRL .LE. 256 TAKE BRANCH 38500013 M2B006 MVC 0(256,RE),0(RG) MOVE 256 CHARS INTO OUTPUT BUFFER 38600013 AR RE,RN BUF ADD = CURRENT + 256 38700013 AR RG,RN RSA ADD = CURRENT + 256 38800013 BXH RA,RM,M2B006 IF VRL - 256 .GT. 256 BRANCH 38900013 M2B005 BCTR RA,0 VRL = VRL - 1 39000013 STC RA,*+5 PUT VRL IN LENGTH OF FOLLOWING MOVE 39100013 MVC 0(0,RE),0(RG) MOVE VRL CHARS INTO OUTPUT BUFFER 39200013 LA RB,1(0,RH) PUT UPDATED BINS USED COUNT IN R1 39300013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 39400013 B 0(0,RO) RETURN TO CALLER 39500013 DROP RO 39600013 EJECT 39700013 M2VALUES DC F'0' RH - 0 39800013 DC F'0' RI - 0 39900013 DC F'0' RJ - Y 40000013 DC F'0' RK - 0 40100013 DC F'256' RL - 256 40200013 DC F'-256' RM - -256 40300013 DC F'256' RN - 256 40400013 M2SAVE8 DC F'0' R8 SAVE AREA 40500013 M2XPLUSY DC F'0' X+Y 40600013 EJECT 40700013 *********************************************************************** 40800013 * * 40900013 * REGISTER USAGE FOR VARIABLE MOVE ROUTINE 3 * 41000013 * * 41100013 * RA RECORD LENGTH * 41200013 * RB - NUMBER OF AVAILABLE BINS * 41300013 * RC - NOT USED * 41400013 * RD - NOT USED * 41500013 * RE - CURRENT BUFFER ADDRESS * 41600013 * RF - CHAIN ADDRESS POINTER * 41700013 * RG - CURRENT BIN ADDRESS * 41800013 * RH - BINS USED COUNT * 41900013 * RI - 0, -Y, -(X + Y) * 42000013 * RJ - Y, (X + Y), (X + Y) * 42100013 * RK - 0 * 42200013 * RL - 256 * 42300013 * RM - -256 * 42400013 * RN - 256 * 42500013 * RO - RETURN REGISTER * 42600013 * RP - PROGRAM BASE * 42700013 * * 42800013 *********************************************************************** 42900013 RBFM3 DS 0D 43000013 USING *,RP 43100013 USING IERRCA,RN 43200013 STM RG,RO,PPIWKARE SAVE REGISTERS 6 THROUGH 14 43300013 LR RO,RN SWITCH BASE FOR PPI 43400013 DROP RN 43500013 USING IERRCA,RO 43600013 LR RG,RF PUT RSA ADDRESS IN R6 43700013 LM RH,RN,M3VALUES GET INITIAL REGISTER VALUES 43800013 B M3BRTAB(RB) BRANCH TO INDEXED BRANCH TABLE 43900013 M3BRTAB B M3DBLOCK BRANCH TO DEBLOCK (INDEX = O) 44000013 B M3BLOCK BRANCH TO BLOCK (INDEX = 4) 44100013 LM RI,RJ,M3SAVE8 NO FIT LAST TIME (INDEX = 8) 44200013 L RB,PPIBDSVA+8 GET NUMBER OF AVAILABLE BINS 44300013 B M3D007 BRANCH TO CORRECT ENTRY IN DEBLOCK 44400013 EJECT 44500013 M3DBLOCK L RB,PPIBDSVA+8 GET NUMBER OF AVAILABLE BINS 44600013 AR RF,RJ UPDATE R5 TO POINT TO CHAIN ADDRESS 44700013 MVC PPIWKARE+36(2),0(RE) PUT LENGTH ON PROPER BOUNDARY 44800013 LH RA,PPIWKARE+36 GET VARIABLE RECORD LENGTH - VRL 44900013 BXLE RA,RI,M3D001 IF VRL .LE. Y TAKE BRANCH 45000013 M3D004 LCR RI,RJ PUT -Y OR -(X+Y) IN R8 45100013 M3D002 MVC 0(256,RG),0(RE) MOVE 256 CHARS INTO RSA 45200013 AR RG,RN RSA ADD = CURRENT + 256 45300013 AR RE,RN BUF ADD = CURRENT + 256 45400013 BXH RJ,RM,M3D002 IF Y OR X+Y - 256 .GT. 256 BRANCH 45500013 BCTR RJ,0 L = Y OR X+Y MOD(256) - 1 45600013 STC RJ,*+5 PUT L IN LENGTH OF FOLLOWING MOVE 45700013 MVC 0(0,RG),0(RE) MOVE L CHARS INTO RSA 45800013 LA RE,1(RJ,RE) BUF ADD = CURRENT + L + 1 45900013 LA RH,1(0,RH) BINS USED = CURRENT + 1 46000013 BCT RB,M3D003 AVAIL = CURRENT - 1, IF .NE. 0 BR 46100013 M3NOFIT LR RB,RH PUT BINS USED IN R1 46200013 ST RI,M3SAVE8 SAVE CURRENT INDEX VALUE 46300013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 46400013 B 0(0,RO) RETURN TO NO FIT ENTRY 46500013 * 46600013 M3D003 L RJ,M3XPLUSY GET X+Y 46700013 L RG,0(0,RF) GET ADD OF NEXT BIN 46800013 M3D007 LA RF,0(RJ,RG) UPDATE R5 TO POINT TO CHAIN ADDRESS 46900013 BXH RA,RI,M3D004 IF VRL - Y OR X+Y .GT. X+Y BRANCH 47000013 M3D001 BXLE RA,RK,M3D005 IF VRL .LE. 256 TAKE BRANCH 47100013 M3D006 MVC 0(256,RG),0(RE) MOVE 256 CHARS INTO RSA 47200013 AR RG,RN RSA ADD = CURRENT + 256 47300013 AR RE,RN BUF ADD = CURRENT + 256 47400013 BXH RA,RM,M3D006 IF VRL - 256 .GT. 256 BRANCH 47500013 M3D005 BCTR RA,0 VRL = VRL - 1 47600013 STC RA,*+5 PUT VRL IN LENGTH OF FOLLOWING MOVE 47700013 MVC 0(0,RG),0(RE) MOVE VRL CHARS INTO RSA 47800013 LA RB,1(0,RH) PUT UPDATED BINS USED COUNT IN R1 47900013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 48000013 B 4(0,RO) RETURN TO FIT ENTRY 48100013 EJECT 48200013 M3BLOCK AR RF,RJ UPDATE R5 TO POINT TO CHAIN ADDRESS 48300013 LH RA,0(0,RG) GET VARIABLE RECORD LENGTH - VRL 48400013 BXLE RA,RI,M3B001 IF VRL .LE. Y BRANCH 48500013 M3B004 LCR RI,RJ PUT -Y OR -(X+Y) IN R8 48600013 M3B002 MVC 0(256,RE),0(RG) MOVE 256 CHARS INTO OUTPUT BUFFER 48700013 AR RE,RN BUF ADD = CURRENT + 256 48800013 AR RG,RN RSA ADD = CURRENT + 256 48900013 BXH RJ,RM,M3B002 IF Y OR X+Y - 256 .GT. 256 BRANCH 49000013 BCTR RJ,0 L = Y OR X+Y MOD(256) - 1 49100013 STC RJ,*+5 PUT L IN LENGTH OF FOLLOWING MOVE 49200013 MVC 0(0,RE),0(RG) MOVE L CHARS INTO OUTPUT BUFFER 49300013 LA RE,1(RJ,RE) BUF ADD = CURRENT + L + 1 49400013 LA RH,1(0,RH) BINS USED = CURRENT + 1 49500013 L RJ,M3XPLUSY GET X+Y 49600013 L RG,0(0,RF) GET ADD OF NEXT BIN 49700013 LA RF,0(RJ,RG) UPDATE R5 TO POINT TO CHAIN ADDRESS 49800013 BXH RA,RI,M3B004 IF VRL - Y OR X+Y .GT. X+Y BRANCH 49900013 M3B001 BXLE RA,RK,M3B005 IF VRL .LE. 25L TAKE BRANCH 50000013 M3B006 MVC 0(256,RE),0(RG) MOVE 256 CHARS INTO OUTPUT BUFFER 50100013 AR RE,RN BUF ADD = CURRENT + 256 50200013 AR RG,RN RSA ADD = CURRENT + 256 50300013 BXH RA,RM,M3B006 IF VRL - 256 .GT. 256 BRANCH 50400013 M3B005 BCTR RA,0 VRL = VRL - 1 50500013 STC RA,*+5 PUT VRL IN LENGTH OF FOLLOWING MOVE 50600013 MVC 0(0,RE),0(RG) MOVE VRL CHARS INTO OUTPUT BUFFER 50700013 LA RB,1(0,RH) PUT UPDATED BINS USED COUNT IN R1 50800013 LM RG,RO,PPIWKARE RESTORE REGISTERS 6 THROUGH 14 50900013 B 0(0,RO) RETURN TO CALLER 51000013 DROP RO 51100013 EJECT 51200013 M3VALUES DC F'0' RH - 0 51300013 DC F'0' RI - 0 51400013 DC F'0' RJ - Y 51500013 DC F'0' RK - 0 51600013 DC F'256' RL - 256 51700013 DC F'-256' RM - -256 51800013 DC F'256' RN - 256 51900013 M3SAVE8 DC F'0' R8 SAVE AREA 52000013 M3XPLUSY DC F'0' X+Y 52100013 DIERAMA DSECT 52200013 COPY AMAMAIN 52300013 EJECT 52400013 SMPPI 52500013 END 52600013 ./ ADD SSI=02011720,SOURCE=1,NAME=IERABG TITLE 'IERABG - OS/360 SORT/MERGE - 360-SM-023 04/12/65' 00300013 *MODULE NAME:*** IERABG *** 00600013 SPACE 2 00900013 *STATUS: CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBG, A BLOCK/ 02100013 * DEBLOCK MODULE FOR FIXED LENGTH RECORDS IN THE MERGE PHASE$ IT 02400013 * ADJUSTS BUFFER POINTERS IN RUNNING PROGRAM FOR DASD OR TAPE. FOR 02700013 * DIRECT ACCESS DEVICE OR A FORWARD READ PASS, IT ALSO MAKES 03000013 * OVERLAYS IN THE BLOCK PORTION OF THE RUNNING PROGRAM. 03300013 * 03600013 SPACE 2 03900013 *USED AS A DSECT IN' 04200013 * 04500013 * N/A 04800013 * 05100013 *MACROS USED' 05400013 SPACE 1 05700013 * SMPPI 06000013 SPACE 2 06300013 *ENTRY POINTS: 06600013 SPACE 1 06900013 * ENTRY IERABG ENTRY FROM:IERRC9 07200013 * CALLING SEQUENCE- L RP,ASSG 07500013 * BR RP 07800013 SPACE 2 08100013 *INPUT: PPI FIELDS REFERENCED- 08400013 SPACE 1 08700013 * PPISRTBL 09000013 * PPIRCDL2 09300013 * PPILAB07 09600013 * PPILAB04 09900013 * PPISW1 10200013 SPACE 2 10500013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 10800013 SPACE 1 11100013 * PPICOUNT-SET TO 0 11400013 SPACE 1 11700013 * INITIALIZES CONSTANTS AND CODE IN RUNNING PROGRAM. 12000013 SPACE 2 12300013 *EXTERNAL ROUTINES: 12600013 SPACE 1 12900013 * N/A 13200013 SPACE 2 13500013 *EXTERNAL PARAMETERS: 13800013 SPACE 1 14100013 * PPIBLK2-ADDRESS OF RUNNING PROGRAM DSECT 14400013 SPACE 2 14700013 *EXITS: NORMAL 15000013 SPACE 1 15300013 * IERRC9-RETURN TO LOAD MODULE BR RO 15600013 * 15900013 SPACE 2 16200013 *EXITS: ERROR 16500013 SPACE 1 16800013 * N/A 17100013 * 17400013 SPACE 2 17700013 *TABLES/WORK AREAS: 18000013 SPACE 1 18300013 * N/A 18600013 SPACE 2 18900013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 19200013 SPACE 2 19500013 *NOTES: 19800013 SPACE 1 20100013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS LESS THAN OR EQUAL TO 20400013 * 256 BYTES LONG. 20700013 EJECT 21000013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 21300013 SPACE 1 21600013 RA EQU 0 CONTENTS IN-N/A 21900013 * USE-N/A 22200013 * CONTENTS OUT-N/A 22500013 RB EQU 1 CONTENTS IN-N/A 22800013 * 23100013 * USE-N/A 23400013 * CONTENTS OUT-N/A 23700013 RC EQU 2 CONTENTS IN-N/A 24000013 * USE-PART OF INSTRUCTION CONSTANT 24300013 * CONTENTS OUT-N/A 24600013 RD EQU 3 CONTENTS IN-N/A 24900013 * USE-PART OF INSTRUCTION CONSTANT 25200013 * CONTENTS OUT-N/A 25500013 RE EQU 4 CONTENTS IN-N/A 25800013 * USE-DSECT BASE REG 26100013 * CONTENTS OUT-N/A 26400013 RF EQU 5 CONTENTS IN-N/A 26700013 * USE-WORK REG 27000013 * CONTENTS OUT-N/A 27300013 RG EQU 6 CONTENTS IN-N/A 27600013 * USE-WORK REG 27900013 * CONTENTS OUT-N/A 28200013 RH EQU 7 CONTENTS IN-N/A 28500013 * USE-N/A 28800013 * CONTENTS OUT-N/A 29100013 RI EQU 8 CONTENTS IN-N/A 29400013 * USE-WORK REG 29700013 * CONTENTS OUT-N/A 30000013 RJ EQU 9 CONTENTS IN-N/A 30300013 * USE-N/A 30600013 * CONTENTS OUT-N/A 30900013 RK EQU 10 CONTENTS IN-N/A 31200013 * USE-N/A 31500013 * CONTENTS OUT-N/A 31800013 RL EQU 11 CONTENTS IN-N/A 32100013 * USE-MODULE BASE REG 32400013 * CONTENTS OUT-N/A 32700013 RM EQU 12 CONTENTS IN-N/A 33000013 * USE-N/A 33300013 * CONTENTS OUT-N/A 33600013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 33900013 * USE- PPI REFERENCE,REGISTER SAVE 34200013 * AREA 34500013 * CONTENTS OUT- ASSRESS OF PPI 34800013 RO EQU 14 CONTENTS IN-ADDRS OF IERRC9 35100013 * USE-RETURN REG 35400013 * CONTENTS OUT-ADDRSOF IERRC9 35700013 RP EQU 15 CONTENTS IN-MOCULE ADDRS 36000013 * USE-SET MODULE BASE REG 36300013 * CONTENTS OUT-MODULE ADDRS 36600013 SPACE 2 36900013 *START OF MODULE CODE PROPER: 37200013 SPACE 2 37500013 IERABG CSECT 37800013 USING *,RL 38100013 USING DIERRBG,RE 38400013 USING IERRCA,RN 38700013 IERMBG LR RL,RP 39000013 L RE,PPIBLK2+4 SET DSECT BASE REG 39300013 SPACE 3 39600013 SR RI,RI ZERO OUT RECORD COUNT IN PPI 39900013 ST RI,PPICOUNT 40200013 LH RF,PPISRTBL SET OUTPUT BLK CNT = SORT BLOCKING 40500013 ST RF,KOBLKCNT 40800013 LH RF,PPIRCDL2 SET RCD LENGTH - 1 IN 41100013 BCTR RF,0 IN-LINE MOVE INSTR 41400013 SPACE 1 41700013 STC RF,RBG2025+1 42000013 STC RF,KRBGMOD1+1 42300013 L RG,KMASK 42600013 N RG,PPILAB07 SET RG = OUTPUT BUFFER SIZE 42900013 ST RG,KBUFSIZ SET BUFF SIZE IN RUNNING PROGRAM 43200013 L RF,PPILAB04 SET RF=OUTPUT BUFFER ADDRS 43500013 TM PPISW1+1,X'40' TAPE OR DIRECT ACCESS 43800013 LA RF,0(0,RF) DELETE HIGH ORDER BYTE. 44100013 BC 8,ABG2020 DIRECT ACCESS 44400013 SPACE 1 44700013 TM PPISW1+6,X'10' TAPE-IS BLOCK FRWD SW ON 45000013 BC 1,ABG2020 YES 45300013 SPACE 1 45600013 ABG2010 AR RF,RG NO-SET CONSTANTS 45900013 ST RF,KBLKPTR SET BLOCK POINTER AND 46200013 ST RF,KIBLKPTR INITIAL BLOCK POINTER 46500013 BR RO RETURN TO LOAD MODULE 46800013 SPACE 2 47100013 *MAKE OVERLAYS IN RUNNING PROGRAM FOR BLOCKING FORWARD. 47400013 SPACE 1 47700013 ABG2020 LA RG,4 ADJUST FOR EOS INDICATION 48000013 MVC RBG2020(14),KRBGMOD1 OVERLAY INSTRUCTIONS IN RUNNING 48300013 * PROG. TO MOVE RCD BEFORE BLK PTR 48600013 * IS INCREMENTED 48900013 MVC RBG2053(4),KRBGMOD2 LOAD INITIAL 49200013 MVC RBG2090(4),KRBGMOD2 BLOCK POINTER 49500013 B ABG2010 49800013 SPACE 2 50100013 *LIST OF CONSTANTS USED BY MODULE: 50400013 SPACE 1 50700013 DS 0F 51000013 KMASK DC X'00FFFFFF' 51300013 DROP RL 51600013 DROP RE 51900013 USING DIERRBG,RL 52200013 KRBGMOD1 MVC 0(1,RC),0(RD) MOVE WINNER RCD TO OUTPUT BUFFER 52500013 AH RC,PPIRCDL2 INCREMENT BLK PTR BY RCD LENGTH 52800013 ST RC,KBLKPTR 53100013 KRBGMOD2 L RC,KIBLKPTR LOAD INITIAL POINTER 53400013 EJECT 53700013 DIERRBG DSECT 54000013 *DUMMY RUNNING PROGRAM 54300013 IERDB2 B RBG2080 EOS ENTRY 54600013 B RBG2040 READ ENTRY 54900013 B RBG2060 WRITE ENTRY 55200013 B *+4 PRIMING ENTRY (REQUIRES NO ACTION 55500013 * IN THIS MODULE) 55800013 *NORMAL ENTRY FROM MERGE, RD CONTAINS WINNER ADDRESS 56100013 L RE,KOBLKCNT SET RE=OUTPUT BLOCK COUNT 56400013 SPACE 1 56700013 *BLOCK WINNER RECORD 57000013 SPACE 1 57300013 SR RA,RA 57600013 CR RE,RA IS BLOCK COUNT = 0 57900013 BC 12,RBG2050 YES-TAKE BRANCH, BLOCK IS FULL 58200013 SPACE 1 58500013 RBG2010 BCTR RE,0 NO-DECREMENT BLK CNT BY 1 58800013 ST RE,KOBLKCNT 59100013 L RC,KBLKPTR 59400013 SPACE 1 59700013 *FOR DISK THE FOLLOWING 3 INSTRUCTIONS ARE OVERLAID SO THAT THE 60000013 *RECORD IS MOVED TO THE OUTPUT BUFFER BEFORE THE BLOCK POINTER IS 60300013 *INCREMENTED 60600013 SPACE 1 60900013 RBG2020 SH RC,PPIRCDL2 DECREMENT BLK PTR BY RCD LENGTH 61200013 ST RC,KBLKPTR 61500013 RBG2025 MVC 0(1,RC),0(RD) MOVE WINNER RCD TO OUTPUT BUFFER 61800013 SPACE 1 62100013 L RG,PPICOUNT 62400013 LA RG,1(RG) INCREMENT RCD COUNT BY 1 62700013 ST RG,PPICOUNT 63000013 SPACE 1 63300013 *DEBLOCK NEW RECORD FROM SAME FILE AS WINNER RCD 63600013 SPACE 1 63900013 LR RC,RD SAVE WINNER ADDRS 64200013 SRL RD,24 ACCESS INCREMENT 64500013 L RH,PPISBLCT SET RH=START ADDRS OF BLK CTRS 64800013 L RI,0(RD,RH) SET RI=BLK CNT FOR THIS BUFFER 65100013 BCTR RI,0 DECREMENT BLK CNT BY 1 65400013 SR RA,RA 65700013 CR RI,RA IS THIS BLK CNT = ZERO 66000013 BC 12,RBG2030 YES-TAKE BRANCH, BLK IS EMPTY 66300013 SPACE 1 66600013 ST RI,0(RD,RH) NO-STORE NEW BLK CNT 66900013 LR RD,RC INCREMENT WINNER BY RCD LENGTH TO 67200013 AH RD,PPIRCDL2 GET NEXT RCD 67500013 L RL,PPINETM+4 EXIT TO MERGE 67800013 B 8(0,RL) 68100013 EJECT 68400013 *INPUT BUFFER IS EMPTY - LINK TO READ ROUTINE TO REFILL BUFFER 68700013 SPACE 1 69000013 RBG2030 L RH,PPIBDSVA SET RH=ADDR OF BUFFER TABLE 69300013 L RC,0(RD,RH) ACCESS ADDR OF EMPTY BUFFER 69600013 L RL,PPIRD+4 EXIT TO READ RTN 69900013 B 8(0,RL) 70200013 SPACE 2 70500013 *RETURN FROM READ ROUTINE - 70800013 * RB = BLOCK COUNT 71100013 * RC = BUFFER ADDRS (FOR DEBLOCKING) 71400013 * RD = INCREMENT 71700013 * RE = BUFFER ADDRS (FOR READING) 72000013 SPACE 1 72300013 RBG2040 L RH,PPIBDSVA SET RH = ADDR OF BUFFER TABLE 72600013 ST RE,0(RD,RH) STORE BUFF ADDR IN TABLE 72900013 L RF,PPISBLCT SET RF = START ADDRS OF BLK CNTRS 73200013 ST RB,0(RD,RF) STORE BLK CNT IN BLK CNT TABLE 73500013 SLL RD,24 ADD INCR TO NEXT RCD 73800013 AR RD,RC 74100013 L RL,PPINETM+4 EXIT TO MERGE 74400013 B 8(0,RL) 74700013 SPACE 4 75000013 *OUTPUT BUFFER IS FULL - LINK TO WRITE RTN TO EMPTY BUFFER 75300013 SPACE 1 75600013 RBG2050 L RB,KBUFSIZ SET RB=NO. BYTES IN BUFFER 75900013 RBG2053 L RC,KBLKPTR SET RC=BUFFER ADRS 76200013 * FOR DISK, LOAD INITIAL BLK PTR 76500013 SH RC,K4 ADJUST BY 4 FOR EOS INDICATION 76800013 L RL,PPIWRT+4 EXIT TO WRITE RTN 77100013 B 8(0,RL) 77400013 SPACE 2 77700013 *RETURN FROM WRITE ROUTINE 78000013 * RC = ADDRESS OF EMPTY BUFFER 78300013 SPACE 1 78600013 RBG2060 LH RE,PPISRTBL RESET OUTPUT BLK CNT TO SORT BLKNG 78900013 ST RC,KIBLKPTR SAVE INITIAL PTR 79200013 ST RC,KBLKPTR SET BLK PTR 79500013 B RBG2010 79800013 SPACE 4 80100013 *END OF SEQUENCE - WRITE THIS BUFFER, RESET POINTERS TO REUSE THIS 80400013 *BUFFER THE NEXT TIME THROUGH 80700013 SPACE 1 81000013 RBG2080 LA RD,4 SET INDICATION FOR NOT FINAL EOS 81300013 L RB,KBUFSIZ 81600013 L RE,KOBLKCNT CALCULATE NO. OF BYTES TO BE 81900013 MH RE,PPIRCDL2 WRITTEN 82200013 SR RB,RE 82500013 LH RE,PPISRTBL RESET OUTPUT BLOCKING TO SORT 82800013 ST RE,KOBLKCNT BLOCKING 83100013 RBG2090 L RC,KBLKPTR SET RC = BUFFER ADDRS 83400013 * FOR DISK, LOAD INITIAL BLK PTR 83700013 SH RC,K4 84000013 L RF,KIBLKPTR 84300013 ST RF,KBLKPTR SET BLK PTR 84600013 L RL,PPIWRT+4 EXIT TO WRITE 84900013 B 4(0,RL) 85200013 SPACE 2 85500013 *CONSTANTS 85800013 SPACE 1 86100013 KBLKPTR DS 1F BLOCK POINTER 86400013 KIBLKPTR DS 1F INITIAL BLOCK POINTER 86700013 KOBLKCNT DS 1F OUTPUT BLOCK COUNT 87000013 KBUFSIZ DS 1F BUFFER SIZE WHEN FULL 87300013 K4 DC X'0004' 87600013 EJECT 87900013 SMPPI 88200013 END 88500013 ./ ADD SSI=02011600,SOURCE=1,NAME=IERABH TITLE 'IERABH - OS/360 SORT/MERGE - 360-SM-023 04/12/65' 00300013 *MODULE NAME:*** IERABH *** 00600013 SPACE 2 00900013 *STATUS: CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBH, A BLOCK/ 02100013 * DEBLOCK ROUTINE FOR FIXED LENGTH RECORDS GREATER THAN 256 BYTES IN 02400013 * THE MERGE PHASE. IT ADJUSTS BUFFER POINTERS IN THE RUNNING 02700013 * PROGRAM. FOR DIRECT ACCESS DEVICES BLOCKING FOR A FORWARD READ 03000013 * PASS, IT ALSO MAKES OVERLAYS IN THE BLOCK PORTION OF THE RUNNING 03300013 * PROGRAM 03600013 * 03900013 SPACE 2 04200013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 04500013 * 04800013 * N/A 05100013 * 05400013 *MACROS USED' 05700013 SPACE 1 06000013 * SMPPI 06300013 SPACE 2 06600013 *ENTRY POINTS: 06900013 SPACE 1 07200013 * ENTRY IERABH ENTRY FROM:IERRC9 07500013 * CALLING SEQUENCE- L RP,ASSG 07800013 * BR RP 08100013 SPACE 2 08400013 *INPUT: PPI FIELDS REFERENCED- 08700013 SPACE 1 09000013 * PPISRTBL 09300013 * PPILAB07 09600013 * PPILAB04 09900013 * PPISW1 10200013 SPACE 2 10500013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 10800013 SPACE 1 11100013 * PPICOUNT-SET TO 0 11400013 SPACE 1 11700013 * CONSTANTS AND CODE IN RUNNING PROGRAM ARE INITIALIZED. 12000013 SPACE 2 12300013 *EXTERNAL ROUTINES: 12600013 SPACE 1 12900013 * N/A 13200013 SPACE 2 13500013 *EXTERNAL PARAMETERS: 13800013 SPACE 1 14100013 * PPIBLK2-ADDRS FOR DSECT 14400013 SPACE 2 14700013 *EXITS: NORMAL 15000013 SPACE 1 15300013 * IERRC9 BR RO RETURN TO LOAD MODULE 15600013 SPACE 2 15900013 *EXITS: ERROR 16200013 SPACE 1 16500013 * N/A 16800013 SPACE 2 17100013 *TABLES/WORK AREAS: 17400013 SPACE 1 17700013 * N/A 18000013 SPACE 2 18300013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 18600013 SPACE 2 18900013 *NOTES: 19200013 SPACE 1 19500013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS GREATER THAN 256 BYTES 19800013 EJECT 20100013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 20400013 SPACE 1 20700013 RA EQU 0 CONTENTS IN-N/A 21000013 * USE-N/A 21300013 * CONTENTS OUT-N/A 21600013 RB EQU 1 CONTENTS IN-N/A 21900013 * USE-N/A 22200013 * CONTENTS OUT-N/A 22500013 RC EQU 2 CONTENTS IN-N/A 22800013 * USE-IN ADDRESS CONSTANT 23100013 * CONTENTS OUT-N/A 23400013 RD EQU 3 CONTENTS IN-N/A 23700013 * USE-N/A 24000013 * CONTENTS OUT-N/A 24300013 RE EQU 4 CONTENTS IN-N/A 24600013 * USE-DSECT BASE REG 24900013 * CONTENTS OUT-N/A 25200013 RF EQU 5 CONTENTS IN-N/A 25500013 * USE-WORK REG 25800013 * CONTENTS OUT-N/A 26100013 RG EQU 6 CONTENTS IN-N/A 26400013 * USE-WORK REG. 26700013 * CONTENTS OUT-N/A 27000013 RH EQU 7 CONTENTS IN-N/A 27300013 * USE-N/A 27600013 * CONTENTS OUT-N/A 27900013 RI EQU 8 CONTENTS IN-N/A 28200013 * USE-WORK REG 28500013 * CONTENTS OUT-N/A 28800013 RJ EQU 9 CONTENTS IN-N/A 29100013 * USE-N/A 29400013 * CONTENTS OUT-N/A 29700013 RK EQU 10 CONTENTS IN-N/A 30000013 * USE-N/A 30300013 * CONTENTS OUT-N/A 30600013 RL EQU 11 CONTENTS IN-N/A 30900013 * USE-MODULE BASE REG 31200013 * CONTENTS OUT-N/A 31500013 RM EQU 12 CONTENTS IN-N/A 31800013 * USE-N/A 32100013 * CONTENTS OUT-N/A 32400013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 32700013 * USE-PPT REFERENCE,REGISTER SAVE 33000013 * AREA 33300013 * CONTENTS OUT- ADDRESS OF PPI 33600013 RO EQU 14 CONTENTS IN LOAD MODULE ADDRS 33900013 * USE-RETURN REG 34200013 * CONTENTS OUT-LOAD MODULE ADDRS 34500013 RP EQU 15 CONTENTS IN-MODULE ADDRS 34800013 * USE-SET BASE REG 35100013 * CONTENTS OUT-MODULE ADDRESS 35400013 SPACE 2 35700013 *START OF MODULE CODE PROPER: 36000013 SPACE 2 36300013 IERABH CSECT 36600013 USING *,RL 36900013 USING DIERRBH,RE 37200013 USING IERRCA,RN 37500013 IERMBG LR RL,RP 37800013 L RE,PPIBLK2+4 SET DSECT BASE REG 38100013 SPACE 3 38400013 SR RI,RI 38700013 ST RI,PPICOUNT ZERO OUT RCD COUNT IN PPI 39000013 LH RF,PPISRTBL SET OUTPUT BLK CNT=SORT BLKING 39300013 ST RF,KOBLKCNT 39600013 L RG,KMASK 39900013 N RG,PPILAB07 SET RG=OUTPUT BUFFER SIZE 40200013 ST RG,KBUFSIZ SET BUFF SIZE IN RUNNING PROG. 40500013 L RF,PPILAB04 SET RF=OUTPUT BUFFER ADDRS 40800013 LA RF,0(0,RF) DELETE HIGH ORDER BYTE. 41100013 TM PPISW1+1,X'40' TAPE OR DIRECT ACCESS 41400013 BC 8,ABH2020 DIRECT ACCESS 41700013 SPACE 1 42000013 TM PPISW1+6,X'10' TAPE-IS BLOCK FORWARD SW ON 42300013 BC 1,ABH2020 YES 42600013 SPACE 1 42900013 ABH2010 AR RF,RG NO-SET CONSTANTS 43200013 ST RF,KBLKPTR SET BLOCK POINTER AND 43500013 ST RF,KIBLKPTR INITIAL BLOCK POINTER 43800013 BR RO RETURN TO LOAD MODULE 44100013 SPACE 2 44400013 *MAKE OVERLAYS IN RUNNING PROGRAM FOR BLOCKING FORWARD. 44700013 SPACE 1 45000013 ABH2020 LA RG,4 ADJUST FOR EOS INDICATION 45300013 MVC RBH2020(18),KRBHMOD1 OVERLAY INSTR IN RUNNING PROG 45600013 * SO THAT RCD WILL BE MOVED TO 45900013 * OUTPUT BUFFER BEFORE BLK PTR IS 46200013 * INCREMENTED 46500013 MVC RBH2053(4),KRBHMOD2 LOAD INITIAL 46800013 MVC RBH2090(4),KRBHMOD2 BLOCK POINTER 47100013 B ABH2010 47400013 SPACE 2 47700013 *LIST OF CONSTANTS USED BY MODULE: 48000013 SPACE 1 48300013 DS 0F 48600013 KMASK DC X'00FFFFFF' 48900013 DROP RL 49200013 DROP RE 49500013 USING DIERRBH,RL 49800013 KRBHMOD1 LR RE,RD 50100013 LR RF,RC 50400013 L RP,PPIBDSVA+8 LINK TO MOVE LIST TO MOVE RCD TO 50700013 BALR RO,RP OUTPUT BUFFER 51000013 AH RC,PPIRCDL2 INCREMENT BLK PTR BY RCD LENGTH 51300013 ST RC,KBLKPTR 51600013 KRBHMOD2 L RC,KIBLKPTR LOAD PARAM REG WITH BUFFER ADDRS 51900013 EJECT 52200013 SPACE 2 52500013 *** IERRBH *** 52800013 *DUMMY RUNNING PROGRAM 53100013 SPACE 2 53400013 DIERRBH DSECT 53700013 IERDB2 B RBH2080 EOS ENTRY 54000013 B RBH2040 READ ENTRY 54300013 B RBH2060 WRITE ENTRY 54600013 B *+4 PRIMING ENTRY (REQUIRES NO ACTION 54900013 * IN THIS MODULE 55200013 L RE,KOBLKCNT SET RE = OUTPUT BLOCK COUNT 55500013 * NORMAL ENTRY FROM MERGE 55800013 SR RA,RA 56100013 CR RE,RA IS BLOCK COUNT = ZERO 56400013 BC 12,RBH2050 YES-TAKE BRANCH, BLOCK IS FULL 56700013 SPACE 1 57000013 RBH2010 BCTR RE,0 NO-DECREMENT BLK CNT BY 1 57300013 ST RE,KOBLKCNT 57600013 L RC,KBLKPTR 57900013 SPACE 1 58200013 *THE FOLLOWING 6 INSTRUCTIONS ARE OVERLAID FOR DISK SO THAT THE 58500013 *WINNER RECORD IS MOVED TO THE OUTPUT BUFFER AND THEN THE BLOCK 58800013 *POINTER IS INCREMENTED 59100013 SPACE 1 59400013 RBH2020 SH RC,PPIRCDL2 DECREMENT BLK PTR BY RCD LENGTH 59700013 ST RC,KBLKPTR 60000013 LR RE,RD SET RE=RCD ADDRS FOR MOVE RTN 60300013 LR RF,RC SET RC = BUFFER ADDRS 60600013 L RP,PPIBDSVA+8 LINK TO MOVE LIST - MOVE WINNER 60900013 BALR RO,RP TO OUTPUT BUFFER 61200013 SPACE 2 61500013 L RG,PPICOUNT 61800013 LA RG,1(RG) INCREMENT RCD COUNT BY 1 62100013 ST RG,PPICOUNT 62400013 SPACE 1 62700013 *DEBLOCK NEW RECORD FROM SAME FILE AS WINNER RECORD 63000013 SPACE 1 63300013 LR RC,RD SAVE WINNER ADDRS 63600013 SRL RD,24 ACCESS INCREMENT 63900013 L RH,PPISBLCT SET RH=START ADDRS OF BLK CTRS 64200013 L RI,0(RD,RH) SET RI=BLK CNT FOR THIS BUFFER 64500013 BCTR RI,0 DECREMENT BLK CNT BY 1 64800013 SR RA,RA 65100013 CR RI,RA IS THIS BLK CNT = ZERO 65400013 BC 12,RBH2030 YES-TAKE BRANCH, BLK IS EMPTY 65700013 SPACE 1 66000013 ST RI,0(RD,RH) NO-STORE NEW BLK CNT 66300013 LR RD,RC INCREMENT WINNER BY RCD LENGTH TO 66600013 AH RD,PPIRCDL2 GET NEXT RECORD 66900013 L RL,PPINETM+4 EXIT TO MERGE 67200013 B 8(0,RL) 67500013 EJECT 67800013 *INPUT BUFFER IS EMPTY - LINK TO READ ROUTINE TO REFILL BUFFER 68100013 SPACE 1 68400013 RBH2030 L RH,PPIBDSVA SET RH=ADDR OF BUFFER TABLE 68700013 L RC,0(RD,RH) ACCESS ADDR OF EMPTY BUFFER 69000013 L RL,PPIRD+4 EXIT TO READ RTN 69300013 B 8(RL) 69600013 SPACE 2 69900013 *RETURN FROM READ ROUTINE - 70200013 * RB = BLOCK COUNT 70500013 * RC = BUFFER ADDRESS (FOR DEBLOCKING) 70800013 * RD = INCREMENT 71100013 * RE = BUFFER ADDRESS (FOR READING) 71400013 SPACE 1 71700013 RBH2040 L RH,PPIBDSVA SET RH = ADDR OF BUFFER TABLE 72000013 ST RE,0(RD,RH) STORE BUFF ADDR IN TABLE 72300013 L RF,PPISBLCT SET RF = START ADDRS OF BLK CNTRS 72600013 ST RB,0(RD,RF) STORE BLK CNT IN BLK CNT TABLE 72900013 SLL RD,24 ADD INCR TO NEXT RCD 73200013 AR RD,RC 73500013 L RL,PPINETM+4 EXIT TO MERGE 73800013 B 8(0,RL) 74100013 SPACE 3 74400013 *OUTPUT BUFFER IS FULL - LINK TO WRITE RTN TO EMPTY BUFFER 74700013 SPACE 1 75000013 RBH2050 L RB,KBUFSIZ SET RB=NO. BYTES IN BUFFER 75300013 RBH2053 L RC,KBLKPTR SET RC = BUFFER ADDRS 75600013 * FOR DISK THE INITIAL BLK PTR IS 75900013 * LOADED 76200013 SH RC,K4 ADJUST BY 4 FOR EOS INDICATION 76500013 L RL,PPIWRT+4 EXIT TO WRITE RTN 76800013 B 8(RL) 77100013 SPACE 2 77400013 *RETURN FROM WRITE ROUTINE 77700013 * RC = ADDRESS OF EMPTY BUFFER 78000013 SPACE 1 78300013 RBH2060 LH RE,PPISRTBL RESET OUTPUT BLK CNT TO SORT BLKNG 78600013 ST RC,KIBLKPTR SAVE INITIAL POINTER 78900013 ST RC,KBLKPTR SET BLK PTR 79200013 B RBH2010 79500013 SPACE 3 79800013 *END OF SEQUENCE - WRITE THIS BUFFER, RESET POINTERS TO REUSE THIS 80100013 *BUFFER THE NEXT TIME THROUGH 80400013 SPACE 1 80700013 RBH2080 LA RD,4 SET INDICATION FOR NOT FINAL EOS 81000013 L RB,KBUFSIZ 81300013 L RE,KOBLKCNT CALCULATE NO. OF BYTES TO BE 81600013 MH RE,PPIRCDL2 WRITTEN 81900013 SR RB,RE 82200013 *RB = BUFFER SIZE WHEN FULL - (REMAINING BLOCK COUNT * RCD LENGTH) 82500013 LH RE,PPISRTBL RESET OUTPUT BLOCKING TO SORT 82800013 ST RE,KOBLKCNT BLOCKING 83100013 RBH2090 L RC,KBLKPTR SET RC = BUFFER ADDRS 83400013 * FOR DISK, THE INITIAL BLK PTR IS 83700013 * LOADED 84000013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 84300013 L RF,KIBLKPTR 84600013 ST RF,KBLKPTR SET BLK PTR 84900013 L RL,PPIWRT+4 EXIT TO WRITE ON EOS 85200013 B 4(RL) 85500013 SPACE 2 85800013 *CONSTANTS 86100013 SPACE 1 86400013 KBLKPTR DS 1F BLOCK POINTER 86700013 KIBLKPTR DS 1F INITIAL BLOCK POINTER 87000013 KOBLKCNT DS 1F OUTPUT BLOCK COUNT 87300013 KBUFSIZ DS 1F BUFFER SIZE WHEN FULL 87600013 K4 DC X'0004' 87900013 SPACE 2 88200013 EJECT 88500013 SMPPI 88800013 END 89100013 ./ ADD SSI=02011600,SOURCE=1,NAME=IERABI TITLE ' IERABI - OS/360 SORT/MERGE - 360S-SM-023 05/06/65 ' 00200013 *MODULE NAME *** IERABI *** 00400013 SPACE 2 00600013 SPACE 2 00800013 *STATUS: CHANGE LEVEL 000 01000013 SPACE 2 01200013 *MODULE FUNCTION/OPERATION--ASSIGNMENT FOR THE RUNNING PROGRAM IERRBI, 01400013 * BLOCK,PHASE 2. THIS MODULE TESTS WHETHER IT IS A DISK SORT OR 01600013 * TAPE SORT AND OVERLAYS THE RUNNING PROGRAM WHEREVER NECESSARY. 01800013 * IT ALSO SETS WORK AREAS AND CONSTANTS TO SPECIFIC VALUES IN THE 02000013 * RUNNING PROGRAM.THE ASSIGNMENT PROGRAM UTILIZES THE DISK SORT 02200013 * ROUTINE FOR THE FORWARD BLOCK TAPE SORT. 02400013 SPACE 1 02600013 * THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A PARTICULAR 02800013 * INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER SET. 03000013 SPACE 2 03200013 SPACE 2 03400013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 03600013 * 03800013 * N/A 04000013 * 04200013 *MACROS USED' 04400013 SPACE 1 04600013 * SMPPI 04800013 SPACE 2 05000013 *ENTRY POINTS: 05200013 SPACE 1 05400013 * ENTRY IERMBG ENTRY FROM: LOAD MODULE, IERRC9 05600013 * CALLING SEQUENCE- 05800013 * LOAD EP=IERABI,DCB= 06000013 * LR RP,RA 06200013 * BALR RO,RP 06400013 SPACE 2 06600013 *INPUT: PPI FIELDS REFERENCED- 06800013 SPACE 1 07000013 * PPILAB04 PPILAB07 07200013 * PPISW1 07400013 SPACE 2 07600013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 07800013 SPACE 1 08000013 * CONSTANTS AND CODE IN THE RUNNING PROGRAM ARE INITIALIZED 08200013 SPACE 2 08400013 *EXTERNAL ROUTINES: 08600013 SPACE 1 08800013 * NONE 09000013 SPACE 2 09200013 *EXTERNAL PARAMETERS: 09400013 SPACE 1 09600013 * NONE 09800013 SPACE 2 10000013 *EXITS: NORMAL 10200013 SPACE 1 10400013 * BR RO - RETURN TO LOAD MODULE, IERRC9 10600013 SPACE 2 10800013 *EXITS: ERROR 11000013 SPACE 1 11200013 * NONE 11400013 SPACE 2 11600013 *TABLES/WORK AREAS: 11800013 SPACE 1 12000013 * NONE 12200013 SPACE 2 12400013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 12600013 SPACE 2 12800013 *NOTES: 13000013 SPACE 1 13200013 * THIS MODULE IS USED FOR VARIABLE LENGTH RECORDS WITHOUT USER EXITS 13400013 * IN THE MERGE PHASE. 13600013 SPACE 2 13800013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 14000013 SPACE 1 14200013 RA EQU 0 USE-NOT USED 14400013 RB EQU 1 USE-NOT USED 14600013 RC EQU 2 USE-NOT USED 14800013 RD EQU 3 USE-NOT USED 15000013 RE EQU 4 USE-NOT USED 15200013 RF EQU 5 CONTENTS IN- N/A 15400013 * USE- WORK REGISTER 15600013 * CONTENTS OUT- N/A 15800013 RG EQU 6 USE-NOT USED 16000013 RH EQU 7 USE-NOT USED 16200013 RI EQU 8 USE-NOT USED 16400013 RJ EQU 9 USE-NOT USED 16600013 RK EQU 10 CONTENTS IN- N/A 16800013 * USE- BASE REGISTER FOR DSECT OF 17000013 * RUNNING PROGRAM 17200013 * CONTENTS OUT- N/A 17400013 RL EQU 11 CONTENTS IN- N/A 17600013 * USE- BASE REGISTER FOR THIS MODULE 17800013 * CONTENTS OUT- N/A 18000013 RM EQU 12 USE-NOT USED 18200013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 18400013 * USE- PPI REFERENCE,REGISTER SAVE 18600013 * AREA 18800013 * CONTENTS OUT- ADDRESS OF PPI 19000013 RO EQU 14 CONTENTS IN - RETURN ADDRESS IN 19200013 * IERRC9 19400013 * USE- NOT USED 19600013 * CONTENTS OUT- RETURN ADDRESS IN 19800013 * IERRC9 20000013 RP EQU 15 CONTENTS IN- BASE ADDRESS OF THIS 20200013 * MODULE 20400013 * USE- NOT USED 20600013 * CONTENTS OUT- N/A 20800013 SPACE 2 21000013 *START OF MODULE CODE PROPER: 21200013 SPACE 2 21400013 IERABI CSECT 21600013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 21800013 USING IERRBID,RK ADDR OF RUNNING PROGRAM DUMMY MOD 22000013 USING IERRCA,RN PPI COMMON MODULE BASE REGISTER 22200013 IERMBG LR RL,RP LOAD MODULE BASE REG 22400013 L RK,PPIBLK2+4 LOAD ADDRESS OF RUNNING PROGRAM 22600013 MVC WBLKCCNT,KEIGHT SET BLOCK CHARACTER CTR TO 8 22800013 L RF,PPILAB04 LOAD ADDR OF OUTPUT BUFFER 1 23000013 LA RF,0(0,RF) DELETE HIGH ORDER BYTE. 23200013 TM PPISW1+1,X'40' TAPE OR DIRECT ACCESS 23400013 BZ ABDISK DIRECT ACCESS 23600013 SPACE 1 23800013 SPACE 1 24000013 * TEST FOR FORWARD BLOCK TAPE SORT 24200013 SPACE 1 24400013 TM PPISW1+6,X'10' TEST PPI FOR FORWARD BLOCK BIT 24600013 BC 1,ABDISK IF BIT IS ON,BRANCH TO DISK ROUTINE 24800013 SPACE 2 25000013 * TAPE SORT ROUTINE 25200013 SPACE 1 25400013 AH RF,PPILAB07+2 ADD ROUNDED LENGTH OF OUTPUT BLOCK 25600013 ST RF,WLSTPTR OUTPUT BLOCK ENDING ADDR+1 25800013 ST RF,WLSTPTRD CURRENT OUTPUT BLK ENDING ADDR+1 26000013 BR RO RETURN TO LOAD MODULE 26200013 SPACE 2 26400013 * DISK SORT ROUTINE 26600013 SPACE 1 26800013 ABDISK LA RF,8(0,RF) EQUALS OUTPUT BLOCK STRTG ADDR+8 27000013 ST RF,WLSTPTR STORE IN R.P. AS OUTPUT BLK LIST PTR 27200013 ST RF,WLSTPTRD CURRENT OUTPUT BLOCK STRTG ADDR+8 27400013 MVC RBSUBRLT(2),KNOP NOP R.P. TAPE INSTR 27600013 MVC RBSUBRLD(2),KNOP NOP R.P. TAPE INSTR 27800013 MVC RBLSTPTR(4),KON1 OVERLAY R.P. INSTR WITH KON1 28000013 MVC RBEOS(4),KON2 OVERLAY R.P. INSTR WITH KON2 28200013 BR RO RETURN TO LOAD MODULE 28400013 SPACE 2 28600013 * LIST OF CONSTANTS USED BY THE MODULE 28800013 SPACE 1 29000013 KNOP DC X'4700' NOP 29200013 DROP RK 29400013 USING IERRBID,RL 29600013 KON1 L RC,WLSTPTRD 29800013 KON2 L RE,WLSTPTRD 30000013 USING IERABI,RL 30200013 USING IERRBID,RK 30400013 EJECT 30600013 TITLE ' IERRBI - OS/360 SORT/MERGE - 360S-SM-023 05/06/65 ' 30800013 * MODULE NAME *** IERRBI *** 31000013 SPACE 2 31200013 * MODULE DEFINITION ** THIS MODULE HANDLES THE DEBLOCKING AND 31400013 * BLOCKING OF VARIABLE LENGTH RECORDS. THE BUFFERS ARE FILLED 31600013 * BY THE READ MODULE AND EMPTIED BY THE WRITE MODULE USING EXCP 31800013 * MACROS. THIS MODULE MOVES THE VARIABLE LENGTH RECORD FROM THE 32000013 * INPUT BLOCK DIRECTLY TO THE OUTPUT BLOCK. 32200013 SPACE 1 32400013 * THE MERGE NETWORK INITIALLY PASSES A WINNER TO THE BLOCK SIDE OF 32600013 * THIS MODULE. BLOCK SEES IF IT CAN FIT IN THE OUTPUT BLOCK AND IF 32800013 * IT CAN'T, WRITES THE BLOCK THEN MOVES THE RECORD. IT THEN 33000013 * BRANCHES TO THE DEBLOCK SIDE. DEBLOCK DEBLOCKS ANOTHER RECORD 33200013 * FROM THE SAME FILE AS THE WINNER, TESTING FIRST IF THAT BLOCK 33400013 * IS EMPTY. IF IT IS, DEBLOCK READS ANOTHER BLOCK FROM THE SAME 33600013 * FILE. DEBLOCK THEN PASSES THE ADDRESS OF THE NEW RECORD TO THE 33800013 * MERGE NETWORK. THE NETWORK FINDS ANOTHER WINNER AND THE PROCESS 34000013 * IS REPEATED. 34200013 SPACE 2 34400013 * FLOWCHARTS --- B5,B7 34600013 SPACE 2 34800013 * START OF MODULE CODE PROPER 35000013 SPACE 1 35200013 IERRBID DSECT , DUMMY MODULE OF REAL R.P. IERRBI *** 35400013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 35600013 USING IERRCA,RN ADDR OF PPI LOADED EXTERNALLY 35800013 SPACE 1 36000013 * ENTRY TABLE 36200013 SPACE 1 36400013 IERDB2 B RBEOS FROM MERGE ON NORMAL EOS 36600013 B RBRDRTRN FROM READ MODULE 36800013 B RBWRT FROM WRITE MODULE 37000013 BC 0,RBSAVE PRIMING ENTRY-ONLY FOR USER MODS MOD 37200013 SPACE 1 37400013 * NORMAL MERGE ENTRY. INCR BLOCK CHAR CTR. CHECK IF RCD WILL FIT IN 37600013 * OUTPUT BLOCK. IF NOT, WRITE THE BLOCK BEFORE MOVING THE RCD. 37800013 SPACE 1 38000013 L RG,WBLKCCNT OUTPUT BLOCK CHAR CTR INITIALLY 38200013 * PRESET TO 8 BY A.P. 38400013 MVC WRCDLGTH+2(2),0(RD) MOVE RCD LENGTH TO PROPER BOUNDARY 38600013 A RG,WRCDLGTH ADD RCD LENGTH TO OUTPUT BLOCK CHAR 38800013 * CTR 39000013 CH RG,PPILAB07+2 GREATER THAN ROUNDED OUTPUT BLOCKING 39200013 BC 2,RBWRTBLK GRTR,BR TO WRITE THE BLOCK FIRST 39400013 RBSAVE ST RG,WBLKCCNT SAVE UPDATED BLOCK CHAR CTR 39600013 ST RD,WINNER SAVE ADDR OF RCD IN INPUT BLOCK 39800013 L RF,WLSTPTR ADDR IN OUTPUT BLOCK TO MOVE RCD 40000013 RBSUBRLT S RF,WRCDLGTH DECR ADDR BY RCD LGTH. FOR TAPE SORT 40200013 * RCDS FILL OUTPUT BLOCK STARTG FROM 40400013 * HI CORE TO LOW. A.P. WILL NOP THIS 40600013 * INSTR IF DISK 40800013 L RG,PPICOUNT RECORD COUNTER 41000013 LA RG,1(0,RG) INCR BY 1 FOR THIS RCD 41200013 ST RG,PPICOUNT STORE UPDATED RECORD COUNTER 41400013 LR RE,RD ADDR OF RCD IN INPUT AREA FOR MOVE 41600013 L RI,WRCDLGTH LENGTH OF RCD FOR MOVE RTN 41800013 SPACE 1 42000013 * GENERALIZED MOVE RTN USED TO MOVE ANY SIZE DATA RCD FROM ONE DATA 42200013 * AREA TO ANOTHER. REGISTERS ARE USED AS FOLLOWS- 42400013 SPACE 1 42600013 * RE ADDR FROM WHICH THE DATA IS TO BE MOVED 42800013 * RF ADDR TO WHICH THE DATA IS TO BE MOVED 43000013 * RI DATA RCD LENGTH 43200013 SPACE 1 43400013 * IN ADDITION THE ROUTINE USES REGISTERS RG AND RH. 43600013 SPACE 1 43800013 CL RI,KON256 RCD LENGTH TO 256 44000013 BC 12,RBNMV020 LESS THAN OR EQUAL 44200013 SPACE 1 44400013 LA RH,256 SET UP TO MOVE RCD IN SECTIONS OF 44600013 LNR RG,RH 256 BYTES EACH 44800013 RBKMOVE MVC 0(256,RF),0(RE) 45000013 AR RE,RH UPDATE DATA AREA POINTERS BY 256 45200013 AR RF,RH BYTES 45400013 BXLE RI,RG,RBNMV020 TEST FOR REMAINING LENGTH--LE 256 45600013 BC 15,RBKMOVE ANOTHER FULL MOVE OF 256 BYTES NEEDD 45800013 SPACE 2 46000013 KON256 DC F'256' 46200013 KMOVE1 MVC 0(1,RF),0(RE) 46400013 RBNMV020 LR RG,RI MOVE LENGTH LE 256 BYTES 46600013 BCTR RG,0 DECR RG BY ONE 46800013 EX RG,KMOVE1 47000013 SPACE 1 47200013 * END OF GENERALIZED MOVE ROUTINE. 47400013 SPACE 1 47600013 AR RF,RI UPDATE OUTPUT BLOCK RCD PTR BY 47800013 * REMAINING RCD LENGTH 48000013 RBSUBRLD S RF,WRCDLGTH DECR ADDR BY RCD LGTH. FOR DISK SORT 48200013 * A.P. WILL NOP THIS INSTR. 48400013 ST RF,WLSTPTR SAVE UPDATED OUTPUT BLOCK RCD PTR 48600013 B RBDEBLCK BR TO DEBLOCK ANOTHER RCD 48800013 SPACE 2 49000013 * WRITE A BLOCK. THIS RCD CAN'T FIT INTO THIS BLOCK 49200013 SPACE 1 49400013 RBWRTBLK S RG,WRCDLGTH SUBTR LENGTH OF RCD THAT CAN'T FIT 49600013 * FROM OUTPUT BLOCK CHAR COUNT 49800013 RBLSTPTR L RC,WLSTPTR LOAD OUTPUT BLOCK RCD PTR. FOR DISK, 50000013 * A.P.WILL OVERLAY WLSTPTR WITH 50200013 * WLSTPTRD 50400013 S RC,KEIGHT EQUALS ADDR OF OUTPUT BLK TO WRITE 50600013 ST RG,WBLKCCNT STORE BLK CHAR CTR IN 1ST 2 BYTES 50800013 MVC 0(2,RC),WBLKCCNT+2 51000013 LR RB,RG ALSO, IN RB FOR WRITE MODULE PARAM 51200013 SPACE 1 51400013 * INTERFACE TO WRITE MODULE 51600013 SPACE 1 51800013 L RL,PPIWRT+4 LOAD ADDRESS OF WRITE ROUTINE 52000013 B 8(RL) BR TO WRITE MODULE 52200013 SPACE 1 52400013 * WRITE MODULE REENTERS VIA BRANCH TABLE. RC FOR TAPE,HAS AN OUTPUT 52600013 * BLOCK ENDING ADDR+1. FOR DISK, RC HAS OUTPUT BLK STARTING ADDR+8 52800013 SPACE 1 53000013 RBWRT ST RC,WLSTPTRD SAVE AS CURRENT OUTPUT BLK POINTER 53200013 ST RC,WLSTPTR STORE AS OUTPUT BLK WORK POINTER 53400013 LA RG,8 REINITIALIZE BLOCK CHAR CTR TO 8 53600013 A RG,WRCDLGTH ADD LENGTH OF RCD TO BE MOVED TO 53800013 * OUTPUT BLOCK 54000013 B RBSAVE BR TO MOVE RCD TO OUTPUT BLOCK 54200013 SPACE 2 54400013 * FROM MERGE.NORMAL EOS.PREVIOUS RCD WAS EOS RCD AND IS IN OUTPUT BLK 54600013 * NO NEW RECORDS PASSED TO BLOCK RTN AT THIS TIME. 54800013 SPACE 1 55000013 RBEOS L RE,WLSTPTR FOR TAPE USE WLSTPTR.FOR DISK,A.P. 55200013 * WILL OVLAY WLSTPTR WITH WLSTPTRD 55400013 MVC WLSTPTR,WLSTPTRD RESET OUTPUT BLOCK POINTER 55600013 S RE,KEIGHT DECR OUTPUT BLK PTR BY 8 TO INSERT 55800013 * BLOCK CHAR CNT IN 1ST 2 BYTES 56000013 MVC 0(2,RE),WBLKCCNT+2 STORE BLK CHAR CNT IN OUTPUT BLK 56200013 L RB,WBLKCCNT LOAD BLOCK CHAR CNT FOR WRITE MOD 56400013 MVC WBLKCCNT,KEIGHT REINITIALIZE BLOCK CHAR CTR TO 8 56600013 LA RD,4 SET SWITCH TO NORMAL EOS FOR WRITE 56800013 LR RC,RE LOAD OUTPUT BLOCK PTR FOR WRITE 57000013 SPACE 1 57200013 * INTERFACE TO WRITE MODULE FOR NORMAL EOS 57400013 SPACE 1 57600013 L RL,PPIWRT+4 LOAD ADDRESS OF WRITE ROUTINE 57800013 B 4(RL) BR TO WRITE MODULE 58000013 SPACE 2 58200013 * DEBLOCK SIDE OF PROGRAM 58400013 SPACE 1 58600013 RBDEBLCK SRL RD,24 SHIFT TO GET AT INCR OF WINNER RCD 58800013 L RG,PPISBLCT LOAD ADDR OF INPT BLK CHAR CNT TABLE 59000013 L RH,0(RD,RG) LOAD BLK CHAR CNT OF WINNER'S BLOCK 59200013 S RH,WRCDLGTH SUBTRACT RCD LENGTH OF WINNER 59400013 C RH,KZERO TEST IF BLOCK CHAR CNT IS ZERO 59600013 BC 8,RBREAD YES,BR TO READ ANOTHER BLK INTO 59800013 * INPUT BLK JUST VACATED 60000013 ST RH,0(RD,RG) NO,STORE UPDATED BLOCK CHAR CNT 60200013 L RD,WINNER RESTORE WINNER 60400013 A RD,WRCDLGTH ADDR OF NEXT RCD FROM WINNER FILE 60600013 SPACE 1 60800013 * INTERFACE TO MERGE NETWORK 61000013 SPACE 1 61200013 RBMERGE L RL,PPINETM+4 LOAD ADDRESS OF MERGE NETWORK 61400013 B 8(RL) BR TO MERGE MODULE 61600013 SPACE 2 61800013 * FILL EMPTY INPUT BLOCK OF WINNER. RD HAS INCR IN LOW ORDER BYTE 62000013 SPACE 1 62200013 RBREAD L RG,PPIBDSVA ADDR OF INPUT BLK ADDR TABLE 62400013 L RC,0(RD,RG) ADDR OF THE WINNER'S INPUT BLOCK 62600013 SPACE 1 62800013 * INTERFACE TO READ MODULE 63000013 SPACE 1 63200013 L RL,PPIRD+4 LOAD ADDRESS OF READ MODULE 63400013 B 8(RL) BR TO READ MODULE 63600013 SPACE 2 63800013 * READ MODULE RETURNS VIA THIS MODULE BRANCH TABLE. THE REGS CONTAIN 64000013 * THE FOLLOWING.RB - BLOCK CNT,RC - ADDR OF 1ST RCD IN INPUT BLOCK. 64200013 * RD - INCR,RE - ENDING ADDR OF BLOCK FOR TAPE OR STARTING ADDR 64400013 * OF BLOCK FOR DISK. 64600013 SPACE 1 64800013 RBRDRTRN L RG,PPISBLCT LOAD ADDR OF BLOCK CNT TABLE 65000013 S RB,KFOUR EQUALS TOTAL BYTES(OF RCDS)IN BLOCK 65200013 ST RB,0(RD,RG) STORE NEW BLOCK CHAR CNT IN TABLE 65400013 L RG,PPIBDSVA ADDR OF TABLE OF INPUT BLK STRTG 65600013 * ADDRESSES 65800013 ST RE,0(RD,RG) STORE IN INDEXED POSITION IN TABLE 66000013 SLL RD,24 POSITION INCR IN HI BYTE 66200013 AR RD,RC INSERT STRTG ADDR OF 1ST RCD OF BLK 66400013 B RBMERGE BR TO MERGE 66600013 SPACE 2 66800013 * LIST OF CONSTANTS USED BY THE MODULE 67000013 SPACE 1 67200013 KZERO DC F'0' ZERO 67400013 KFOUR DC F'4' FOUR 67600013 KEIGHT DC F'8' EIGHT 67800013 SPACE 2 68000013 * LIST OF WORK AREAS 68200013 SPACE 1 68400013 WBLKCCNT DC F'0' OUTPUT BLOCK CHAR CTR INITIALLY 68600013 * PRESET TO 8 BY A.P. 68800013 WRCDLGTH DC F'0' LENGTH OF INPUT RECORD TO BE BLOCKED 69000013 WINNER DC F'0' ADDR OF WINNER RCD IN INPUT BLOCK 69200013 WLSTPTR DC F'0' ADDR IN OUTPUT BLOCK TO MOVE WINNER 69400013 * A.P. INITIALLY SETS TO OUTPUT ENDG 69600013 * ADDR+1 FOR TAPE,OR OUTPUT BLK 69800013 * STARTG ADDR+8 FOR DISK SORT 70000013 WLSTPTRD DC F'0' CURRENT OUTPUT BLK STRTG ADDR+8-DISK 70200013 * OR OUTPUT BLK ENDG ADDR+1-TAPE 70400013 EJECT 70600013 SMPPI 70800013 END 71000013 ./ ADD SSI=04011906,SOURCE=1,NAME=IERABJ TITLE 'IERABJ - OS/360 SORT/MERGE - 360-SM-023 04/15/65' 00300013 *MODULE NAME:***IERABJ *** 00600013 SPACE 2 00900013 *STATUS: CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBJ, A BLOCK/ 02100013 * DEBLOCK MODULE FOR FIXED LENGTH RECORDS WITH USER MODIFICATIONS IN 02400013 * MERGE PHASE. IT ADJUSTS BUFFER POINTERS IN RUNNING PROGRAM. FOR 02700013 * DIRECT ACCESS DEVICE OR BLOCKING FOR A READ FORWARD PASS, IT ALSO 03000013 * MAKES OVERLAYS IN THE BLOCK PORTION OF THE RUNNING PROGRAM. 03300013 SPACE 2 03600013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 03900013 * 04200013 * N/A 04500013 * 04800013 *MACROS USED' 05100013 SPACE 1 05400013 * SMPPI 05700013 SPACE 2 06000013 *ENTRY POINTS: 06300013 SPACE 1 06600013 * ENTRY IERABJ ENTRY FROM: 06900013 * CALLING SEQUENCE- L RP,ASSG 07200013 * BR RP 07500013 SPACE 2 07800013 *INPUT: PPI FIELDS REFERENCED- 08100013 SPACE 1 08400013 * PPISRTBL 08700013 * PPILAB07 09000013 * PPILAB04 09300013 * PPISW1 09600013 SPACE 2 09900013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 10200013 SPACE 1 10500013 * PPICOUNT-SET TO 0 10800013 SPACE 1 11100013 * CONSTANTS AND CODE IN RUNNING PROGRAM ARE INITIALIZED. 11400013 SPACE 2 11700013 *EXTERNAL ROUTINES: 12000013 SPACE 1 12300013 * N/A 12600013 SPACE 2 12900013 *EXTERNAL PARAMETERS: 13200013 SPACE 1 13500013 * PPIBLK2-ADDRS FOR DSECT 13800013 * PPIX25 - USER ADDRS FOR EXIT E15 14100013 * SPACE 2 14400013 *EXITS: NORMAL 14700013 SPACE 1 15000013 * IERRC9 BR RO RETURN TO LOAD MODULE 15300013 * 15600013 SPACE 2 15900013 *EXITS: ERROR 16200013 SPACE 1 16500013 * N/A 16800013 * 17100013 SPACE 2 17400013 *TABLES/WORK AREAS: 17700013 SPACE 1 18000013 * N/A 18300013 * 18600013 SPACE 2 18900013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 19200013 SPACE 2 19500013 *NOTES: 19800013 SPACE 1 20100013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS WHEN E25 IS ACTIVATED. 20400013 EJECT 20700013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 21000013 SPACE 1 21300013 RA EQU 0 CONTENTS IN-N/A 21600013 * USE-N/A 21900013 * CONTENTS OUT-N/A 22200013 RB EQU 1 CONTENTS IN-N/A 22500013 * USE-N/A 22800013 * CONTENTS OUT-N/A 23100013 RC EQU 2 CONTENTS IN-N/A 23400013 * USE-IN INSTRUCTION CONSTANT 23700013 * CONTENTS OUT-N/A 24000013 RD EQU 3 CONTENTS IN-N/A 24300013 * USE-IN INSTRUCTION CONSTANT 24600013 * CONTENTS OUT-N/A 24900013 RE EQU 4 CONTENTS IN-N/A 25200013 * USE-DSECT BASE REG 25500013 * CONTENTS OUT-N/A 25800013 RF EQU 5 CONTENTS IN-N/A 26100013 * USE-WORK REG 26400013 * CONTENTS OUT-N/A 26700013 RG EQU 6 CONTENTS IN-N/A 27000013 * USE-WORK REG 27300013 * CONTENTS OUT-N/A 27600013 RH EQU 7 CONTENTS IN-N/A 27900013 * USE-N/A 28200013 * CONTENTS OUR-N/A 28500013 RI EQU 8 CONTENTS IN-N/A 28800013 * USE-WORK REG 29100013 * CONTENTS OUT-N/A 29400013 RJ EQU 9 CONTENTS IN-N/A 29700013 * USE-N/A 30000013 * CONTENTS OUT-N/A 30300013 RK EQU 10 CONTENTS IN-N/A 30600013 * USE-N/A 30900013 * CONTENTS OUT-N/A 31200013 RL EQU 11 CONTENTS IN-N/A 31500013 * USE-MODULE BASE REG 31800013 * CONTENTS OUT-N/A 32100013 RM EQU 12 CONTENTS IN-N/A 32400013 * USE-N/A 32700013 * CONTENTS OUT-N/A 33000013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 33300013 * USE- PPI REFERENCE,REGISTER SAVE 33600013 * AREA 33900013 * CONTENTS OUT- ADDRESS OF PPI 34200013 RO EQU 14 CONTENTS IN-LOAD MODULE ADDRS 34500013 * USE-RETURN REG 34800013 * CONTENTS OUT-LOAD MODULE ADDRS 35100013 RP EQU 15 CONTENTS IN-MODULE ADDRS 35400013 * USE-SET BASE REG 35700013 * CONTENTS OUT-MODULE ADDRS 36000013 SPACE 2 36300013 *START OF MODULE CODE PROPER: 36600013 SPACE 2 36900013 IERABJ CSECT 37200013 *0664513000,567000,660000,813000 4553 37300018 USING *,RL 37500013 USING DIERRBJ,RE 37800013 USING IERRCA,RN 38100013 IERMBG LR RL,RP 38400013 L RE,PPIBLK2+4 SET BASE REG FOR DSECT 38700013 SPACE 3 39000013 SR RI,RI ZERO OUT RECORD AND 39300013 ST RI,PPICOUNT DELETE COUNTERS IN PPI 39600013 LH RF,PPISRTBL SET OUTPUT BLK CNT = SORT BLOCKING 39900013 ST RF,KOBLKCNT 40200013 L RG,KMASK 40500013 N RG,PPILAB07 SET RG=OUTPUT BUFFER SIZE 40800013 ST RG,KBUFSIZ SET BUFF SIZE IN RUNNING PROGRAM 41100013 L RF,PPILAB04 SET RF=OUTPUT BUFFER ADDRESS 41400013 LA RF,0(0,RF) DELETE HIGH ORDER BYTE. 41700013 TM PPISW1+1,X'40' TAPE OR DIRECT ACCESS 42000013 BC 8,ABJ2020 DIRECT ACCESS 42300013 SPACE 1 42600013 TM PPISW1+6,X'10' TAPE-IS BLOCK FORWARD SW ON 42900013 BC 1,ABJ2020 YES 43200013 SPACE 1 43500013 ABJ2010 AR RF,RG NO-SET CONSTANTS 43800013 ST RF,KBLKPTR SET BLOCK POINTER AND 44100013 ST RF,KIBLKPTR INITIAL BLOCK POINTER 44400013 BR RO RETURN TO LOAD MODULE 44700013 SPACE 2 45000013 *MAKE OVERLAYS IN RUNNING PROGRAM FOR BLOCKING FORWARD. 45300013 SPACE 1 45600013 ABJ2020 LA RG,4 ADJUST FOR EOS INDICATION 45900013 SPACE 1 46200013 *OVERLAY INSTRUCTIONS IN RUNNING PROGRAM SO THAT RECORD WILL BE MOVED 46500013 *TO THE OUTPUT BUFFER BEFORE BLOCK POINTER IS INCREMENTED AND SO THAT 46800013 *INITIAL POINTER IS LOADED IN PARAMETER REG. FOR WRITE ROUTINE. 47100013 SPACE 1 47400013 MVC RBJ2020(18),KRBJMOD1 47700013 MVC RBJ2053(4),KRBJMOD2 48000013 MVC RBJ2090(4),KRBJMOD2 48300013 B ABJ2010 48600013 SPACE 2 48900013 *LIST OF CONSTANTS USED BY MODULE. 49200013 DS 0F 49500013 SPACE 1 49800013 KMASK DC X'00FFFFFF' 50100013 DROP RL 50400013 DROP RE 50700013 USING DIERRBJ,RL 51000013 KRBJMOD1 LR RE,RB 4553 51300018 LR RF,RC 51600013 L RP,PPIBDSVA+8 LINK TO MOVE LIST TO MOVE RCD TO 51900013 BALR RO,RP OUTPUT BUFFER 52200013 ST RC,KPARLST+4 5774 52400016 AH RC,PPIRCDL2 5774 52600016 KRBJMOD2 L RC,KIBLKPTR 53100013 EJECT 53400013 *** IERRBJ *** 53700013 SPACE 2 54000013 *DUMMY RUNNING PROGRAM 54300013 SPACE 2 54600013 DIERRBJ DSECT 54900013 USING *,RL 55200013 USING IERRCA,RN 55500013 IERDB2 B RBJ2080 EOS ENTRY 55800013 B RBJ2040 READ ENTRY 56100013 B RBJ2060 WRITE ENTRY 56400013 B RBJ2006 PRIME ENTRY TO BYPASS E25 4553 56700018 *NORMAL ENTRY FROM MERGE - RD CONTAINS ADDRESS OF WINNER RCD 57000013 *SET UP LINK TO USER EXIT 57300013 ST RD,KPARLST PUT WINNER ADDRS IN PARAMETER LIST 57600013 LA RB,KPARLST SET RB = ADDRS OF PARAMETER LIST 57900013 L RP,PPIX25+4 58200013 BALR RO,RP LINK TO USER AT E25 58500013 SPACE 2 58800013 B *+4(RP) RETURN FROM USER - RP INDICATES 59100013 * PROPER BRANCH TABLE ENTRY 59400013 B RBJ2005 DO NOTHING ENTRY - PROCEDE TO BLOCK 59700013 * RECORD 60000013 B RBJ2100 DELETE ENTRY 60300013 SPACE 2 60600013 *BLOCK WINNER RECORD 60900013 RBJ2006 LR RB,RD LOAD ADDR OF RCD 4553 61000018 SPACE 1 61200013 RBJ2005 L RE,KOBLKCNT SET RE = OUTPUT BLOCK COUNT 61500013 SR RA,RA 61800013 CR RE,RA IS BLOCK COUNT = 0 62100013 BC 12,RBJ2050 YES-TAKE BRANCH, BLOCK IS FULL 62400013 SPACE 1 62700013 RBJ2010 BCTR RE,0 NO-DECREMENT BLOCK COUNT BY 1 63000013 ST RE,KOBLKCNT 63300013 L RC,KBLKPTR 63600013 SPACE 1 63900013 *FOR DISK, THE FOLLOWING 6 INSTRUCTIONS ARE OVERLAID SO THAT THE WINNER 64200013 *RECORD IS MOVED TO THE OUTPUT BUFFER AND THEN THE BLOCK POINTER IS 64500013 *INCREMENTED 64800013 SPACE 1 65100013 RBJ2020 SH RC,PPIRCDL2 DECREMENT BLK PTR BY RCD LENGTH 65400013 ST RC,KPARLST+4 STORE RCD ADDRS IN PARM LIST 5774 65700016 LR RE,RB ADDR OF RCD IN INPUT AREA 4553 66000018 LR RF,RC SET RC=BUFFER ADDRS 66300013 L RP,PPIBDSVA+8 LINK TO MOVE LIST - MOVE WINNER TO 66600013 BALR RO,RP OUTPUT BUFFER 66900013 SPACE 2 67200013 ST RC,KBLKPTR 5774 67500016 L RG,PPICOUNT 67800013 LA RG,1(RG) INCREMENT RCD COUNT BY 1 68100013 ST RG,PPICOUNT 68400013 SPACE 1 68700013 *DEBLOCK RECORD FROM SAME FILE AS WINNER RECORD 69000013 SPACE 1 69300013 RBJ2027 LR RC,RD SAVE WINNER ADDRS 69600013 SRL RD,24 ACCESS INCREMENT 69900013 L RH,PPISBLCT SET RH=START ADDRS OF BLOCK COUNTERS 70200013 L RI,0(RD,RH) SET RI=BLK CNT FOR THIS BUFFER 70500013 BCTR RI,0 DECREMENT BLK CNT BY 1 70800013 SR RA,RA 71100013 CR RI,RA IS THIS BLK CNT = 0 71400013 BC 12,RBJ2030 YES-TAKE BRANCH, BLK IS EMPTY 71700013 SPACE 1 72000013 ST RI,0(RD,RH) NO-STORE NEW BLK CNT 72300013 LR RD,RC INCREMENT WINNER BY RCD LENGTH TO 72600013 AH RD,PPIRCDL2 GET NEXT RECORD 72900013 L RL,PPINETM+4 EXIT TO MERGE 73200013 B 8(0,RL) 73500013 EJECT 73800013 *INPUT BUFFER IS EMPTY - LINK TO READ ROUTINE TO REFILL BUFFER 74100013 SPACE 1 74400013 RBJ2030 L RH,PPIBDSVA SET RH=ADDR OF BUFFER TABLE 74700013 L RC,0(RD,RH) ACCESS ADDR OF EMPTY BUFFER VIA INCR 75000013 L RL,PPIRD+4 EXIT TO READ ROUTINE 75300013 B 8(0,RL) 75600013 SPACE 2 75900013 *RETURN FROM READ ROUTINE 76200013 * RB = BLOCK COUNT 76500013 * RC = BUFFER ADDRESS (FOR DEBLOCKING) 76800013 * RD = INCREMENT 77100013 * RE = BUFFER ADDRESS (FOR READING) 77400013 SPACE 1 77700013 RBJ2040 L RH,PPIBDSVA SET RH = ADDR OF BUFFER TABLE 78000013 ST RE,0(RD,RH) STORE BUFF ADDR IN TABLE 78300013 L RF,PPISBLCT SET RF=START ADDR OF BLOCK COUNTERS 78600013 ST RB,0(RD,RF) STORE BLK CNT IN BLK CNT TABLE 78900013 SLL RD,24 ADD INCREMENT TO NEXT RECORD 79200013 AR RD,RC 79500013 L RL,PPINETM+4 EXIT TO MERGE 79800013 B 8(0,RL) 80100013 SPACE 4 80400013 *OUTPUT BUFFER IS FULL - LINK TO WRITE ROUTINE TO EMPTY BUFFER 80700013 SPACE 1 81000013 RBJ2050 ST RB,WRBSAVE STORE MOD RCD ADDR 4553 81200018 L RB,KBUFSIZ SET RB=NO.BYTES IN BUFFER 4553 81400018 RBJ2053 L RC,KBLKPTR SET RC = BUFFER ADDRS 81600013 * FOR DISK, INITIAL PTR IS LOADED 81900013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 82200013 L RL,PPIWRT+4 EXIT TO WRITE RTN 82500013 B 8(0,RL) 82800013 SPACE 2 83100013 *RETURN FROM WRITE ROUTINE 83400013 * RC = ADDRESS OF EMPTY BUFFER 83700013 SPACE 1 84000013 RBJ2060 LH RE,PPISRTBL RESET OUTPUT BLK CNT TO SORT BLKNG 84300013 ST RC,KIBLKPTR SAVE INITIAL POINTER 84600013 ST RC,KBLKPTR SET BLOCK POINTER 84900013 L RB,WRBSAVE RELOAD MOD RCD ADDR 4553 85000018 B RBJ2010 85200013 SPACE 3 85500013 *END OF SEQUENCE - WRITE THIS BUFFER, RESET POINTERS TO REUSE THIS 85800013 *BUFFER THE NEXT TIME THROUGH 86100013 SPACE 1 86400013 RBJ2080 LA RD,4 SET INDICATION FOR NOT FINAL EOS 86700013 SPACE 1 87000013 *CALCULATE NUMBER OF BYTES TO BE WRITTEN - 87300013 * BUFFER SIZE WHEN FULL - (REMAINING BLOCK COUNT * RECORD LENGTH) 87600013 L RB,KBUFSIZ 87900013 L RE,KOBLKCNT 88200013 MH RE,PPIRCDL2 88500013 SR RB,RE 88800013 SPACE 1 89100013 LH RE,PPISRTBL RESET OUTPUT BLOCK COUNT TO SORT 89400013 ST RE,KOBLKCNT BLOCKING 89700013 RBJ2090 L RC,KBLKPTR SET RC = BUFFER ADDRS 90000013 * FOR DISK, INITIAL PTR IS LOADED 90300013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 90600013 L RF,KIBLKPTR 90900013 ST RF,KBLKPTR RESET BLK PTR 91200013 L RL,PPIWRT+4 EXIT TO WRITE ON EOS 91500013 B 4(0,RL) 91800013 SPACE 4 92100013 *WINNER RECORD IS TO BE DELETED 92400013 SPACE 1 92700013 RBJ2100 L RH,PPIDELCT 93000013 LA RH,1(RH) INCREMENT DELETE COUNTER BY 1 93300013 ST RH,PPIDELCT 93600013 B RBJ2027 DEBLOCK ANOTHER RECORD 93900013 SPACE 2 94200013 *CONSTANTS 94500013 SPACE 1 94800013 *PARAMETER LIST FOR USER 95100013 KPARLST DC A(0) ADDRS OF WINNER RCD 95400013 DC A(0) ADDRS OF LAST RECORD BLOCKED 95700013 SPACE 1 96000013 KBLKPTR DS 1F 96300013 KIBLKPTR DS 1F 96600013 KOBLKCNT DS 1F 96900013 KBUFSIZ DS 1F 97200013 K4 DC X'0004' 97500013 WRBSAVE DC F'0' CURRENT MODIFIED RCD ADDR 4553 97600018 EJECT 97800013 SMPPI 98100013 END 98400013 ./ ADD SSI=03011906,SOURCE=1,NAME=IERABK TITLE ' IERABK - OS/360 SORT/MERGE - 360S-SM-023 05/14/65 ' 00200013 * MODULE NAME *** IERABK *** 00400013 SPACE 2 00600013 SPACE 2 00800013 *STATUS: CHANGE LEVEL 000 01000013 SPACE 2 01200013 *MODULE FUNCTION/OPERATION- ASSIGNMENT FOR THE RUNNING PROG IERRBK, 01400013 * BLOCK,PHASE 2. THIS MODULE TESTS WHETHER IT IS A DISK SORT OR 01600013 * TAPE SORT AND OVERLAYS THE RUNNING PROGRAM WHEREVER NECESSARY. 01800013 * IT ALSO SETS WORK AREAS AND CONSTANTS TO SPECIFIC VALUES IN THE 02000013 * RUNNING PROGRAM. THE ASSIGNMENT PROGRAM UTILIZES THE DISK SORT 02200013 * ROUTINE FOR THE FORWARD BLOCK TAPE SORT. 02400013 SPACE 1 02600013 * THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A PARTICULAR 02800013 * INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER SET. 03000013 SPACE 2 03200013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 03400013 * 03600013 * N/A 03800013 * 04000013 *MACROS USED' 04200013 SPACE 1 04400013 * SMPPI 04600013 SPACE 2 04800013 *ENTRY POINTS: 05000013 SPACE 1 05200013 * ENTRY IERMGB ENTRY FROM: LOAD MODULE, IERRC9 05400013 * CALLING SEQUENCE- 05600013 * LOAD EP=IERABK,DCB= 05800013 * LR RP,RA 06000013 * BALR RO,RP 06200013 SPACE 2 06400013 *INPUT: PPI FIELDS REFERENCED- 06600013 SPACE 1 06800013 * PPILAB04 PPILAB07 07000013 * PPISW1 07200013 SPACE 2 07400013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 07600013 SPACE 1 07800013 * CONSTANTS AND CODE IN THE RUNNING PROGRAM ARE INITIALIZED 08000013 SPACE 2 08200013 *EXTERNAL ROUTINES: 08400013 SPACE 1 08600013 * NONE 08800013 SPACE 2 09000013 *EXTERNAL PARAMETERS: 09200013 SPACE 1 09400013 * NONE 09600013 SPACE 2 09800013 *EXITS: NORMAL 10000013 SPACE 1 10200013 * BR RO - RETURN TO LOAD MODULE, IERRC9 10400013 SPACE 2 10600013 *EXITS: ERROR 10800013 SPACE 1 11000013 * NONE 11200013 SPACE 2 11400013 *TABLES/WORK AREAS: 11600013 SPACE 1 11800013 * NONE 12000013 SPACE 2 12200013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 12400013 SPACE 2 12600013 *NOTES: 12800013 SPACE 1 13000013 * THIS MODULE IS USED FOR VARIABLE LENGTH RECORDS WITH USER EXIT E25 13200013 * IN THE MERGE PHASE. 13400013 SPACE 2 13600013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 13800013 SPACE 1 14000013 RA EQU 0 USE-NOT USED 14200013 RB EQU 1 USE-NOT USED 14400013 RC EQU 2 USE-NOT USED 14600013 RD EQU 3 USE-NOT USED 14800013 RE EQU 4 USE-NOT USED 15000013 RF EQU 5 CONTENTS IN- N/A 15200013 * USE- WORK REGISTER 15400013 * CONTENTS OUT- N/A 15600013 RG EQU 6 USE-NOT USED 15800013 RH EQU 7 USE-NOT USED 16000013 RI EQU 8 USE-NOT USED 16200013 RJ EQU 9 USE-NOT USED 16400013 RK EQU 10 CONTENTS IN- N/A 16600013 * USE- BASE REGISTER FOR DSECT OF 16800013 * RUNNIN PROGRAM 17000013 * CONTENTS OUT- N/A 17200013 RL EQU 11 CONTENTS IN- N/A 17400013 * USE- BASE REGISTER FOR THIS MODULE 17600013 * CONTENTS OUT- N/A 17800013 RM EQU 12 USE-NOT USED 18000013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 18200013 * USE- PPI REFERENCE,REGISTER SAVE 18400013 * AREA 18600013 * CONTENTS OUT- ADDRESS OF PPI 18800013 RO EQU 14 CONTENTS IN- RETURN ADDRESS IN 19000013 * IERRC9 19200013 * USE- NOT USED 19400013 * CONTENTS OUT- RETURN ADDRESS IN 19600013 * IERRC9 19800013 RP EQU 15 CONTENTS IN- BASE ADDRESS OF THIS 20000013 * MODULE 20200013 * USE- NOT USED 20400013 * CONTENTS OUT- N/A 20600013 SPACE 2 20800013 *START OF MODULE CODE PROPER: 21000013 SPACE 2 21200013 IERABK CSECT 21400013 *1601376000,430000,464000 4553 21500018 USING *,RL MODULE BASE REG LOADED EXTERNALLY 21600013 USING IERRBKD,RK ADDR OF RUNNING PROGRAM DUMMY MOD 21800013 USING IERRCA,RN PPI COMMON MODULE BASE REGISTER 22000013 IERMBG LR RL,RP LOAD MODULE BASE REG 22200013 L RK,PPIBLK2+4 LOAD ADDRESS OF RUNNING PROGRAM 22400013 MVC WBLKCCNT,KEIGHT SET BLOCK CHARACTER CTR TO 8 22600013 L RF,PPILAB04 LOAD ADDR OF OUTPUT BUFFER 1 22800013 LA RF,0(0,RF) DELETE HIGH ORDER BYTE. 23000013 TM PPISW1+1,X'40' TAPE OR DIRECT ACCESS 23200013 BZ ABDISK DIRECT ACCESS 23400013 SPACE 1 23600013 SPACE 1 23800013 * TEST FORWARD BLOCK BIT IN PPI 24000013 SPACE 1 24200013 TM PPISW1+6,X'10' TEST FORWARD BLOCK BIT IN PPI 24400013 BC 1,ABDISK IF ON BRANCH TO DISK SORT ROUTINE 24600013 SPACE 2 24800013 * TAPE SORT ROUTINE 25000013 SPACE 1 25200013 AH RF,PPILAB07+2 ADD ROUNDED LENGTH OF OUTPUT BLOCK 25400013 ST RF,WLSTPTR OUTPUT BLOCK ENDING ADDR+1 25600013 ST RF,WLSTPTRD CURRENT OUTPUT BLK ENDING ADDR+1 25800013 BR RO RETURN TO LOAD MODULE 26000013 SPACE 2 26200013 * DISK SORT ROUTINE 26400013 SPACE 1 26600013 ABDISK LA RF,8(0,RF) EQUALS OUTPUT BLOCK STRTG ADDR+8 26800013 ST RF,WLSTPTR STORE IN R.P. AS OUTPUT BLK LIST PTR 27000013 ST RF,WLSTPTRD CURRENT OUTPUT BLOCK ADDR+8 27200013 MVC RBSUBRLT(2),KNOP NOP R.P. TAPE INSTR 27400013 MVC RBSUBRLD(2),KNOP NOP R.P. TAPE INSTR 27600013 MVC RBLSTPTR(4),KON1 OVERLAY R.P. INSTR WITH KON1 27800013 MVC RBEOS(4),KON2 OVERLAY R.P. INSTR WITH KON2 28000013 BR RO RETURN TO LOAD MODULE 28200013 SPACE 2 28400013 * LIST OF CONSTANTS USED BY THE MODULE 28600013 SPACE 1 28800013 KNOP DC X'4700' NOP 29000013 DROP RK 29200013 USING IERRBKD,RL 29400013 KON1 L RC,WLSTPTRD 29600013 KON2 L RE,WLSTPTRD 29800013 USING IERABK,RL 30000013 USING IERRBKD,RK 30200013 EJECT 30400013 * MODULE NAME *** IERRBK *** USER EXIT E25 30600013 SPACE 2 30800013 * MODULE DEFINITION ** THIS MODULE HANDLES THE DEBLOCKING AND 31000013 * BLOCKING OF VARIABLE LENGTH RECORDS. THE BUFFERS ARE FILLED 31200013 * BY THE READ MODULE AND EMPTIED BY THE WRITE MODULE USING EXCP 31400013 * MACROS. THIS MODULE MOVES THE VARIABLE LENGTH RECORD FROM THE 31600013 * INPUT BLOCK DIRECTLY TO THE OUTPUT BLOCK. 31800013 SPACE 1 32000013 * THE USER EXIT,E25,IS ON THE BLOCK SIDE AND IS EXECUTED ONCE FOR 32200013 * EVERY RECORD,EXCEPT THE FIRST RECORD OF EACH OUTPUT SEQUENCE. 32400013 * THE EXIT OCCURS AFTER THE RECORD LEAVES THE MERGE AND WHILE THE 32600013 * PREVIOUS RECORD IS AVAILABLE IN THE OUTPUT AREA. THE EXIT IS FOR 32800013 * SUMMARIZATION AND DELETION OF RECORDS(EXCEPT ON THE FIRST RECORD 33000013 * OF EACH OUTPUT SEQUENCE) 33200013 SPACE 1 33400013 * THE MERGE NETWORK INITIALLY PASSES A WINNER TO THE BLOCK SIDE OF 33600013 * THIS MODULE. BLOCK SEES IF IT CAN FIT IN THE OUTPUT BLOCK AND IF 33800013 * IT CAN'T, WRITES THE BLOCK THEN MOVES THE RECORD. IT THEN 34000013 * BRANCHES TO THE DEBLOCK SIDE. DEBLOCK DEBLOCKS ANOTHER RECORD 34200013 * FROM THE SAME FILE AS THE WINNER, TESTING FIRST IF THAT BLOCK 34400013 * IS EMPTY. IF IT IS, DEBLOCK READS ANOTHER BLOCK FROM THE SAME 34600013 * FILE. DEBLOCK THEN PASSES THE ADDRESS OF THE NEW RECORD TO THE 34800013 * MERGE NETWORK. THE NETWORK FINDS ANOTHER WINNER AND THE PROCESS 35000013 * IS REPEATED. 35200013 SPACE 2 35400013 * START OF MODULE CODE PROPER 35600013 SPACE 1 35800013 IERRBKD DSECT , DUMMY MODULE OF REAL R.P. IERRBK *** 36000013 USING IERRCA,RN ADDR OF PPI LOADED EXTERNALLY 36200013 SPACE 1 36400013 * ENTRY TABLE 36600013 SPACE 1 36800013 IERDB2 B RBEOS FROM MERGE ON NORMAL EOS 37000013 B RBRDRTRN FROM READ MODULE 37200013 B RBWRT FROM WRITE MODULE 37400013 B RBBPSUS1 PRIME ENTRY,BYPASS EXIT RTN 4553 37600018 SPACE 1 37800013 * NORMAL MERGE ENTRY. INCR BLOCK CHAR CTR. CHECK IF RCD WILL FIT IN 38000013 * OUTPUT BLOCK. IF NOT, WRITE THE BLOCK BEFORE MOVING THE RCD. 38200013 SPACE 1 38400013 ST RD,WMRGRCD PARAM 1 TO USER.ADDR OF RCD IN INPUT 38600013 * BLOCK 38800013 SPACE 1 39000013 * CALL MACRO EXPANSION INSTRUCTIONS TO USER EXIT E25 39200013 SPACE 1 39400013 L RP,PPIX25+4 39600013 LA RB,WMRGRCD 39800013 BALR RO,RP 40000013 SPACE 1 40200013 * RETURN FROM USER 40400013 SPACE 1 40600013 B *+4(RP) 40800013 B RBBPSUSR DO NOTHING 41000013 L RG,PPIDELCT DELETE COUNTER 41200013 LA RG,1(0,RG) INCR DELETE CTR BY 1 41400013 ST RG,PPIDELCT SAVE UPDATED DELETE CTR 41600013 ST RD,WINNER SAVE WINNER ADDR (DEBLK WILL DELETE) 41800013 MVC WRCDLGTH+2(2),0(RD) MOVE RCD LENGTH TO PROPER BOUNDARY 42000013 B RBDEBLCK BR TO DEBLOCK ANOTHER RCD 42200013 RBBPSUS1 LR RB,RD 4553 42300018 SPACE 1 42400013 RBBPSUSR L RG,WBLKCCNT OUTPUT BLOCK CHAR CTR INITIALLY 42600013 * PRESET TO 8 BY A.P. 42800013 MVC WRCDLGTH+2(2),0(RB) MOVE RCD LENGTH TO PROPER BNDRY 4553 43000018 A RG,WRCDLGTH ADD RCD LENGTH TO OUTPUT BLOCK CHAR 43200013 * CTR 43400013 CH RG,PPILAB07+2 GREATER THAN ROUNDED OUTPUT BLOCKING 43600013 BC 2,RBWRTBLK GRTR,BR TO WRITE THE BLOCK FIRST 43800013 RBSAVE ST RG,WBLKCCNT SAVE UPDATED BLOCK CHAR CTR 44000013 ST RD,WINNER SAVE ADDR OF RCD IN INPUT BLOCK 44200013 L RF,WLSTPTR ADDR IN OUTPUT BLOCK TO MOVE RCD 44400013 RBSUBRLT S RF,WRCDLGTH DECR ADDR BY RCD LGTH. FOR TAPE SORT 44600013 * RCDS FILL OUTPUT BLOCK STARTG FROM 44800013 * HI CORE TO LOW. A.P. WILL NOP THIS 45000013 * INSTR IF DISK 45200013 ST RF,WOUTRCD PARAM 2 TO USER.ADDR OF RCD IN 45400013 * OUTPUT BLOCK 45600013 L RG,PPICOUNT RECORD COUNTER 45800013 LA RG,1(0,RG) INCR BY 1 FOR THIS RCD 46000013 ST RG,PPICOUNT STORE UPDATED RECORD COUNTER 46200013 LR RE,RB ADDR OF RCD IN INPUT AREA 4553 46400018 L RI,WRCDLGTH LENGTH OF RCD FOR MOVE RTN 46600013 SPACE 1 46800013 * GENERALIZED MOVE RTN USED TO MOVE ANY SIZE DATA RCD FROM ONE DATA 47000013 * AREA TO ANOTHER. REGISTERS ARE USED AS FOLLOWS- 47200013 SPACE 1 47400013 * RE ADDR FROM WHICH THE DATA IS TO BE MOVED 47600013 * RF ADDR TO WHICH THE DATA IS TO BE MOVED 47800013 * RI DATA RCD LENGTH 48000013 SPACE 1 48200013 * IN ADDITION THE ROUTINE USES REGISTERS RG AND RH. 48400013 SPACE 1 48600013 CL RI,KON256 RCD LENGTH TO 256 48800013 BC 12,RBNMV020 LESS THAN OR EQUAL 49000013 SPACE 1 49200013 LA RH,256 SET UP TO MOVE RCD IN SECTIONS OF 49400013 LNR RG,RH 256 BYTES EACH 49600013 RBKMOVE MVC 0(256,RF),0(RE) 49800013 AR RE,RH UPDATE DATA AREA POINTERS BY 256 50000013 AR RF,RH BYTES 50200013 BXLE RI,RG,RBNMV020 TEST FOR REMAINING LENGTH--LE 256 50400013 BC 15,RBKMOVE ANOTHER FULL MOVE OF 256 BYTES NEEDD 50600013 SPACE 2 50800013 KON256 DC F'256' 51000013 KMOVE1 MVC 0(1,RF),0(RE) 51200013 RBNMV020 LR RG,RI MOVE LENGTH LE 256 BYTES 51400013 BCTR RG,0 DECR RG BY ONE 51600013 EX RG,KMOVE1 51800013 SPACE 1 52000013 * END OF GENERALIZED MOVE ROUTINE. 52200013 SPACE 1 52400013 AR RF,RI UPDATE OUTPUT BLOCK RCD PTR BY 52600013 * REMAINING RCD LENGTH 52800013 RBSUBRLD S RF,WRCDLGTH DECR ADDR BY RCD LGTH. FOR DISK SORT 53000013 * A.P. WILL NOP THIS INSTR. 53200013 ST RF,WLSTPTR SAVE UPDATED OUTPUT BLOCK RCD PTR 53400013 B RBDEBLCK BR TO DEBLOCK ANOTHER RCD 53600013 SPACE 2 53800013 * WRITE A BLOCK. THIS RCD CAN'T FIT INTO THIS BLOCK 54000013 SPACE 1 54200013 RBWRTBLK S RG,WRCDLGTH SUBTR LENGTH OF RCD THAT CAN'T FIT 54400013 * FROM OUTPUT BLOCK CHAR COUNT 54600013 ST RB,WRBSAVE STORE MOD RCD ADDR 4553 54700018 RBLSTPTR L RC,WLSTPTR LOAD OUTPUT BLOCK RCD PTR. FOR DISK, 54800013 * A.P.WILL OVERLAY WLSTPTR WITH 55000013 * WLSTPTRD 55200013 S RC,KEIGHT EQUALS ADDR OF OUTPUT BLK TO WRITE 55400013 ST RG,WBLKCCNT ALIGN TO WD BOUNDARY 55600013 MVC 0(2,RC),WBLKCCNT+2 STORE BLOK CHAR CTR IN 1ST 2 BYTES 55800013 LR RB,RG ALSO, IN RB FOR WRITE MODULE PARAM 56000013 SPACE 1 56200013 * INTERFACE TO WRITE MODULE 56400013 SPACE 1 56600013 L RL,PPIWRT+4 LOAD ADDRESS OF WRITE ROUTINE 56800013 B 8(RL) BR TO WRITE MODULE 57000013 SPACE 1 57200013 * WRITE MODULE REENTERS VIA BRANCH TABLE. RC FOR TAPE,HAS AN OUTPUT 57400013 * BLOCK ENDING ADDR+1. FOR DISK, RC HAS OUTPUT BLK STARTING ADDR+8 57600013 SPACE 1 57800013 RBWRT ST RC,WLSTPTRD SAVE AS CURRENT OUTPUT BLK POINTER 58000013 ST RC,WLSTPTR STORE AS OUTPUT BLK WORK POINTER 58200013 LA RG,8 REINITIALIZE BLOCK CHAR CTR TO 8 58400013 A RG,WRCDLGTH ADD LENGTH OF RCD TO BE MOVED TO 58600013 * OUTPUT BLOCK 58800013 L RB,WRBSAVE RELOAD MOD RCD ADDR 4553 58900018 B RBSAVE BR TO MOVE RCD TO OUTPUT BLOCK 59000013 SPACE 2 59200013 * FROM MERGE.NORMAL EOS.PREVIOUS RCD WAS EOS RCD AND IS IN OUTPUT BLK 59400013 * NO NEW RECORDS PASSED TO BLOCK RTN AT THIS TIME. 59600013 SPACE 1 59800013 RBEOS L RE,WLSTPTR FOR TAPE USE WLSTPTR.FOR DISK,A.P. 60000013 * WILL OVLAY WLSTPTR WITH WLSTPTRD 60200013 MVC WLSTPTR,WLSTPTRD RESET OUTPUT BLOCK POINTER 60400013 S RE,KEIGHT DECR OUTPUT BLK PTR BY 8 TO INSERT 60600013 * BLOCK CHAR CNT IN 1ST 2 BYTES 60800013 MVC 0(2,RE),WBLKCCNT+2 STORE BLK CHAR CNT IN OUTPUT BLK 61000013 L RB,WBLKCCNT LOAD BLOCK CHAR CNT FOR WRITE MOD 61200013 MVC WBLKCCNT,KEIGHT REINITIALIZE BLOCK CHAR CTR TO 8 61400013 LA RD,4 SET SWITCH TO NORMAL EOS FOR WRITE 61600013 LR RC,RE LOAD OUTPUT BLOCK PTR FOR WRITE 61800013 SPACE 1 62000013 * INTERFACE TO WRITE MODULE FOR NORMAL EOS 62200013 SPACE 1 62400013 L RL,PPIWRT+4 LOAD ADDRESS OF WRITE ROUTINE 62600013 B 4(RL) BR TO WRITE MODULE 62800013 EJECT 63000013 * DEBLOCK SIDE OF PROGRAM 63200013 SPACE 1 63400013 RBDEBLCK SRL RD,24 SHIFT TO GET AT INCR OF WINNER RCD 63600013 L RG,PPISBLCT LOAD ADDR OF INPT BLK CHAR CNT TABLE 63800013 L RH,0(RD,RG) LOAD BLK CHAR CNT OF WINNER'S BLOCK 64000013 S RH,WRCDLGTH SUBTRACT RCD LENGTH OF WINNER 64200013 C RH,KZERO TEST IF BLOCK CHAR CNT IS ZERO 64400013 BC 8,RBREAD YES,BR TO READ ANOTHER BLK INTO 64600013 * INPUT BLK JUST VACATED 64800013 ST RH,0(RD,RG) NO,STORE UPDATED BLOCK CHAR CNT 65000013 L RD,WINNER RESTORE WINNER 65200013 A RD,WRCDLGTH ADDR OF NEXT RCD FROM WINNER FILE 65400013 SPACE 1 65600013 * INTERFACE TO MERGE NETWORK 65800013 SPACE 1 66000013 RBMERGE L RL,PPINETM+4 LOAD ADDRESS OF MERGE NETWORK 66200013 B 8(RL) BR TO MERGE MODULE 66400013 SPACE 2 66600013 * FILL EMPTY INPUT BLOCK OF WINNER. RD HAS INCR IN LOW ORDER BYTE 66800013 SPACE 1 67000013 RBREAD L RG,PPIBDSVA ADDR OF INPUT BLK ADDR TABLE 67200013 L RC,0(RD,RG) ADDR OF THE WINNER'S INPUT BLOCK 67400013 SPACE 1 67600013 * INTERFACE TO READ MODULE 67800013 SPACE 1 68000013 L RL,PPIRD+4 LOAD ADDRESS OF READ MODULE 68200013 B 8(RL) BR TO READ MODULE 68400013 SPACE 2 68600013 * READ MODULE RETURNS VIA THIS MODULE BRANCH TABLE. THE REGS CONTAIN 68800013 * THE FOLLOWING.RB - BLOCK CNT,RC - ADDR OF 1ST RCD IN INPUT BLOCK. 69000013 * RD - INCR,RE - ENDING ADDR OF BLOCK FOR TAPE OR STARTING ADDR 69200013 * OF BLOCK FOR DISK. 69400013 SPACE 1 69600013 RBRDRTRN L RG,PPISBLCT LOAD ADDR OF BLOCK CNT TABLE 69800013 S RB,KFOUR EQUALS TOTAL BYTES(OF RCDS)IN BLK 70000013 ST RB,0(RD,RG) STORE NEW BLOCK CHAR CNT IN TABLE 70200013 L RG,PPIBDSVA ADDR OF TABLE OF INPUT BLK STRTG 70400013 * ADDRESSES 70600013 ST RE,0(RD,RG) STORE IN INDEXED POSITION IN TABLE 70800013 SLL RD,24 POSITION INCR IN HI BYTE 71000013 AR RD,RC INSERT STRTG ADDR OF 1ST RCD OF BLK 71200013 B RBMERGE BR TO MERGE NETWORK 71400013 SPACE 2 71600013 * LIST OF CONSTANTS USED BY THE MODULE 71800013 SPACE 1 72000013 KZERO DC F'0' ZERO 72200013 KFOUR DC F'4' FOUR 72400013 KEIGHT DC F'8' EIGHT 72600013 SPACE 2 72800013 * LIST OF WORK AREAS 73000013 SPACE 1 73200013 WMRGRCD DC F'0' ADDR OF RCD IN INPUT BLK-USER PARAM1 73400013 WOUTRCD DC F'0' ADDR OF RCD IN OUTPUT BLK-USR PARAM2 73600013 WBLKCCNT DC F'0' OUTPUT BLOCK CHAR CTR INITIALLY 73800013 * PRESET TO 8 BY A.P. 74000013 WRCDLGTH DC F'0' LENGTH OF INPUT RECORD TO BE BLOCKED 74200013 WINNER DC F'0' ADDR OF WINNER RCD IN INPUT BLOCK 74400013 WLSTPTR DC F'0' ADDR IN OUTPUT BLOCK TO MOVE WINNER 74600013 * A.P. INITIALLY SETS TO OUTPUT ENDG 74800013 * ADDR+1 FOR TAPE,OR OUTPUT BLK 75000013 * STARTG ADDR+8 FOR DISK SORT 75200013 WLSTPTRD DC F'0' CURRENT OUTPUT BLK STRTG ADDR+8-DISK 75400013 * OR OUTPUT BLK ENDG ADDR+1-TAPE 75600013 WRBSAVE DC F'0' CURRENT MODIFIED RCD ADDR 4553 75700018 EJECT 75800013 SMPPI 76000013 END 76200013 ./ ADD SSI=02011720,SOURCE=1,NAME=IERABL TITLE ' IERABL - OS/360 SORT/MERGE - 360-SM-023 03/01/65 ' 00500013 *MODULE NAME:*** IERABL *** 01000013 SPACE 2 01500013 *STATUS: CHANGE LEVEL 000 02000013 SPACE 2 02500013 *MODULE FUNCTION/OPERATION: 03000013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBL. IT IS USED 03500013 * IN FINAL MERGE PHASE OR MERGE ONLY FOR FIXED LENGTH RECORDS LESS 04000013 * THAN 256 BYTES LONG. 04500013 SPACE 2 05000013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 05500013 * 06000013 * N/A 06500013 * 07000013 *MACROS USED' 07500013 SPACE 1 08000013 * SMPPI 08500013 SPACE 2 09000013 *ENTRY POINTS: 09500013 SPACE 1 10000013 * ENTRY IERABL ENTRY FROM:IERRC9 10500013 * CALLING SEQUENCE- L RP,ASSG 11000013 * BALR RO,RP 11500013 SPACE 2 12000013 *INPUT: PPI FIELDS REFERENCED- 12500013 SPACE 1 13000013 * PPISTDCB 13500013 * PPIRCDL3 14000013 SPACE 2 14500013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED-N/A 15000013 SPACE 1 15500013 * CONSTANTS IN RUNNING PROGRAM ARE INITIALIZED. 16000013 SPACE 2 16500013 *EXTERNAL ROUTINES: 17000013 SPACE 1 17500013 * N/A 18000013 * 18500013 * 19000013 SPACE 2 19500013 *EXTERNAL PARAMETERS: 20000013 SPACE 1 20500013 * PPIBLK - ADDRESS OF RUNNING PROGRAM USED TO ADDRESS DSECT 21000013 SPACE 2 21500013 *EXITS: NORMAL 22000013 SPACE 1 22500013 * BR RO RETURN TO LOAD MODULE IERRC9 23000013 SPACE 2 23500013 *EXITS: ERROR 24000013 SPACE 1 24500013 * N/A 25000013 SPACE 2 25500013 *TABLES/WORK AREAS: 26000013 SPACE 1 26500013 * N/A 27000013 SPACE 2 27500013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 28000013 SPACE 2 28500013 *NOTES: 29000013 SPACE 1 29500013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS LESS THAN 256 BYTES. 30000013 EJECT 30500013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 31000013 SPACE 1 31500013 RA EQU 0 CONTENTS IN-N/A 32000013 * USE-N/A 32500013 * CONTENTS OUT-N/A 33000013 RB EQU 1 CONTENTS IN-N/A 33500013 * USE-N/A 34000013 * CONTENTS OUT-N/A 34500013 RC EQU 2 CONTENTS IN-N/A 35000013 * USE- N/A 35500013 * CONTENTS OUT-N/A 36000013 RD EQU 3 CONTENTS IN-N/A 36500013 * USE-N/A 37000013 * CONTENTS OUT-N/A 37500013 RE EQU 4 CONTENTS IN-N/A 38000013 * USE-N/A 38500013 * CONTENTS OUT-N/A 39000013 RF EQU 5 CONTENTS IN-N/A 39500013 * USE-WORK REGISTER 40000013 * CONTENTS OUT-N/A 40500013 RG EQU 6 CONTENTS IN-N/A 41000013 * USE-N/A 41500013 * CONTENTS OUT-N/A 42000013 RH EQU 7 CONTENTS IN-N/A 42500013 * USE-WORK REGISTER 43000013 * CONTENTS OUT-N/A 43500013 RI EQU 8 CONTENTS IN-N/A 44000013 * USE-DSECT BASE REGISTER 44500013 * CONTENTS OUT-N/A 45000013 RJ EQU 9 CONTENTS IN-N/A 45500013 * USE-N/A 46000013 * CONTENTS OUT-N/A 46500013 RK EQU 10 CONTENTS IN-N/A 47000013 * USE-N/A 47500013 * CONTENTS OUT-N/A 48000013 RL EQU 11 CONTENTS IN-N/A 48500013 * USE-MODULE BASE REGISTER 49000013 * CONTENTS OUT-N/A 49500013 RM EQU 12 CONTENTS IN-N/A 50000013 * USE-N/A 50500013 * CONTENTS OUT-N/A 51000013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 51500013 * USE- PPI REFERENCE,REGISTER SAVE 52000013 * AREA 52500013 * CONTENTS OUT- ADDRESS OF PPI 53000013 RO EQU 14 CONTENTS IN ADDRESS OF LOAD MODULE 53500013 * USE-N/A 54000013 * CONTENTS OUT-ADDRS OF LOAD MODULE 54500013 RP EQU 15 CONTENTS IN-MODULE ADDRESS 55000013 * USE-SET MODULE BASE REGISTER 55500013 * CONTENTS OUT-N/A 56000013 SPACE 2 56500013 *START OF MODULE CODE PROPER: 57000013 SPACE 2 57500013 IERABL CSECT 58000013 USING *,RL 58500013 USING DIERRBL,RI 59000013 USING IERRCA,RN 59500013 USING DIERAMC,RC MESSAGE MODULE BASE REG. 60000013 IERMB34 LR RL,RP 60500013 L RI,PPIBLK+4 61000013 L RC,PPIAMC+4 SET MESSAGE BASE REG. 61500013 L RH,PPISTDCB ACCESS ADDRS OF OUTPUT DCB AND 62000013 L RF,0(RH) STORE IN RUNNING 62500013 ST RF,KADCB PROGRAM 63000013 LH RF,PPIRCDL3 SET RCD LENGTH - 1 IN 63500013 BCTR RF,0 RUNNING PROGRAM 64000013 STC RF,RBL34010+1 64500013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 65000013 BNO ABLRTN SWITCH OFF BYPASS MESSAGE 65500013 ST RO,ABLSAVO SAVE RO 66000013 L RA,PPILAB04 LOAD ADDR OF OB1 FOR CONVERSION 66500013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 67000013 BAL RO,4(RP) CONVERT 67500013 MVC DMSG942A(8),0(RB) PUT ADDRESS IN MESSAGE 68000013 L RA,PPILAB05 LOAD ADDRESS OF OB2 FOR CONVERSION 68500013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 69000013 BAL RO,4(RP) CONVERT 69500013 MVC DMSG942B(8),0(RB) PUT ADDRESS IN MESSAGE 70000013 LM RA,RB,DMSG942X SET UP FOR PRINTING 70500013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 71000013 BAL RO,12(0,RP) PRINT 71500013 L RO,ABLSAVO RESTORE RO 72000013 ABLRTN BR RO RETURN TO LOAD MODULE 72500013 ABLSAVO DC F'0' 73000013 DIERAMC DSECT 73500013 * 74000013 COPY AMCMAIN 74500013 EJECT 75000013 *** IERRBL *** 75500013 *DUMMY RUNNING PROGRAM 76000013 SPACE 2 76500013 DIERRBL DSECT 77000013 IERDB34 B RBL34020 ENTRY FROM MERGE LAST RCD 77500013 L RF,KADCB NORMAL ENTRY FROM MERGE, SET RF = 78000013 * DCB ADDRS 78500013 * RD CONTAINS ADDRS OF WINNER RCD 79000013 SPACE 1 79500013 PUT (RF) 80000013 SPACE 1 80500013 *PUT RETURNS ADDRS OF AVAILABLE BUFFER SPACE IN RB 81000013 SPACE 1 81500013 ST RB,PPIDOOBA PASS BUFFER AREA ADDRS TO MERGE 82000013 L RG,PPICOUNT 82500013 LA RG,1(RG) INCREMENT RCD COUNT BY 1 83000013 ST RG,PPICOUNT 83500013 RBL34010 MVC 0(1,RB),0(RD) MOVE RCD TO OUTPUT BUFFER 84000013 L RL,PPIDEB+4 EXIT TO DEBLOCK 84500013 B 4(RL) 85000013 SPACE 2 85500013 *LAST RCD HAS BEEN BLOCKED 86000013 SPACE 1 86500013 RBL34020 L RL,PPIWRT+4 EXIT TO EOJ 87000013 BR RL 87500013 SPACE 2 88000013 *CONSTANTS 88500013 SPACE 1 89000013 KADCB DS 1F CONTAINS ADDRS OF OUTPUT DCB 89500013 EJECT 90000013 SMPPI 90500013 END 91000013 ./ ADD SSI=03012080,SOURCE=1,NAME=IERABM TITLE ' IERABM - OS/360 SORT/MERGE - 360S-SM023 04/21/66' 00300013 SPACE 2 00600013 *MODULE NAME *** IERABM *** 00900013 SPACE 2 01200013 *STATUS:CHANGE LEVEL 000 01500013 SPACE 2 01800013 *MODULE FUNCTION/OPERATION: PHASE 3 ASSIGNMENT MODULE. F.L. WITH E35. 02100013 * THE FUNCTION OF THIS MODULE IS TO INSERT THE ADDRESS OF THE OUTPUT 02400013 * DCB IN IERRBM. IT ALSO CHECKS TO SEE IF ATTACHED IN PHASE 3 AND IF 02700013 * ATTACHED, INSERTS THIS ADDRESS FROM PPIATP3E IN PPIX35. IF NOT 03000013 * ATTACHED EXIT E35 HAS BEEN ACTIVATED THROUGH THE CTL CARDS 03300013 SPACE 2 03600013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 03900013 * 04200013 * N/A 04500013 * 04800013 *LIST OF MACROS USED BY THE MODULE: 05100013 SPACE 1 05400013 * SMPPI 05700013 SPACE 2 06000013 *ENTRY POINTS: 06300013 SPACE 1 06600013 * ENTRY IERABM ENTRY FROM IERRC9 06900013 * CALLING SEQUENCE- 07200013 * LOAD EP=IERABM,DCB=SORTLIB 07500013 * LR RP,RA 07800013 * BALR RO,RP 08100013 SPACE 2 08400013 *INPUT: - PPI FIELDS REFERENCED 08700013 SPACE 1 09000013 * PPISTDCB 09300013 * PPIATP3E 09600013 SPACE 1 09900013 * STARTING ADDR OF THE DCBS AND USER ATTACHED EXIT ADDRESS 10200013 SPACE 2 10500013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED 10800013 SPACE 1 11100013 * NONE 11400013 SPACE 2 11700013 *EXTERNAL ROUTINES: 12000013 SPACE 1 12300013 * NONE 12600013 SPACE 2 12900013 *EXTERNAL PARAMETERS: 13200013 SPACE 1 13500013 * SEE REGISTERS 13800013 SPACE 2 14100013 *EXITS-NORMAL: 14400013 SPACE 1 14700013 * TO IERRC9 EXIT TO IERRC9. 15000013 * CALLING SEQUENCE- 15300013 * BR RO 15600013 SPACE 2 15900013 *EXITS-ERROR 16200013 SPACE 1 16500013 * NONE 16800013 SPACE 2 17100013 *TABLES/WORK AREAS: 17400013 SPACE 1 17700013 * NONE 18000013 SPACE 2 18300013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 18600013 SPACE 2 18900013 *NOTES: THIS MODULE IS USED FOR ANY FIXED LENGTH SORT WITH EXIT E35 19200013 * ACTIVE IN IERRBM. 19500013 EJECT 19800013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 20100013 SPACE 1 20400013 RA EQU 0 CONTENTS IN - N/A 20700013 * USED - NOT USED 21000013 * CONTENTS OUT- N/A 21300013 RB EQU 1 CONTENTS IN- N/A 21600013 * USE- NOT USED 21900013 * CONTENTS OUT- N/A 22200013 RC EQU 2 CONTENTS IN- N/A 22500013 * USE- NOT USED 22800013 * CONTENTS OUT- N/A 23100013 RD EQU 3 CONTENTS IN- N/A 23400013 * USE- NOT USED 23700013 * CONTENTS OUT- N/A 24000013 RE EQU 4 CONTENTS IN - N/A 24300013 * USED - GENERAL WORK REGISTER 24600013 * CONTENTS OUT - N/A 24900013 RF EQU 5 CONTENTS IN - N/A 25200013 * USED - NOT USED 25500013 * CONTENTS OUT - N/A 25800013 RG EQU 6 CONTENTS IN- N/A 26100013 * USE- NOT USED 26400013 * CONTENTS OUT- N/A 26700013 RH EQU 7 CONTENTS IN- N/A 27000013 * USE- NOT USED 27300013 * CONTENTS OUT- N/A 27600013 RI EQU 8 CONTENTS IN- N/A 27900013 * USE- NOT USED 28200013 * CONTENTS OUT- N/A 28500013 RJ EQU 9 CONTENTS IN- N/A 28800013 * USE- NOT USED 29100013 * CONTENTS OUT- N/A 29400013 RK EQU 10 CONTENTS IN - N/A 29700013 * USED - BASE REG FOR IERRBM DSECT 30000013 * CONTENTS OUT - N/A 30300013 RL EQU 11 CONTENTS IN - N/A 30600013 * USED - MODULE BASE REGISTER 30900013 * CONTENTS OUT - N/A 31200013 RM EQU 12 CONTENTS IN - EQUALS OR EXTRACT ADDR 31500013 * USED - NOT USED 31800013 * CONTENTS OUT - EQULS OR EXTRACT ADDR 32100013 RN EQU 13 CONTENTS IN - ADDR OF PPI 32400013 * USED - PPI REFERENCES 32700013 * CONTENTS OUT - ADDR OF PPI 33000013 RO EQU 14 CONTENTS IN - IERRC9 RETURN REG 33300013 * USED - NOT USED 33600013 * CONTENTS OUT - IERRC9 RETURN REG 33900013 RP EQU 15 CONTENTS IN - THIS MODULE ENTRY PT 34200013 * USED - ESTABLISH THIS MOD BASE REG 34500013 * CONTENTS OUT - N/A 34800013 SPACE 2 35100013 *START OF MODULE CODE PROPER: 35400013 SPACE 2 35700013 IERABM CSECT 36000013 *1601 4549 36100018 USING *,RL 36300013 USING IERRBMD,RK ADDR OF R.P. DSECT 36600013 USING IERRCA,RN 36900013 USING DIERAMC,RJ MESSAGE MODULE BASE REG. 37200013 IERMB34 LR RL,RP LOAD MODULE BASE REGISTER 37500013 L RK,PPIBLK+4 ADDR OF IERRBM(R.P) FOR DSECT BASE 37800013 * CALCULATE ADDR OF OUTPUT DCB AND STORE IN R.P. 38100013 SPACE 1 38400013 L RE,PPISTDCB POINTER TO LIST OF DCB ADDRESSES 38700013 MVC WDCB,0(RE) STORE DCB ADDR IN R.P. 39000013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 39300013 BNO ABMNOMES SWITCH OFF BYPASS MESSAGE 39600013 ST RO,ABMSAVO SAVE RO 39900013 L RJ,PPIAMC+4 SET MESSAGE BASE REG. 40200013 L RA,PPILAB04 LOAD ADDR OF OB1 FOR CONVERSION 40500013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 40800013 BAL RO,4(RP) CONVERT 41100013 MVC DMSG942A(8),0(RB) PUT ADDRESS IN MESSAGE 41400013 L RA,PPILAB05 LOAD ADDRESS OF OB2 FOR CONVERSION 41700013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 42000013 BAL RO,4(RP) CONVERT 42300013 MVC DMSG942B(8),0(RB) PUT ADDRESS IN MESSAGE 42600013 LM RA,RB,DMSG942X SET UP FOR PRINTING 42900013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 43200013 BAL RO,12(0,RP) PRINT 43500013 L RO,ABMSAVO RESTORE RO 43800013 ABMNOMES CLC PPIATP3E,KZERO TEST IF ATTACHED EXIT 44100013 BC 7,ABATTEXT YES, BR TO ATTACH EXIT RTN 44400013 SPACE 1 44700013 * BRANCH TO NEXT ASSIGNMENT RTN 45000013 SPACE 1 45300013 ABENDMOD BR RO RETURN TO IERRC9 45600013 SPACE 1 45900013 ABATTEXT MVC PPIX35+4(4),PPIATP3E SET EXIT E35 TO ATTACHED EXIT 46200013 B ABENDMOD BR TO NEXT ASSIGNMENT RTN 46500013 ABMSAVO DC F'0' 46800013 DIERAMC DSECT 47100013 * 47400013 COPY AMCMAIN 47700013 EJECT 48000013 * MODULE NAME *** IERRBM *** USER EXIT E35 **** DUMMY MODULE **** 48300013 SPACE 2 48600013 * THIS MODULE HANDLES FIXED LENGTH RECORDS USING THE IOCS PUT MACRO. 48900013 * THE USER ROUTINE IS EXECUTED ONCE FOR EVERY RECORD LEAVING THE 49200013 * MERGE. THE EXIT OCCURS AFTER THE RECORD TO BE PUT LEAVES THE MERGE. 49500013 * THE USER MAY THEN DO THE FOLLOWING 1. INSERT A RECORD,2. DELETE OR 49800013 * SUMMARIZE A RECORD,OR 3.DO NOTHING, ALTER, LENGTHEN, OR SHORTEN A 50100013 * RECORD. THE USER RETURNS TO THE APPROPRIATE ROUTINE IN THIS MODULE. 50400013 * THE MODULE LINKS TO THE PROPER DEBLOCK OR EOJ MODULE WHEN NEEDED. 50700013 SPACE 1 51000013 * LINKAGE FROM MODULE TO USER IS VIA THE CALL MACRO 51300013 * LINKAGE FROM USER TO MODULE IS VIA RETURN REGISTER PLUS PROPER 51600013 * DISPLACEMENT(DEPENDS ON WHAT RTN THE USER WISHES TO RETURN TO) 51900013 SPACE 1 52200013 * TWO PARAMETERS ARE PASSED TO THE USER. THE ADDR OF THE RECORD 52500013 * LEAVING THE MERGE, AND THE STARTING ADDRESS OF THE AREA IN THE 52800013 * OUTPUT BUFFER INTO WHICH THE PREVIOUS RECORD HAD BEEN PLACED. 53100013 SPACE 1 53400013 * THE USER CAN PASS TWO PARAMETERS TO THE MODULE, THE ADDRESS OF THE 53700013 * RECORD HE WISHES TO INSERT, DO NOTHING, ALTER, LENGTHEN, SHORTEN 54000013 * IN RB, AND A 4 IF HE HAS CHANGED THE INTEGRITY OF THE CONTROL FIELD 54300013 * OF THE RCD COMING FROM THE MERGE OR A ZERO IF HE HAS NOT, IN THE 54600013 * THIRD PARAMETER OF THE PARAMETER LIST 54900013 SPACE 1 55200013 * THE MODULE PASSES THESE PARAMETERS TO THE MERGE FOR SEQUENCE 55500013 * CHECKING AGAINST THE NEXT RECORD THE MERGE PASSES TO THE MODULE 55800013 SPACE 1 56100013 * AT EOJ,MODULE ZEROS OUT PARAM 1 OF THE PARAM LIST TO USER 56400013 SPACE 1 56700013 IERRBMD DSECT 57000013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 57300013 USING IERRCA,RN PUT RN IN USING TABLE WITH PPI ADDR 57600013 SPACE 1 57900013 * ENTER BRANCH TABLE FROM MERGE OR READ PRIME RTN 58200013 SPACE 1 58500013 IERDB34 B RBSETREG FROM MERGE,LAST RECORD, OR 58800013 * FROM READ PRIME ZERO INPUT FILE 59100013 LM RG,RI,PPICOUNT RESTORE COUNTERS 59400013 RBSETPAR ST RD,WMRGRCD SET PARAMETER 1 OF 2 FOR CALL MACRO 59700013 * ADDR OF NEXT RCD FR MERGE TO PUT 60000013 SPACE 1 60300013 * CALL MACRO EXPANSION TO USER EXIT E35 60600013 SPACE 1 60900013 RBUSREXT LA RB,WMRGRCD PARAM LIST ADDR. WILL BE OVLAYED BY 61200013 * B RBLOADRE ON USER EOF 61500013 L RP,PPIX35 IF ATTACH,PPIX35 WILL HAVE ADDR 61800013 * OF ATTACHED EXIT FROM PPI 62100013 BALR RO,RP BR TO USER 62400013 SPACE 1 62700013 * USER RETURNS TO MODULE VIA RETURN REG AND PROPER DISPLACEMENTS 63000013 SPACE 1 63300013 B *+4(15) 63600013 B RBALSHNO BR TO ALTER,LENGTHN,SHRTN,NOTHG RTN 63900013 B RBDELSUM BR TO DELETE-SUMMARIZE RTNE 64200013 B RBUSREOF BR TO USER END OF FILE ROUTINE 64500013 SPACE 1 64800013 * INSERT A RECORD 65100013 SPACE 1 65400013 RBINSRT1 OI WINSRTSW,X'01' TURN INSERT SWITCH ON 65700013 LA RINSERT,1(0,RINSERT) INCR INSERT CTR BY ONE 66000013 LA RCDCTR,1(0,RCDCTR) INCR RCD COUNTER BY ONE, ALSO 66300013 RBOVLAY B RBLOADRE BR TO LOAD ADDR OF RCD FOR MOVE RTN 66600013 SPACE 2 66900013 * ALTER,LENGTHEN,SHORTEN,DO NOTHING TO THE INPUT RECORD FROM THE MERGE. 67200013 SPACE 1 67500013 RBALSHNO MVC PPIDOUO(4),WINTEGSW STORE USER INTEGRITY SWITCH IN PPI 67800013 * FOR MERGE NETWORK SEQU CHECK 68100013 RBLOADRE LR RE,RB STORE ADDR OF RCD FROM THE MERGE IN 68400013 * MOVE RTN REG. THIS INSTR WILL BE 68700013 * OVLAYD BY LR RE,RD ON USER EOF 69000013 L RF,WDCB DCB ADDRESS 69300013 PUT (RF) UPDATE ADDR IN OUTPUT AREA(REG RB) 69600013 SPACE 1 69900013 ST RB,WOPBUFAD SAVE ADDR OF RCD IN OUTPUT BFR TO 70200013 * MOVE RCD(2 OF 2 PARAM TO USER) 70500013 LR RF,RB LOAD ADDR OF OUT AREA FOR MOVE RTN 70800013 L RP,PPIBDSVA+8 LOAD MOVE RTN BASE REG W/ADDR OF 71100013 * MOVE RCD RTN 71400013 BALR RO,RP BR TO MOVE RTN-MOVE RCD TO OUT AREA 71700013 CLI WINSRTSW,X'00' TEST INSERT SWITGH 72000013 BC 8,RBDOOBA OFF,BR TO STORE ADDR OF OUTPUT RCD 72300013 * IN PPI 72600013 NI WINSRTSW,X'00' TURN INSERT SWITCH OFF 72900013 B RBUSREXT BR TO USER EXIT 73200013 SPACE 2 73500013 RBDOOBA ST RB,PPIDOOBA ADDR OF RCD IN OUTPUT BUFFER 73800013 LA RCDCTR,1(0,RCDCTR) INCREMENT RECORD CTR BY ONE 74100013 RBDEBLK STM RG,RI,PPICOUNT SAVE COUNTERS 74400013 SPACE 1 74700013 * INTERFACE TO DEBLOCK MODULE. PASS FILE NO OF WINNER IN HI BYTE OF RD 75000013 SPACE 1 75300013 L RL,PPIDEB+4 LOAD DEBLOCK ADDR 75600013 B 4(0,RL) BR TO DEBLOCK MODULE 75900013 SPACE 2 76200013 * LAST RECORD AND ZERO INPUT FILE ROUTINE 76500013 SPACE 1 76800013 RBSETREG LM RG,RI,PPICOUNT RESTORE COUNTERS 77100013 SR RD,RD ZERO WINNER REG(PARAM 1 TO USER) 77400013 OI WSYSEOF,X'01' SET SYSTEM END OF FILE SWITCH 77700013 CLI WUSREOF,X'00' TEST IF USER END OF FILE SWITCH ON 78000013 BC 7,RBEOJ ON,BR TO END OF JOB MODULE 78300013 B RBSETPAR OFF,BR TO USER ROUTINE 78600013 SPACE 2 78900013 * USER END OF FILE ROUTINE 79200013 SPACE 1 79500013 RBUSREOF OI WUSREOF,X'01' SET USER END OF FILE SWITCH 79800013 MVC RBUSREXT,RBOVLAY OVERLAY USER EXIT(BYPASS EXIT E35) 80100013 MVI RBLOADRE+1,X'43' OVERLAY INSTR(CHANGES RB TO RD) 80400013 MVI PPIDOUO+3,X'00' RESET SWITCH SO MERGE WILL NOW SEQ 80700013 * CHECK THE REST OF THE RCDS 81000013 CLI WSYSEOF,X'00' TEST IF SYSTEM END OF FILE SWITCH ON 81300013 BC 7,RBEOJ ON, BR TO END OF JOB MODULE 81600013 TM PPISW1+3,X'04' ATTACHED SORT 4549 81700018 BO RBEOJ IF YES BR TO EOJ 4549 81800018 B RBLOADRE BR TO LOAD ADDR OF RCD IN RD 81900013 SPACE 2 82200013 * LINKAGE TO END OF JOB MODULE 82500013 RBEOJ STM RG,RI,PPICOUNT SAVE COUNTERS 82800013 L RL,PPIWRT+4 LOAD BASE REG WITH EOJ MODULE ADDR 83100013 BR RL EOJ EXIT TO MODULE NAMED IERRPG 83400013 SPACE 2 83700013 * DELETE OR SUMMARIZE A RECORD 84000013 SPACE 1 84300013 RBDELSUM LA RDELSUMM,1(0,RDELSUMM) INCR DELETE-SUMMARIZE CTR BY ONE 84600013 MVC PPIDOOBA(4),WOPBUFAD ADDR OF RCD IN OUTPUT BFR(THE RCD 84900013 * BEFORE THE DELETD OR SUMRZD RCD) 85200013 CLC PPICOUNT,KZERO CHK IF ANY RCDS HAVE GONE THRU 85500013 BE RBAROUND BR IF DELETING BEGINNING RCDS 85800013 MVC PPIDOUO(4),WINTEGSW STORE USER INTEGRITY SWITCH IN PPI 86100013 * FOR MERGE NETWORK SEQU CHECK 86400013 B RBDEBLK BR TO DEBLOCK MODULE LINKAGE 86700013 SPACE 2 87000013 RBAROUND MVC PPIDOUO,KFOUR NO SEQUENCE CHECK 87300013 B RBDEBLK BR TO DEBLOCK MODULE LINKAGE 87600013 EJECT 87900013 * LIST OF CONSTANTS USED BY THE MODULE 88200013 KZERO DC F'0' ZERO 88500013 KFOUR DC F'4' FOUR 88800013 SPACE 2 89100013 * LIST OF WORK AREAS 89400013 SPACE 1 89700013 WMRGRCD DC F'0' PARAM 1,ADDR OF NEXT RCD TO BE PUT 90000013 WOPBUFAD DC F'0' PARAM 2,ADDR OF LAST RCD PUT(OUTBUF) 90300013 WINTEGSW DC F'0' PARAM3,USER INTEGRITY SWITCH(0 = 90600013 * SEQUENCE CHECK,4 = NO SEQU CHECK) 90900013 WDCB DC F'0' CONTAINS ADDR OF DCB FOR OUTPUT FILE 91200013 * LOADED BY ASSGN RTN 91500013 WINSRTSW DC X'00' INSERT SWITCH 91800013 WSYSEOF DC X'00' SYSTEM END OF FILE SWITCH 92100013 WUSREOF DC X'00' USER END OF FILE SWITCH 92400013 RINSERT EQU RI 92700013 RDELSUMM EQU RH 93000013 RCDCTR EQU RG 93300013 EJECT 93600013 SMPPI 93900013 END 94200013 ./ ADD SSI=02011601,SOURCE=1,NAME=IERABN TITLE ' IERABN - OS/360 SORT/MERGE - 360S-SM023 04/24/66' 00400013 SPACE 2 00800013 *MODULE NAME:*** IERABN *** 01200013 SPACE 2 01600013 *STATUS: CHANGE LEVEL 000 02000013 SPACE 2 02400013 *MODULE FUNCTION/OPERATION: PHASE 3 BLOCK ASSIGNMENT MODULE V.L. RCDS. 02800013 * THE FUNCTION OF THIS MODULE IS TO INSERT THE ADDRESS OF THE OUTPUT 03200013 * DCB IN IERRBN, SO THAT IERRBN MAY HAVE THIS ADDRESS DIRECTLY. 03600013 SPACE 2 04000013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 04400013 * 04800013 * N/A 05200013 * 05600013 *MACROS USED' 06000013 SPACE 1 06400013 * SMPPI 06800013 SPACE 2 07200013 *ENTRY POINTS: 07600013 SPACE 1 08000013 * ENTRY IERABN ENTRY FROM: IERRC9 08400013 * CALLING SEQUENCE- 08800013 * LOAD EP=IERABN,DCB=SORTLIB 09200013 * LR RP,RA 09600013 * BALR RO,RP 10000013 SPACE 2 10400013 *INPUT: PPI FIELDS REFERENCED- 10800013 SPACE 1 11200013 * PPISTDCB 11600013 SPACE 1 12000013 * STARTING ADDR OF THE DCBS 12400013 SPACE 2 12800013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 13200013 SPACE 1 13600013 * NONE 14000013 SPACE 2 14400013 *EXTERNAL ROUTINES: 14800013 SPACE 1 15200013 * NONE 15600013 SPACE 2 16000013 *EXTERNAL PARAMETERS: 16400013 SPACE 1 16800013 * SEE REGISTERS 17200013 SPACE 2 17600013 *EXITS: NORMAL 18000013 SPACE 1 18400013 * IERRC9 EXIT TO IERRC9 18800013 * CALLING SEQUENCE- 19200013 * BR RO 19600013 SPACE 2 20000013 *EXITS: ERROR 20400013 SPACE 1 20800013 * NONE 21200013 SPACE 2 21600013 *TABLES/WORK AREAS: 22000013 SPACE 1 22400013 * NONE 22800013 SPACE 2 23200013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 23600013 SPACE 2 24000013 *NOTES: THIS MODULE IS USED FOR ANY VARIABLE LENGTH SORT WITHOUT EXITS 24400013 EJECT 24800013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 25200013 SPACE 1 25600013 RA EQU 0 CONTENTS IN- N/A 26000013 * USE- NOT USED 26400013 * CONTENTS OUT- N/A 26800013 RB EQU 1 CONTENTS IN- N/A 27200013 * USE- NOT USED 27600013 * CONTENTS OUT- N/A 28000013 RC EQU 2 CONTENTS IN- N/A 28400013 * USE- NOT USED 28800013 * CONTENTS OUT- N/A 29200013 RD EQU 3 CONTENTS IN- N/A 29600013 * USE- NOT USED 30000013 * CONTENTS OUT- N/A 30400013 RE EQU 4 CONTENTS IN- N/A 30800013 * USE- GENERAL WORK REGISTER 31200013 * CONTENTS OUT- N/A 31600013 RF EQU 5 CONTENTS IN- N/A 32000013 * USE- NOT USED 32400013 * CONTENTS OUT- N/A 32800013 RG EQU 6 CONTENTS IN- N/A 33200013 * USE- NOT USED 33600013 * CONTENTS OUT- N/A 34000013 RH EQU 7 CONTENTS IN- N/A 34400013 * USE- NOT USED 34800013 * CONTENTS OUT- N/A 35200013 RI EQU 8 CONTENTS IN- N/A 35600013 * USE- NOT USED 36000013 * CONTENTS OUT- N/A 36400013 RJ EQU 9 CONTENTS IN- N/A 36800013 * USE- NOT USED 37200013 * CONTENTS OUT- N/A 37600013 RK EQU 10 CONTENTS IN- N/A 38000013 * USE- BASE REG FOR IERRBN DSECT 38400013 * CONTENTS OUT- N/A 38800013 RL EQU 11 CONTENTS IN- N/A 39200013 * USE- MODULE BASE REGISTER 39600013 * CONTENTS OUT- N/A 40000013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT ADDR 40400013 * USE- NOT USED 40800013 * CONTENTS OUT- EQUALS OR EXTRACT ADDR 41200013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 41600013 * USE- PPI REFERENCE,REGISTER SAVE 42000013 * AREA 42400013 * CONTENTS OUT- ADDRESS OF PPI 42800013 RO EQU 14 CONTENTS IN- IERRC9 RETURN REG 43200013 * USE- NOT USED 43600013 * CONTENTS OUT- IERRC9 RETURN REG 44000013 RP EQU 15 CONTENTS IN- THIS MODULE ENTRY PT 44400013 * USE- ESTABLISH THIS MOD BASE REG 44800013 * CONTENTS OUT- N/A 45200013 SPACE 2 45600013 *START OF MODULE CODE PROPER: 46000013 SPACE 2 46400013 IERABN CSECT 46800013 USING *,RL 47200013 USING IERRBND,RK ADDR OF R.P. DSECT 47600013 USING IERRCA,RN ADDR OF PPI 48000013 USING DIERAMC,RJ MESSAGE MODULE BASE REG. 48400013 IERMB34 LR RL,RP LOAD MODULE BASE REG 48800013 SPACE 1 49200013 L RK,PPIBLK+4 ADDR OF IERRBN(R.P) FOR DSECT BASE 49600013 * CALCULATE ADDR OF OUTPUT DCB AND STORE IN R.P. 50000013 SPACE 1 50400013 L RE,PPISTDCB POINTER TO LIST OF DCB ADDRESSES 50800013 MVC WDCB,0(RE) STORE OUTPUT DCB ADDR IN R.P. 51200013 SPACE 1 51600013 * BRANCH TO NEXT ASSIGNMENT RTN 52000013 SPACE 1 52400013 L RJ,PPIAMC+4 SET MESSAGE BASE REG. 52800013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 53200013 BNO ABNNOMES SWITCH OFF BYPASS MESSAGE 53600013 ST RO,ABNSAVO SAVE RO 54000013 L RA,PPILAB04 LOAD ADDR OF OB1 FOR CONVERSION 54400013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 54800013 BAL RO,4(RP) CONVERT 55200013 MVC DMSG942A(8),0(RB) PUT ADDRESS IN MESSAGE 55600013 L RA,PPILAB05 LOAD ADDRESS OF OB2 FOR CONVERSION 56000013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 56400013 BAL RO,4(RP) CONVERT 56800013 MVC DMSG942B(8),0(RB) PUT ADDRESS IN MESSAGE 57200013 LM RA,RB,DMSG942X SET UP FOR PRINTING 57600013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 58000013 BAL RO,12(0,RP) PRINT 58400013 L RO,ABNSAVO RESTORE RO 58800013 ABNNOMES BR RO RETURN TO IERRC9 59200013 ABNSAVO DC F'0' 59600013 DIERAMC DSECT 60000013 * 60400013 COPY AMCMAIN 60800013 EJECT 61200013 * MODULE NAME *** IERRBN *** 61600013 SPACE 2 62000013 * MODULE DEFINITION ** THIS MODULE HANDLES VARIABLE LENGTH RECORDS 62400013 * BY WAY OF THE PUT(LOCATE) MACRO. AN IN-LINE MOVE ROUTINE 62800013 * ACTUALLY MOVES THE RECORD THAT THE MERGE NETWORK PASSES THIS 63200013 * MODULE,FROM THE INPUT TO THE OUTPUT BLOCK. 63600013 SPACE 1 64000013 * THERE ARE NO USER MODIFICATIONS IN THIS MODULE. 64400013 SPACE 2 64800013 * START OF MODULE CODE PROPER 65200013 SPACE 1 65600013 IERRBND DSECT , DUMMY MODULE OF REAL R.P. IERRBN *** 66000013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 66400013 USING IERRCA,RN ADDR OF PPI 66800013 USING IHADCB,RH DSECT FOR OUTPUT DCB 67200013 SPACE 1 67600013 * ENTRY TABLE 68000013 SPACE 1 68400013 IERDB34 B RBEOJ FROM MERGE,LAST RECORD 68800013 SPACE 1 69200013 * NORMAL ENTRY FROM MERGE. RD HAS INPUT RCD ADDR 69600013 SPACE 1 70000013 ST RD,WINRCDAD SAVE INPUT ADDR OF NEXT OUTPUT RCD 70400013 L RH,WDCB OUTPUT DCB ADDR 70800013 MVC DCBLRECL(2),0(RD) RCD LENGTH IN DCB FOR PUT MACRO 71200013 LH RI,DCBLRECL LENGTH OF INPUT RCD FOR MOVE RTN 71600013 PUT (RH) UPDATE ADDR IN OUTPUT BLK (REG RB) 72000013 LR RE,RD ADDR OF INPUT RCD 72400013 LR RF,RB ADDR IN OUTPUT BLOCK 72800013 ST RB,PPIDOOBA ADDR OF RCD IN OUTPUT BLK FOR MERGE 73200013 * SEQUENCE CHECK 73600013 SPACE 1 74000013 * GENERALIZED MOVE RTN USED TO MOVE ANY SIZED DATA RCD FROM ONE 74400013 * DATA AREA TO ANOTHER. REGISTERS ARE USED AS FOLLOWS- 74800013 SPACE 1 75200013 * RE ADDR FROM WHICH THE DATA IS TO BE MOVED 75600013 * RF ADDR TO WHICH THE DATA IS TO BE MOVED 76000013 * RI DATA RCD LENGTH 76400013 SPACE 1 76800013 * IN ADDITION, THE ROUTINE USES REGISTERS RG AND RH 77200013 SPACE 1 77600013 * THE ROUTINE DOES ALL INTERMEDIARY UPDATING OF REGISTERS. UPON 78000013 * COMPLETION OF THE MOVE THE REGISTERS CONTAIN- 78400013 SPACE 1 78800013 * RE FROM ADDR.STILL NEEDING ITS FINAL UPDATE(VIA RI) 79200013 * RF TO ADDR.STILL NEEDING ITS FINAL UPDATE(VIA RI) 79600013 * RI REMAINING RCD LENGTH 80000013 SPACE 1 80400013 CL RI,KON256 RCD LENGTH TO 256 80800013 BC 12,RBNMV020 LESS THAN OR EQUAL 81200013 SPACE 1 81600013 LA RH,256 SET UP TO MOVE RCD IN SECTIONS OF 82000013 LNR RG,RH 256 BYTES EACH 82400013 RBKMOVE MVC 0(256,RF),0(RE) 82800013 AR RE,RH UPDATE DATA AREA POINTERS BY 256 83200013 AR RF,RH BYTES 83600013 BXLE RI,RG,RBNMV020 TEST FOR REMAINING LENGTH--LE 256 84000013 BC 15,RBKMOVE ANOTHER FULL MOVE OF 256 BYTES NEEDD 84400013 SPACE 2 84800013 KON256 DC F'256' 85200013 KMOVE1 MVC 0(1,RF),0(RE) 85600013 RBNMV020 LR RG,RI MOVE LENGTH LE 256 BYTES 86000013 BCTR RG,0 DECR RG BY ONE 86400013 EX RG,KMOVE1 86800013 SPACE 1 87200013 * END OF GENERALIZED MOVE ROUTINE 87600013 SPACE 1 88000013 L RG,PPICOUNT LOAD RCD COUNTER 88400013 LA RG,1(0,RG) INCR RCD COUNTER BY 1 88800013 ST RG,PPICOUNT SAVE RCD COUNTER 89200013 SPACE 1 89600013 * INTERFACE TO DEBLOCK MODULE. REG RD STILL HAS INPUT RCD ADDR OF 90000013 * WINNER,AND FILE NO IN HI ORDER BYTE 90400013 SPACE 1 90800013 L RL,PPIDEB+4 ADDR OF DEBLOCK MODULE 91200013 B 4(RL) BR TO DEBLOCK MODULE 91600013 SPACE 2 92000013 * LAST RCD WAS PUT. INTERFACE TO END OF JOB MODULE 92400013 SPACE 1 92800013 RBEOJ L RL,PPIWRT+4 ADDR OF END OF JOB MODULE 93200013 BR RL BR TO END OF JOB MODULE 93600013 SPACE 1 94000013 * LIST OF WORK AREAS USED BY THE MODULE 94400013 SPACE 1 94800013 WDCB DC F'0' ADDR OF DCB FOR OUTPUT FILE.LOADED 95200013 * BY A.P. 95600013 WINRCDAD DC F'0' INPUT ADDR OF NEXT OUTPUT RCD 96000013 EJECT 96400013 SMPPI 96800013 EJECT 97200013 DCBD DSORG=PS CALL DUMMY DCB 97600013 END 98000013 ./ ADD SSI=03012080,SOURCE=1,NAME=IERABO TITLE ' IERABO - OS/360 SORT/MERGE - 360S-SM023 04/22/66' 00200013 SPACE 2 00400013 *MODULE NAME:*** IERABO *** 00600013 SPACE 2 00800013 *STATUS: CHANGE LEVEL 000 01000013 SPACE 2 01200013 *MODULE FUNCTION/OPERATION: PHASE 3 ASSIGNMENT MODULE. V.L WITH E35. 01400013 * THE FUNCTION OF THIS MODULE IS TO INSERT THE ADDRESS OF THE OUTPUT 01600013 * DCB IN IERRBN. IT ALSO CHECKS TO SEE IF ATTACHED IN PHASE 3 AND IF 01800013 * ATTACHED, INSERTS THIS ADDRESS FROM PPIATP3E IN PPIX35. IF NOT 02000013 * ATTACHED EXIT E35(PPIX35) HAS BEEN ACTIVATED THROUGH CONTROL CARDS. 02200013 SPACE 2 02400013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 02600013 * 02800013 * N/A 03000013 * 03200013 *MACROS USED' 03400013 SPACE 1 03600013 * SMPPI 03800013 SPACE 2 04000013 *ENTRY POINTS: 04200013 SPACE 1 04400013 * ENTRY IERABO ENTRY FROM: IERRC9 04600013 * CALLING SEQUENCE- 04800013 * LOAD EP=IERABM,DCB=SORTLIB 05000013 * LR RP,RA 05200013 * BALR RO,RP 05400013 SPACE 2 05600013 *INPUT: PPI FIELDS REFERENCED- 05800013 SPACE 1 06000013 * PPISTDCB 06200013 * PPIATP3E 06400013 SPACE 1 06600013 * ADDRESS OF DCBS IN GENERATED CORE AND ADDRESS OF ATTACHED EXIT 06800013 SPACE 2 07000013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 07200013 SPACE 1 07400013 * PPIX35 07600013 SPACE 1 07800013 * IF ATTACHED WILL HAVE ATTACHED ADDRESS 08000013 SPACE 2 08200013 *EXTERNAL ROUTINES: 08400013 SPACE 1 08600013 * NONE 08800013 SPACE 2 09000013 *EXTERNAL PARAMETERS: 09200013 SPACE 1 09400013 * SEE REGISTERS 09600013 SPACE 2 09800013 *EXITS: NORMAL 10000013 SPACE 1 10200013 * TO IERRC9 EXIT TO IERRC9 10400013 * CALLING SEQUENCE- 10600013 * BR RO 10800013 SPACE 2 11000013 *EXITS: ERROR 11200013 SPACE 1 11400013 * NONE 11600013 SPACE 2 11800013 *TABLES/WORK AREAS: 12000013 SPACE 1 12200013 * NONE 12400013 SPACE 2 12600013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 12800013 SPACE 2 13000013 *NOTES: 13200013 SPACE 1 13400013 * THIS MODULE IS USED FOR ANY VARIABLE LENGTH SORT WITH EXIT E35 13600013 EJECT 13800013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 14000013 SPACE 1 14200013 RA EQU 0 CONTENTS IN- N/A 14400013 * USE- NOT USED 14600013 * CONTENTS OUT- N/A 14800013 RB EQU 1 CONTENTS IN- N/A 15000013 * USE- NOT USED 15200013 * CONTENTS OUT- N/A 15400013 RC EQU 2 CONTENTS IN- N/A 15600013 * USE- NOT USED 15800013 * CONTENTS OUT- N/A 16000013 RD EQU 3 CONTENTS IN- N/A 16200013 * USE- NOT USED 16400013 * CONTENTS OUT- N/A 16600013 RE EQU 4 CONTENTS IN- N/A 16800013 * USE- GENERAL WORK REGISTER 17000013 * CONTENTS OUT- N/A 17200013 RF EQU 5 CONTENTS IN- N/A 17400013 * USE- NOT USED 17600013 * CONTENTS OUT- N/A 17800013 RG EQU 6 CONTENTS IN- N/A 18000013 * USE- NOT USED 18200013 * CONTENTS OUT- N/A 18400013 RH EQU 7 CONTENTS IN- N/A 18600013 * USE- NOT USED 18800013 * CONTENTS OUT- N/A 19000013 RI EQU 8 CONTENTS IN- N/A 19200013 * USE- NOT USED 19400013 * CONTENTS OUT- N/A 19600013 RJ EQU 9 CONTENTS IN- N/A 19800013 * USE- NOT USED 20000013 * CONTENTS OUT- N/A 20200013 RK EQU 10 CONTENTS IN- N/A 20400013 * USE- BASE REGISTER FOR IERRBO DSECT 20600013 * CONTENTS OUT- N/A 20800013 RL EQU 11 CONTENTS IN- N/A 21000013 * USE- MODULE BASE REGISTER 21200013 * CONTENTS OUT- N/A 21400013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT ADDR 21600013 * USE- NOT USED 21800013 * CONTENTS OUT- EQUALS OR EXTRACT ADDR 22000013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 22200013 * USE- PPI REFERENCE,REGISTER SAVE 22400013 * AREA 22600013 * CONTENTS OUT- ADDRESS OF PPI 22800013 RO EQU 14 CONTENTS IN - IERRC9 RETURN REG 23000013 * USE- NOT USED 23200013 * CONTENTS OUT- IERRC9 RETURN REG 23400013 RP EQU 15 CONTENTS IN- THIS MODULE ENTRY PT 23600013 * USE- ESTABLISH THIS MOD BASE REG 23800013 * CONTENTS OUT- N/A 24000013 SPACE 2 24200013 *START OF MODULE CODE PROPER: 24400013 SPACE 2 24600013 IERABO CSECT 24800013 *1601 4549 24900018 USING *,RL 25000013 USING IERRBOD,RK ADDR OF R.P. DSECT 25200013 USING IERRCA,RN 25400013 USING DIERAMC,RJ MESSAGE MOD BASE REG. 25600013 IERMB34 LR RL,RP LOAD MODULE BASE REG 25800013 L RK,PPIBLK+4 ADDR OF IERRBO (R.P) FOR DSECT BASE 26000013 * CALCULATE ADDR OF OUTPUT DCB AND STORE IN R.P. 26200013 SPACE 1 26400013 L RE,PPISTDCB POINTER TO LIST OF DCB ADDRESSES 26600013 L RE,0(0,RE) GET OUTPUT D C B ADDR. 26800013 ST RE,WDCB STORE DCB ADDR IN R.P. 27000013 L RJ,PPIAMC+4 SET MESSAGE BASE REG. 27200013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 27400013 BNO ABONOMES SWITCH OFF BYPASS MESSAGE 27600013 ST RO,ABOSAVO SAVE RO 27800013 L RA,PPILAB04 LOAD ADDR OF OB1 FOR CONVERSION 28000013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 28200013 BAL RO,4(RP) CONVERT 28400013 MVC DMSG942A(8),0(RB) PUT ADDRESS IN MESSAGE 28600013 L RA,PPILAB05 LOAD ADDRESS OF OB2 FOR CONVERSION 28800013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 29000013 BAL RO,4(RP) CONVERT 29200013 MVC DMSG942B(8),0(RB) PUT ADDRESS IN MESSAGE 29400013 LM RA,RB,DMSG942X SET UP FOR PRINTING 29600013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 29800013 BAL RO,12(0,RP) PRINT 30000013 L RO,ABOSAVO RESTORE RO 30200013 ABONOMES CLC PPIATP3E,KZERO TEST IF ATTACHED EXIT 30400013 BC 7,ABATTEXT YES, BR TO ATTACH EXIT RTN 30600013 SPACE 1 30800013 * BRANCH TO NEXT ASSIGNMENT RTN 31000013 SPACE 1 31200013 ABENDMOD BR RO RETURN TO IERRC9 31400013 SPACE 1 31600013 ABATTEXT MVC PPIX35+4(4),PPIATP3E SET EXIT E35 TO ATTACHED EXIT 31800013 B ABENDMOD 32000013 SPACE 2 32200013 ABOSAVO DC F'0' 32400013 DIERAMC DSECT 32600013 * 32800013 COPY AMCMAIN 33000013 EJECT 33200013 * MODULE NAME *** IERRBO *** USER EXIT E35 **** DUMMY MODULE **** 33400013 SPACE 2 33600013 * THIS MODULE HANDLES VARIABLE LENGTH RECORDS USING THE IOCS PUT MACRO. 33800013 * THE USER ROUTINE IS EXECUTED ONCE FOR EVERY RECORD LEAVING THE 34000013 * MERGE. THE EXIT OCCURS AFTER THE RECORD TO BE PUT LEAVES THE MERGE. 34200013 * THE USER MAY THEN DO THE FOLLOWING 1. INSERT A RECORD,2. DELETE OR 34400013 * SUMMARIZE A RECORD,OR 3.DO NOTHING, ALTER, LENGTHEN, OR SHORTEN A 34600013 * RECORD. THE USER RETURNS TO THE APPROPRIATE ROUTINE IN THIS MODULE. 34800013 * THE MODULE LINKS TO THE PROPER DEBLOCK OR EOJ MODULE WHEN NEEDED. 35000013 SPACE 1 35200013 * LINKAGE FROM MODULE TO USER IS VIA THE CALL MACRO 35400013 * LINKAGE FROM USER TO MODULE IS VIA RETURN REGISTER PLUS PROPER 35600013 * DISPLACEMENT(DEPENDS ON WHAT RTN THE USER WISHES TO RETURN TO) 35800013 SPACE 1 36000013 * TWO PARAMETERS ARE PASSED TO THE USER. THE ADDR OF THE RECORD 36200013 * LEAVING THE MERGE, AND THE STARTING ADDRESS OF THE AREA IN THE 36400013 * OUTPUT BUFFER INTO WHICH THE PREVIOUS RECORD HAD BEEN PLACED. 36600013 SPACE 1 36800013 * THE USER CAN PASS TWO PARAMETERS TO THE MODULE, THE ADDRESS OF THE 37000013 * RECORD HE WISHES TO INSERT, DO NOTHING, ALTER, LENGTHEN, SHORTEN 37200013 * IN RB, AND A 4 IF HE HAS CHANGED THE INTEGRITY OF THE CONTROL FIELD 37400013 * OF THE RCD COMING FROM THE MERGE OR A ZERO IF HE HAS NOT, IN THE 37600013 * THIRD PARAMETER OF THE PARAMETER LIST 37800013 SPACE 1 38000013 * THE MODULE PASSES THESE PARAMETERS TO THE MERGE FOR SEQUENCE 38200013 * CHECKING AGAINST THE NEXT RECORD THE MERGE PASSES TO THE MODULE 38400013 SPACE 1 38600013 * AT EOJ,MODULE ZEROS OUT PARAM 1 OF THE PARAM LIST TO USER 38800013 SPACE 1 39000013 * THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A PARTICULAR 39200013 * REPRESENTATION OF THE EXTERNAL CHARACTER SET 39400013 SPACE 2 39600013 IERRBOD DSECT 39800013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 40000013 USING IERRCA,RN PUT RN IN USING TABLE WITH PPI ADDR 40200013 USING IHADCB,RF 40400013 SPACE 1 40600013 * ENTER BRANCH TABLE FROM MERGE OR READ PRIME RTN 40800013 SPACE 1 41000013 IERDB34 B RBSETREG FROM MERGE,LAST RECORD, OR 41200013 * FROM READ PRIME ZERO INPUT FILE 41400013 LM RG,RI,PPICOUNT RESTORE COUNTERS 41600013 RBSETPAR ST RD,WMRGRCD SET PARAMETER 1 OF 2 FOR CALL MACRO 41800013 * ADDR OF NEXT RCD FR MERGE TO PUT 42000013 SPACE 1 42200013 * CALL MACRO EXPANSION TO USER EXIT E35 42400013 SPACE 1 42600013 RBUSREXT LA RB,WMRGRCD PARAM LIST ADDR. WILL BE OVLAYED BY 42800013 * B RBLOADRE ON USER EOF 43000013 L RP,PPIX35+4 IF ATTACHED ,PPIX35 WILL HAVE ADD 43200013 * OF ATTACHED EXIT FROM PPI 43400013 BALR RO,RP BR TO USER 43600013 SPACE 1 43800013 * USER RETURNS TO MODULE VIA RETURN REG AND PROPER DISPLACEMENTS 44000013 SPACE 1 44200013 B *+4(15) 44400013 B RBALSHNO BR TO ALTER,LENGTHN,SHRTN,NOTHG RTN 44600013 B RBDELSUM BR TO DELETE-SUMMARIZE RTNE 44800013 B RBUSREOF BR TO USER END OF FILE ROUTINE 45000013 SPACE 1 45200013 * INSERT A RECORD 45400013 SPACE 1 45600013 RBINSRT1 OI WINSRTSW,X'01' TURN INSERT SWITCH ON 45800013 LA RINSERT,1(0,RINSERT) INCR INSERT CTR BY ONE 46000013 LA RCDCTR,1(0,RCDCTR) INCR RCD COUNTER BY ONE, ALSO 46200013 RBOVLAY B RBLOADRE BR TO LOAD ADDR OF RCD FOR MOVE RTN 46400013 SPACE 2 46600013 * ALTER,LENGTHEN,SHORTEN,DO NOTHING TO THE INPUT RECORD FROM THE MERGE. 46800013 SPACE 1 47000013 RBALSHNO MVC PPIDOUO(4),WINTEGSW STORE USER INTEGRITY SWITCH IN PPI 47200013 * FOR MERGE NETWORK SEQU CHECK 47400013 RBLOADRE MVC WRCDLGTH+2(2),0(RB) MOVE RCD LENGTH TO A BOUNDARY. RB 47600013 * WILL BE OVLAYD BY RD ON USER EOF. 47800013 RBOVLAY1 LR RE,RB STORE ADDR OF RCD FROM THE MERGE IN 48000013 * MOVE RTN REG. THIS INSTR WILL BE 48200013 * OVLAYD BY LR RE,RD ON USER EOF 48400013 L RF,WDCB DCB ADDRESS 48600013 MVC DCBLRECL(2),WRCDLGTH+2 RCD LENGTH 48800013 PUT (RF) UPDATE ADDR IN OUTPUT AREA(REG RB) 49000013 SPACE 2 49200013 ST RB,WOPBUFAD SAVE ADDR OF RCD IN OUTPUT BFR TO 49400013 * MOVE RCD(2 OF 2 PARAM TO USER) 49600013 LR RF,RB LOAD ADDR OF OUT AREA FOR MOVE RTN 49800013 STM RG,RI,PPICOUNT SAVE COUNTERS 50000013 L RI,WRCDLGTH LENGTH OF RCD FOR MOVE RTN 50200013 SPACE 1 50400013 * GENERALIZED MOVE RTN USED TO MOVE ANY SIZE DATA RCD FROM ONE DATA 50600013 * AREA TO ANOTHER, REGISTERS ARE USED AS FOLLOWS- 50800013 SPACE 1 51000013 * RE ADDR FROM WHICH THE DATA IS TO BE MOVED 51200013 * RF ADDR TO WHICH THE DATA IS TO BE MOVED 51400013 * RI DATA RCD LENGTH 51600013 SPACE 1 51800013 * IN ADDITION THE ROUTINE USES REGISTERS RG AND RH 52000013 SPACE 1 52200013 CL RI,KON256 RCD LENGTH TO 256 52400013 BC 12,RBNMV020 LESS THAN OR EQUAL 52600013 SPACE 1 52800013 LA RH,256 SET UP TO MOVE RCD IN SECTIONS OF 53000013 LNR RG,RH 256 BYTES EACH 53200013 RBKMOVE MVC 0(256,RF),0(RE) 53400013 AR RE,RH UPDATE DATA AREA POINTERS BY 256 53600013 AR RF,RH BYTES 53800013 BXLE RI,RG,RBNMV020 TEST FOR REMAINING LENGTH--LE 256 54000013 BC 15,RBKMOVE ANOTHER FULL MOVE OF 256 BYTES NEEDD 54200013 SPACE 1 54400013 KON256 DC F'256' 54600013 KMOVE1 MVC 0(1,RF),0(RE) 54800013 RBNMV020 LR RG,RI MOVE LENGTH LE 256 BYTES 55000013 BCTR RG,0 DECR RG BY ONE 55200013 EX RG,KMOVE1 55400013 SPACE 1 55600013 * END OF GENERALIZED MOVE ROUTINE. 55800013 SPACE 1 56000013 LM RG,RI,PPICOUNT RESTORE REGISTERS 56200013 CLI WINSRTSW,X'00' TEST INSERT SWITGH 56400013 BC 8,RBDOOBA OFF,BR TO STORE ADDR OF OUTPUT RCD 56600013 * IN PPI 56800013 NI WINSRTSW,X'00' TURN INSERT SWITCH OFF 57000013 B RBUSREXT BR TO USER EXIT 57200013 SPACE 2 57400013 RBDOOBA ST RB,PPIDOOBA ADDR OF RCD IN OUTPUT BUFFER 57600013 LA RCDCTR,1(0,RCDCTR) INCREMENT RECORD CTR BY ONE 57800013 RBDEBLK STM RG,RI,PPICOUNT SAVE COUNTERS 58000013 SPACE 1 58200013 * INTERFACE TO DEBLOCK MODULE. PASS FILE NO OF WINNER IN HI BYTE OF RD 58400013 SPACE 1 58600013 L RL,PPIDEB+4 DEBLOCK ADDRESS 58800013 B 4(0,RL) BR TO DEBLOCK MODULE 59000013 SPACE 2 59200013 * LAST RECORD AND ZERO INPUT FILE ROUTINE 59400013 SPACE 1 59600013 RBSETREG LM RG,RI,PPICOUNT RESTORE COUNTERS 59800013 SR RD,RD ZERO WINNER REG(PARAM 1 TO USER) 60000013 OI WSYSEOF,X'01' SET SYSTEM END OF FILE SWITCH 60200013 CLI WUSREOF,X'00' TEST IF USER END OF FILE SWITCH ON 60400013 BC 7,RBEOJ ON,BR TO END OF JOB MODULE 60600013 B RBSETPAR OFF,BR TO USER ROUTINE 60800013 SPACE 2 61000013 * USER END OF FILE ROUTINE 61200013 SPACE 1 61400013 RBUSREOF OI WUSREOF,X'01' SET USER END OF FILE SWITCH 61600013 MVC RBUSREXT,RBOVLAY OVERLAY USER EXIT(BYPASS EXIT E35) 61800013 MVI RBLOADRE+4,X'30' OVERLAY INSTR(CHANGES RB TO RD) 62000013 MVI RBOVLAY1+1,X'43' OVERLAY INSTR(CHANGES RB TO RD) 62200013 MVI PPIDOUO+3,X'00' RESET SWITCH SO MERGE WILL NOW SEQ 62400013 * CHECK THE REST OF THE RCDS 62600013 CLI WSYSEOF,X'00' TEST IF SYSTEM END OF FILE SWITCH ON 62800013 BC 7,RBEOJ ON, BR TO END OF JOB MODULE 63000013 TM PPISW1+3,X'04' ATTACHED SORT 4549 63060018 BO RBEOJ IF YES BR TO EOJ 4549 63120018 B RBLOADRE BR TO LOAD ADDR OF RCD IN RD 63200013 SPACE 2 63400013 * LINKAGE TO END OF JOB MODULE 63600013 RBEOJ L RL,PPIWRT+4 END OF JOB ADDRESS 63800013 BR RL EOJ EXIT TO MODULE NAMED IERRPG 64000013 SPACE 2 64200013 * DELETE OR SUMMARIZE A RECORD 64400013 SPACE 1 64600013 RBDELSUM LA RDELSUMM,1(0,RDELSUMM) INCR DELETE-SUMMARIZE CTR BY ONE 64800013 MVC PPIDOOBA(4),WOPBUFAD ADDR OF RCD IN OUTPUT BFR(THE RCD 65000013 * BEFORE THE DELETD OR SUMRZD RCD) 65200013 CLC PPICOUNT,KZERO CHK IF ANY RCDS HAVE GONE THRU 65400013 BE RBAROUND BR IF DELETING BEGINNING RCDS 65600013 MVC PPIDOUO(4),WINTEGSW STORE USER INTEGRITY SWITCH IN PPI 65800013 * FOR MERGE NETWORK SEQU CHECK 66000013 B RBDEBLK BR TO DEBLOCK MODULE LINKAGE 66200013 SPACE 2 66400013 RBAROUND MVC PPIDOUO,KFOUR NO SEQUENCE CHECK 66600013 B RBDEBLK BR TO DEBLOCK MODULE LINKAGE 66800013 SPACE 2 67000013 * LIST OF CONSTANTS USED BY THE MODULE 67200013 KZERO DC F'0' ZERO 67400013 KFOUR DC F'4' FOUR 67600013 SPACE 2 67800013 * LIST OF WORK AREAS 68000013 SPACE 1 68200013 WRCDLGTH DC F'0' RECORD LENGTH 68400013 WMRGRCD DC F'0' PARAM 1,ADDR OF NEXT RCD TO BE PUT 68600013 WOPBUFAD DC F'0' PARAM 2,ADDR OF LAST RCD PUT(OUTBUF) 68800013 WINTEGSW DC F'0' PARAM3,USER INTEGRITY SWITCH(0 = 69000013 * SEQUENCE CHECK,4 = NO SEQU CHECK) 69200013 WDCB DC F'0' CONTAINS ADDR OF DCB FOR OUTPUT FILE 69400013 * LOADED BY ASSGN RTN 69600013 WINSRTSW DC X'00' INSERT SWITCH 69800013 WSYSEOF DC X'00' SYSTEM END OF FILE SWITCH 70000013 WUSREOF DC X'00' USER END OF FILE SWITCH 70200013 RINSERT EQU RI 70400013 RDELSUMM EQU RH 70600013 RCDCTR EQU RG 70800013 SPACE 2 71000013 EJECT 71200013 SMPPI 71400013 EJECT 71600013 DCBD DSORG=PS 71800013 END 72000013 ./ ADD SSI=02011601,SOURCE=1,NAME=IERABP TITLE ' IERABP - OS/360 SORT/MERGE - 360-SM-023 03/01/65 ' 00500013 *MODULE NAME:*** IERABP *** 01000013 SPACE 2 01500013 *STATUS: CHANGE LEVEL 000 02000013 SPACE 2 02500013 *MODULE FUNCTION/OPERATION: 03000013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBP. IT IS USED 03500013 * IN FINAL MERGE PHASE OR MERGE ONLY FOR FIXED LENGTH RECORDS GREATER 04000013 * THAN 256 BYTES. 04500013 SPACE 2 05000013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 05500013 * 06000013 * N/A 06500013 * 07000013 *MACROS USED' 07500013 SPACE 1 08000013 * SMPPI 08500013 SPACE 2 09000013 *ENTRY POINTS: 09500013 SPACE 1 10000013 * ENTRY IERABP ENTRY FROM:IERRC9 10500013 * CALLING SEQUENCE-L RP,ASSG 11000013 * BALR RO,RP 11500013 SPACE 2 12000013 *INPUT: PPI FIELDS REFERENCED- 12500013 SPACE 1 13000013 * PPISTDCB 13500013 SPACE 2 14000013 *OUTPUT' 14500013 SPACE 1 15000013 * SETS CONSTANT IN RUNNING PROGRAM. 15500013 * NO PPI FIELDS ALTERED 16000013 SPACE 2 16500013 *EXTERNAL ROUTINES: 17000013 SPACE 1 17500013 * N/A 18000013 SPACE 2 18500013 *EXTERNAL PARAMETERS: 19000013 SPACE 1 19500013 * PPIBLK-ADDRESS OF RUNNING PROGRAM TO ADDRESS DSECT 20000013 SPACE 2 20500013 *EXITS: NORMAL 21000013 SPACE 1 21500013 * BR RO RETURN TO LOAD MODULE IERRC9 22000013 SPACE 2 22500013 *EXITS: ERROR 23000013 SPACE 1 23500013 * N/A 24000013 SPACE 2 24500013 *TABLES/WORK AREAS: 25000013 SPACE 1 25500013 * N/A 26000013 SPACE 2 26500013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 27000013 SPACE 2 27500013 *NOTES: 28000013 SPACE 1 28500013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS GREATER THAN 256 BYTES 29000013 EJECT 29500013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 30000013 SPACE 1 30500013 RA EQU 0 CONTENTS IN-N/A 31000013 * USE-N/A 31500013 * CONTENTS OUT-N/A 32000013 RB EQU 1 CONTENTS IN-N/A 32500013 * USE-N/A 33000013 * CONTENTS OUT-N/A 33500013 RC EQU 2 CONTENTS IN-N/A 34000013 * USE-N/A 34500013 * CONTENTS OUT-N/A 35000013 RD EQU 3 CONTENTS IN-N/A 35500013 * USE-N/A 36000013 * CONTENTS OUT-N/A 36500013 RE EQU 4 CONTENTS IN-N/A 37000013 * USE-N/A 37500013 * CONTENTS OUT-N/A 38000013 RF EQU 5 CONTENTS IN-N/A 38500013 * USE-WORK REGISTER 39000013 * CONTENTS OUT-N/A 39500013 RG EQU 6 CONTENTS IN-N/A 40000013 * USE-N/A 40500013 * CONTENTS OUT-N/A 41000013 RH EQU 7 CONTENTS IN-N/A 41500013 * USE-WORK REGISTER 42000013 * CONTENTS OUT-N/A 42500013 RI EQU 8 CONTENTS IN-N/A 43000013 * USE-DSECT BASE REGISTER 43500013 * CONTENTS OUT-N/A 44000013 RJ EQU 9 CONTENTS IN-N/A 44500013 * USE-N/A 45000013 * CONTENTS OUT-N/A 45500013 RK EQU 10 CONTENTS IN-N/A 46000013 * USE-N/A 46500013 * CONTENTS OUT-N/A 47000013 RL EQU 11 CONTENTS IN-N/A 47500013 * USE-MODULE BASE REGISTER 48000013 * CONTENTS OUT-N/A 48500013 RM EQU 12 CONTENTS IN-N/A 49000013 * USE-N/A 49500013 * CONTENTS OUT-N/A 50000013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 50500013 * USE- PPI REFERENCE,REGISTER SAVE 51000013 * AREA 51500013 * CONTENTS OUT- ADDRESS OF PPI 52000013 RO EQU 14 CONTENTS IN-ADDRS OF LOAD MODULE 52500013 * USE-RETURN REG 53000013 * CONTENTS OUT-ADDRS OF LOAD MODULE 53500013 RP EQU 15 CONTENTS IN-MODULE ADDRS 54000013 * USE-SET BASE REG 54500013 * CONTENTS OUT-N/A 55000013 SPACE 2 55500013 *START OF MODULE CODE PROPER: 56000013 SPACE 2 56500013 IERABP CSECT 57000013 USING *,RL 57500013 USING DIERRBP,RI 58000013 USING IERRCA,RN 58500013 USING DIERAMC,RJ MESSAGE MOD BASE REG. 59000013 IERMB34 LR RL,RP 59500013 L RI,PPIBLK+4 SET DSECT BASE REG 60000013 SPACE 3 60500013 L RH,PPISTDCB SET ADDRESS OF OUTPUT 61000013 L RF,0(RH) DCB IN RUNNING 61500013 ST RF,KADCB PROGRAM 62000013 L RJ,PPIAMC+4 SET MESSAGE BASE REG. 62500013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 63000013 BNO ABPNOMES SWITCH OFF BYPASS MESSAGE 63500013 ST RO,ABPSAVO SAVE RO 64000013 L RA,PPILAB04 LOAD ADDR OF OB1 FOR CONVERSION 64500013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 65000013 BAL RO,4(RP) CONVERT 65500013 MVC DMSG942A(8),0(RB) PUT ADDRESS IN MESSAGE 66000013 L RA,PPILAB05 LOAD ADDRESS OF OB2 FOR CONVERSION 66500013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 67000013 BAL RO,4(RP) CONVERT 67500013 MVC DMSG942B(8),0(RB) PUT ADDRESS IN MESSAGE 68000013 LM RA,RB,DMSG942X SET UP FOR PRINTING 68500013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 69000013 BAL RO,12(0,RP) PRINT 69500013 L RO,ABPSAVO RESTORE RO 70000013 ABPNOMES BR RO RETURN TO LOAD MODULE 70500013 ABPSAVO DC F'0' 71000013 DIERAMC DSECT 71500013 * 72000013 COPY AMCMAIN 72500013 EJECT 73000013 *** IERRBP *** 73500013 SPACE 2 74000013 DIERRBP DSECT 74500013 *DUMMY RUNNING PROGRAM 75000013 IERDB34 B RBP010 ENTRY POINT FROM MERGE . LAST RECORD 75500013 LR RE,RD NORMAL ENTRY POINT FROM MERGE, SAVES 76000013 * WINNER TEMPORARILY 76500013 L RF,KADCB SET RF = DCB ADDRS 77000013 SPACE 2 77500013 PUT (RF) 78000013 *PUT RETURNS ADDRES OF AVAILABLE SPACE IN BUFFER AREA WHERE RCD CAN BE 78500013 *MOVED. 79000013 SPACE 1 79500013 ST RB,PPIDOOBA PASS BUFFER AREA ADDRS TO MERGE 80000013 L RG,PPICOUNT 80500013 LA RG,1(RG) INCREMENT RCD COUNT BY 1 81000013 ST RG,PPICOUNT 81500013 LR RF,RB SET RF = ADDRS OF BUFFER AREA 82000013 LR RD,RE RESTORE WINNER FOR DEBLOCK 82500013 L RP,PPIBDSVA+8 LINK TO MOVE LIST, MOVE RCD FROM 83000013 BALR RO,RP INPUT BUFFER TO OUTPUT BUFFER 83500013 SPACE 1 84000013 L RL,PPIDEB+4 EXIT TO DEBLOCK 84500013 B 4(RL) 85000013 SPACE 2 85500013 *LAST RECORD HAS BEEN BLOCKED 86000013 SPACE 1 86500013 RBP010 L RL,PPIWRT+4 EXIT TO EOJ 87000013 BR RL 87500013 SPACE 2 88000013 DS 0F 88500013 *CONSTANTS 89000013 SPACE 1 89500013 KADCB DS 1F ADDRS OF OUTPUT DCB 90000013 EJECT 90500013 SMPPI 91000013 END 91500013 ./ ADD SSI=03011881,SOURCE=1,NAME=IERABQ TITLE 'IERABQ O/S 360 SORT/MERGE 360S-SM-023 3/1/65' 00300013 *MODULE NAME *** IERABQ *** 00600013 SPACE 2 00900013 *STATUS:CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: PHASE 3 MOVE ASSIGNMENT -FIXED LEN.RCDS. 01800013 * THIS MODULE CONSTRUCTS THE MOVE LIST FOR FIXED LENGTH OUTPUT 02100013 * RECORDS OF SIZE GREATER THAN 256 BYTES OR MODIFIED VIA E35. THE 02400013 * LIST IS USED TO MOVE DATA FROM BUFFER AREA TO BUFFER AREA AT 02700013 * RUNNING PROGRAM TIME IN THE FINAL MERGE OR MERGE ONLY PHASE. THE 03000013 * CALLING SEQUENCE IS- 03300013 * 03600013 * L RP,PPIBDSVA+8 -STARTING ADDRESS OF LIST 03900013 * L RE,PAR1 -ADDRESS FROM WHICH THE DATA IS TO 04200013 * BE MOVED 04500013 * L RF,PAR2 -ADDRESS TO WHICH THE DATA IS TO BE 04800013 * MOVED 05100013 * BALR RO,RP 05400013 * 05700013 * THE ROUTINE USES REGISTERS RE, RF, AND RJ. THE CALLING ROUTINE 3526 06000018 * CANNOT RELY ON THE INTEGRITY OF THESE REGISTERS WHEN CONTROL IS 06300013 * RETURNED TO IT. 06600013 * 06900013 SPACE 2 07200013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 07500013 * 07800013 * N/A 08100013 * 08400013 *MACROS USED: SMPPI 08700013 SPACE 2 09000013 *ENTRY POINTS: 09300013 SPACE 1 09600013 * CSECT NAME -IERABQ ENTRY FROM IERRC9 VIA 09900013 * LOAD EP=IERABQ,DCB=SORTLIB 10200013 * LR RP,RA 10500013 * BALR RO,RP 10800013 SPACE 2 11100013 *INPUT: -PPI FIELDS REFERENCED- 11400013 SPACE 1 11700013 * PPIMODEX 12000013 * PPIRCDL3 12300013 * PPISW1 12600013 SPACE 2 12900013 *OUTPUT: -PPI FIELDS INITIALIZED OR ALTERED- 13200013 SPACE 1 13500013 * PPISPGN1 13800013 * PPIBDSVA 14100013 SPACE 2 14400013 *EXTERNAL ROUTINES: NONE 14700013 SPACE 2 15000013 *EXTERNAL PARAMETERS: NONE 15300013 SPACE 2 15600013 *EXITS-NORMAL: 15900013 SPACE 1 16200013 * IERRC9 RETURN TO LOAD ROUTINE VIA REG. RO 16500013 SPACE 2 16800013 *EXITS-ERROR: NONE 17100013 SPACE 2 17400013 *TABLES/WORK AREAS: 17700013 SPACE 1 18000013 * WSIZE IS USED TO ACCUMULATE THE SIZE OF THE MOVE LIST 18300013 * WQUO IS USED TO SAVE A QUOTIENT. 18600013 * PPIPSVA IS USED TO SAVE RETURN REGISTER RO 18900013 SPACE 2 19200013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 19500013 SPACE 2 19800013 *NOTES: THIS MODULE IS RESTRICTED TO FIXED LENGTH RECORDS ONLY. 20100013 EJECT 20400013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 20700013 SPACE 1 21000013 RA EQU 0 CONTENTS IN- N/A 21300013 * 21600013 * USE- NOT USED 21900013 * 22200013 * CONTENTS OUT- N/A 22500013 * 22800013 RB EQU 1 CONTENTS IN- N/A 23100013 * 23400013 * USE- NOT USED 3526 23700018 * 24000013 * CONTENTS OUT- N/A 24300013 * 24600013 RC EQU 2 CONTENTS IN- N/A 24900013 * 25200013 * USE- NOT USED 25500013 * 25800013 * CONTENTS OUT- N/A 26100013 * 26400013 RD EQU 3 CONTENTS IN- N/A 26700013 * 27000013 * USE- NOT USED 27300013 * 27600013 * CONTENTS OUT- N/A 27900013 * 28200013 RE EQU 4 CONTENTS IN- N/A 28500013 * 28800013 * USE- WORK REGISTER 29100013 * 29400013 * CONTENTS OUT- N/A 29700013 * 30000013 RF EQU 5 CONTENTS IN- N/A 30300013 * 30600013 * USE- WORK REGISTER 30900013 * 31200013 * CONTENTS OUT- N/A 31500013 * 31800013 RG EQU 6 CONTENTS IN- N/A 32100013 * 32400013 * USE- WORK REGISTER 32700013 * 33000013 * CONTENTS OUT- N/A 33300013 * 33600013 RH EQU 7 CONTENTS IN- N/A 33900013 * 34200013 * USE- NOT USED 34500013 * 34800013 * CONTENTS OUT- N/A 35100013 * 35400013 RI EQU 8 CONTENTS IN- N/A 35700013 * 36000013 * USE- NOT USED 36300013 * 36600013 * CONTENTS OUT- N/A 36900013 * 37200013 RJ EQU 9 CONTENTS IN- N/A 37500013 * 37800013 * USE- WORK REGISTER 3526 38100018 * 38400013 * CONTENTS OUT- N/A 38700013 * 39000013 RK EQU 10 CONTENTS IN- N/A 39300013 * 39600013 * USE- NOT USED 39900013 * 40200013 * CONTENTS OUT- N/A 40500013 * 40800013 RL EQU 11 CONTENTS IN- N/A 41100013 * 41400013 * USE- PROGRAM BASE 41700013 * 42000013 * CONTENTS OUT- PROGRAM BASE 42300013 * 42600013 RM EQU 12 CONTENTS IN- N/A 42900013 * 43200013 * USE- NOT USED 43500013 * 43800013 * CONTENTS OUT- N/A 44100013 * 44400013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 44700013 * USE- PPI REFERENCE,REGISTER SAVE 45000013 * AREA 45300013 * CONTENTS OUT- ADDRESS OF PPI 45600013 RO EQU 14 CONTENTS IN- RETURN ADDR. TO -RC9 45900013 * 46200013 * USE- WORK REGISTER 46500013 * 46800013 * CONTENTS OUT- RETURN ADDR. TO -RC9 47100013 * 47400013 RP EQU 15 CONTENTS IN- PROGRAM BASE 47700013 * 48000013 * USE- WORK REGISTER 48300013 * 48600013 * CONTENTS OUT- N/A 48900013 * 49200013 SPACE 2 49500013 *START OF MODULE CODE PROPER: 49800013 SPACE 2 50100013 IERABQ CSECT 50400013 *1720060000,237000,381000,795000-801000 3526 50500018 USING *,RL 50700013 USING IERRCA,RN SETTING UP PPIA BASE REGISTER 51000013 LR RL,RP 51300013 ST RO,PPIPSVA SAVE RETURN REGISTER 51600013 *CHECK TO SEE IF MODULE IS TO BE EXECUTED 51900013 * 52200013 ABQMV010 TM PPISW1,X'40' RCD. FORMAT- F/V 52500013 BCR 1,RO V- RETURN TO IERRC9 52800013 SPACE 1 53100013 TM PPIMODEX+1,X'20' E35 ACTIVATED 53400013 BC 1,ABQMV015 53700013 CLC PPIRCDL3(2),KON256+2 RCD. LEN. TO 256 54000013 BCR 12,RO .LE.-RETURN TO IERRC9 54300013 SPACE 1 54600013 ABQMV015 L RG,PPISPGN1 54900013 LH RF,PPIRCDL3 OUTPUT RCD. LENGTH 55200013 LR RO,RF SAVE RECORD LENGTH 55500013 SR RE,RE 55800013 *CALCULATE LIST SIZE. 56100013 D RE,KON256 56400013 LTR RE,RE TEST FOR REMAINDER 56700013 BC 8,ABQMV020 57000013 LA RF,1(0,RF) ROUND OFF UPWARD 57300013 ABQMV020 ST RF,WQUO 57600013 M RE,KON6 QUOTIENT*6=NO. OF MOVES*SIZE OF MVC 57900013 LA RF,2(0,RF) 2 BYTES FOR BCR INSTR. 58200013 ST RF,WSIZE LIST SIZE IN BYTES 58500013 CLC WQUO,KON16 QUOTIENT TO 16 58800013 BC 12,ABQMV030 LESS THAN OR EQUAL TO 16 59100013 SR RE,RE 59400013 L RF,WQUO 59700013 SRL RF,4 DIVIDE BY 16=Q1 60000013 M RE,KON12 Q1*12=NO. OF ADDR.ADJUSTMENTS*3-LA'S 60300013 A RF,WSIZE LIST SIZE IN BYTES 60600013 ST RF,WSIZE 60900013 *ALLOCATION OF SPACE IN GENERATED CORE FOR THE LIST 61200013 * 61500013 ABQMV030 SR RG,RF 61800013 ST RG,PPISPGN1 UPDATE GENERATED AREA ADDRESS 62100013 TM PPISPGN1+3,X'01' MAKE SURE THE MOVE 62400013 BC 8,ABQMV032 LIST STARTS ON A HALF WORD 62700013 BCTR RG,0 BOUNDARY 63000013 ST RG,PPISPGN1 63300013 ** BLOCK PROGRAM 63600013 ABQMV032 MVC PPIBDSVA+8(4),PPISPGN1 ADCON 63900013 * GENERATE THE LIST. 64200013 * 64500013 ABQMV040 CL RO,KON256 64800013 BC 12,ABQMV050 LESS THAN OR EQUAL TO 256 65100013 L RB,KMOVE+2 65400013 MVC 0(6,RG),KMOVE MOVE INSTR. TO LIST AREA 65700013 A RB,KONMOVE UPDATE INSTR.'S DISPLACEMENTS 66000013 LA RG,6(0,RG) INCREMENT LIST POINTER 66300013 S RO,KON256 66600013 CL RB,KON4096 DISPLACEMENTS TO 4095 66900013 BC 2,ABQMV060 GREATER THAN 67200013 ST RB,KMOVE+2 67500013 BC 15,ABQMV040 GENERATE ANOTHER MOVE INSTR. 67800013 SPACE 1 68100013 ABQMV050 BCTR RO,0 REMAINING RCD. LENGTH 68400013 STC RO,KMOVE+1 MINUS ONE IN FINAL MVC INSTR. 68700013 MVC 0(6,RG),KMOVE 69000013 LA RG,6(0,RG) UPDATE LIST POINTER 69300013 MVC 0(2,RG),KBRANCH MOVE BRANCH INSTR. TO LIST AREA 69600013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 69900013 BNO ABQMVRTN SWITCH OFF BYPASS MESSAGE 70200013 USING DIERAMC,RJ 70500013 L RJ,PPIAMC+4 70800013 L RA,PPISPGN1 LOAD NUMBER TO BE CONVERTED 71100013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 71400013 BAL RO,4(RP) CONVERT 71700013 MVC DMSG943A(8),0(RB) PUT ADDRESS IN MESSAGE 72000013 LM RA,RB,DMSG943X SET UP FOR PRINTING 72300013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 72600013 BAL RO,12(0,RP) PRINT 72900013 DROP RJ 73200013 ABQMVRTN L RO,PPIPSVA RETURN TO 73500013 BR RO IERRC9 73800013 SPACE 1 74100013 SPACE 1 74400013 ABQMV060 MVC 0(12,RG),KUPDATE UPDATE DISPLACEMENTS 74700013 LA RG,12(0,RG) AND REGISTERS IN LIST 75000013 MVC KMOVE(6),KMOVE1 REINITIALIZE MODEL MOVE INSTR. 75300013 BC 15,ABQMV040 GENERATE ANOTHER MOVE INSTR. 75600013 SPACE 2 75900013 *LIST OF CONSTANTS USED BY THE MODULE: 76200013 SPACE 2 76500013 KON256 DC A(256) 76800013 KON6 DC A(6) 77100013 KON16 DC A(16) 77400013 KON12 DC A(12) 77700013 KON4096 DC X'5FFF4FFF' 78000013 KMOVE1 MVC 0(256,RF),0(RE) 78300013 KMOVE MVC 0(256,RF),0(RE) 78600013 KONMOVE DC X'01000100' 78900013 KBRANCH BCR 15,RO 79200013 KUPDATE LA RJ,1 3526 79500018 LA RF,4095(RF,RJ) 3526 79800018 LA RE,4095(RE,RJ) 3526 80100018 SPACE 2 80400013 *LIST OF WORK AREAS USED BY THE MODULE 80700013 SPACE 2 81000013 ** 81300013 WQUO DS 1F 81600013 WSIZE DS 1F 81900013 ** 82200013 DIERAMC DSECT 82500013 * 82800013 COPY AMCMAIN 83100013 EJECT 83400013 SMPPI 83700013 END 84000013 ./ ADD SSI=03011894,SOURCE=1,NAME=IERABR TITLE 'IERABR O/S 360 SORT/MERGE 360S-SM-023 3/1/65' 00300013 *MODULE NAME *** IERABR *** 00600013 SPACE 2 00900013 *STATUS:CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: PHASE 2 MOVE ASSIGNMENT -FIXED LEN.RCDS. 01800013 * THIS MODULE CONSTRUCTS THE MOVE LIST FOR FIXED LENGTH SORT 02100013 * RECORDS OF SIZE GREATER THAN 256 BYTES OR MODIFIED VIA E25. THE 02400013 * LIST IS USED TO MOVE DATA FROM BUFFER AREA TO BUFFER AREA AT 02700013 * RUNNING PROGRAM TIME IN THE INTERMEDIATE MERGE PHASE. THE 03000013 * CALLING SEQUENCE IS- 03300013 * 03600013 * L RP,PPIBDSVA+8 -STARTING ADDRESS OF LIST 03900013 * L RE,PAR1 -ADDRESS FROM WHICH THE DATA IS TO 04200013 * BE MOVED 04500013 * L RF,PAR2 -ADDRESS TO WHICH THE DATA IS TO BE 04800013 * MOVED 05100013 * BALR RO,RP 05400013 * 05700013 * THE ROUTINE USES REGISTERS RE, RF, AND RJ. THE CALLING ROUTINE 3526 06000018 * CANNOT RELY ON THE INTEGRITY OF THESE REGISTERS WHEN CONTROL IS 06300013 * RETURNED TO IT. 06600013 * 06900013 SPACE 2 07200013 *MACROS USED: SMPPI 07500013 SPACE 2 07800013 *ENTRY POINTS: 08100013 SPACE 1 08400013 * CSECT NAME -IERABR ENTRY FROM IERRC9 VIA 08700013 * LOAD EP=IERABR,DCB=SORTLIB 09000013 * LR RP,RA 09300013 * BALR RO,RP 09600013 SPACE 2 09900013 *INPUT: -PPI FIELDS REFERENCED- 10200013 SPACE 1 10500013 * PPIMODEX 10800013 * PPIRCDL2 11100013 * PPISW1 11400013 SPACE 2 11700013 *OUTPUT: -PPI FIELDS INIITALIZED OR ALTERED- 12000013 SPACE 1 12300013 * PPISPGN1 12600013 * PPIBDSVA 12900013 SPACE 2 13200013 *EXTERNAL ROUTINES: NONE 13500013 SPACE 2 13800013 *EXTERNAL PARAMETERS: NONE 14100013 SPACE 2 14400013 *EXITS-NORMAL: 14700013 SPACE 1 15000013 * IERRC9 RETURN TO LOAD ROUTINE VIA REG. RO 15300013 SPACE 2 15600013 *EXITS-ERROR: NONE 15900013 SPACE 2 16200013 *TABLES/WORK AREAS: 16500013 SPACE 1 16800013 * WSIZE IS USED TO ACCUMULATE THE SIZE OF THE MOVE LIST 17100013 * WQUO IS USED TO SAVE A QUOTIENT. 17400013 * PPIPSVA IS USED TO SAVE RETURN REGISTER RO 17700013 SPACE 2 18000013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 18300013 SPACE 2 18600013 *NOTES: THIS MODULE IS RESTRICTED TO FIXED LENGTH RECORDS ONLY. 18900013 EJECT 19200013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 19500013 SPACE 1 19800013 RA EQU 0 CONTENTS IN- N/A 20100013 * 20400013 * USE- NOT USED 20700013 * 21000013 * CONTENTS OUT- N/A 21300013 * 21600013 RB EQU 1 CONTENTS IN- N/A 21900013 * 22200013 * USE- NOT USED 3526 22500018 * 22800013 * CONTENTS OUT- N/A 23100013 * 23400013 RC EQU 2 CONTENTS IN- N/A 23700018 * 24000013 * USE- NOT USED 24300013 * 24600013 * CONTENTS OUT- N/A 24900013 * 25200013 RD EQU 3 CONTENTS IN- N/A 25500013 * 25800013 * USE- NOT USED 26100013 * 26400013 * CONTENTS OUT- N/A 26700013 * 27000013 RE EQU 4 CONTENTS IN- N/A 27300013 * 27600013 * USE- WORK REGISTER 27900013 * 28200013 * CONTENTS OUT- N/A 28500013 * 28800013 RF EQU 5 CONTENTS IN- N/A 29100013 * 29400013 * USE- WORK REGISTER 29700013 * 30000013 * CONTENTS OUT- N/A 30300013 * 30600013 RG EQU 6 CONTENTS IN- N/A 30900013 * 31200013 * USE- WORK REGISTER 31500013 * 31800013 * CONTENTS OUT- N/A 32100013 * 32400013 RH EQU 7 CONTENTS IN- N/A 32700013 * 33000013 * USE- NOT USED 33300013 * 33600013 * CONTENTS OUT- N/A 33900013 * 34200013 RI EQU 8 CONTENTS IN- N/A 34500013 * 34800013 * USE- NOT USED 35100013 * 35400013 * CONTENTS OUT- N/A 35700013 * 36000013 RJ EQU 9 CONTENTS IN- N/A 36300013 * 36600013 * USE- WORK REGISTER 3526 36900018 * 37200013 * CONTENTS OUT- N/A 37500013 * 37800013 RK EQU 10 CONTENTS IN- N/A 38100018 * 38400013 * USE- NOT USED 38700013 * 39000013 * CONTENTS OUT- N/A 39300013 * 39600013 RL EQU 11 CONTENTS IN- N/A 39900013 * 40200013 * USE- PROGRAM BASE 40500013 * 40800013 * CONTENTS OUT- PROGRAM BASE 41100013 * 41400013 RM EQU 12 CONTENTS IN- N/A 41700013 * 42000013 * USE- NOT USED 42300013 * 42600013 * CONTENTS OUT- N/A 42900013 * 43200013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 43500013 * USE- PPI REFERENCE,REGISTER SAVE 43800013 * AREA 44100013 * CONTENTS OUT- ADDRESS OF PPI 44400013 RO EQU 14 CONTENTS IN- RETURN ADDR. TO IERRC9 44700013 * 45000013 * USE- WORK REGISTER 45300013 * 45600013 * CONTENTS OUT- RETURN ADDR. TO -RC9 45900013 * 46200013 RP EQU 15 CONTENTS IN- PROGRAM BASE 46500013 * 46800013 * USE- WORK REGISTER 47100013 * 47400013 * CONTENTS OUT- N/A 47700013 * 48000013 SPACE 2 48300013 *START OF MODULE CODE PROPER: 48600013 SPACE 2 48900013 IERABR CSECT 49200013 *1614060000,225000,369000,798000-804000 3526 49300018 USING *,RL 49500013 USING IERRCA,RN SETTING UP PPIA BASE REGISTER 49800013 LR RL,RP 50100013 ST RO,PPIPSVA SAVE RETURN REGISTER 50400013 *CHECK TO SEE IF MODULE IS TO BE EXECUTED 50700013 * 51000013 ABRMV010 TM PPISW1,X'40' RCD. FORMAT- F/V 51300013 BCR 1,RO V- RETURN TO IERRC9 51600013 SPACE 1 51900013 TM PPIMODEX,X'02' E25 ACTIVATED 52200013 BC 1,ABRMV015 52500013 CLC PPIRCDL2(2),KON256+2 RCD. LEN. TO 256 52800013 BCR 12,RO .LE.-RETURN TO IERRC9 53100013 SPACE 1 53400013 ABRMV015 L RG,PPISPGN1 53700013 LH RF,PPIRCDL2 SORT RCD. LENGTH 54000013 LR RO,RF SAVE RCD. LENGTH 54300013 SR RE,RE 54600013 * CALCULATE THE LIST SIZE. 54900013 D RE,KON256 55200013 LTR RE,RE TEST FOR REMAINDER 55500013 BC 8,ABRMV020 55800013 LA RF,1(0,RF) ROUND OFF UPWARD 56100013 ABRMV020 ST RF,WQUO 56400013 M RE,KON6 QUOTIENT*6=NO. OF MOVES*SIZE OF MVC 56700013 LA RF,2(0,RF) 2 BYTES FOR BCR INSTR. 57000013 ST RF,WSIZE 57300013 CLC WQUO,KON16 QUOTIENT TO 16 57600013 BC 12,ABRMV030 LESS THAN OR EQUAL TO 16 57900013 SR RE,RE 58200013 L RF,WQUO 58500013 SRL RF,4 DIVIDE BY 16=Q1 58800013 M RE,KON12 Q1*12=NO. OF ADDR.ADJUSTMENTS*3-LA'S 59100013 A RF,WSIZE LIST SIZE IN BYTES 59400013 ST RF,WSIZE 59700013 *ALLOCATION OF SPACE IN GENERATED CORE FOR THE LIST 60000013 * 60300013 ABRMV030 SR RG,RF 60600013 ST RG,PPISPGN1 UPDATE GENERATED AREA ADDRESS 60900013 TM PPISPGN1+3,X'01' MAKE SURE THE MOVE 61200013 BC 8,ABRMV032 LIST STARTS ON A HALF 61500013 BCTR RG,0 WORD BOUNDARY 61800013 ST RG,PPISPGN1 62100013 ABRMV032 MVC PPIBDSVA+8(4),PPISPGN1 SAVE MOVE LIST ADDR FOR 62400013 * THE BLOCK RTN 62700013 * GENERATE THE LIST. 63000013 * 63300013 ABRMV040 CL RO,KON256 63600013 BC 12,ABRMV050 LESS THAN OR EQUAL TO 256 63900013 L RB,KMOVE+2 64200013 MVC 0(6,RG),KMOVE MOVE INSTR. TO LIST AREA 64500013 A RB,KONMOVE UPDATE INSTR.'S DISPLACEMENTS 64800013 LA RG,6(0,RG) INCREMENT LIST POINTER 65100013 S RO,KON256 65400013 CL RB,KON4096 DISPLACEMENTS TO 4095 65700013 BC 2,ABRMV060 GREATER THAN 66000013 ST RB,KMOVE+2 66300013 BC 15,ABRMV040 GENERATE ANOTHER MOVE INSTR. 66600013 SPACE 1 66900013 ABRMV050 BCTR RO,0 REMAINING RCD. LENGTH 67200013 STC RO,KMOVE+1 MINUS ONE IN FINAL MVC INSTR. 67500013 MVC 0(6,RG),KMOVE 67800013 LA RG,6(0,RG) UPDATE LIST POINTER 68100013 MVC 0(2,RG),KBRANCH MOVE BRANCH INSTR. TO LIST AREA 68400013 ST RO,ABRSAVO SAVE RO 68700013 ST RJ,ABRSAVJ SAVE RJ 69000013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 69300013 BNO ABRNOMES SWITCH OFF BYPASS MESSAGE 69600013 USING DIERAMB,RJ 69900013 L RJ,PPIAMB+4 70200013 L RA,PPISPGN1 LOAD NUMBER TO BE CONVERTED 70500013 L RP,PPICONV+4 LOAD ADDRESS OF CONVERSION ROUTINE 70800013 BAL RO,4(RP) CONVERT 71100013 MVC DMSG923A(8),0(RB) MOVE ADDRESS INTO MESSAGE 71400013 LM RA,RB,DMSG923X SET UP TO PRINT 71700013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 72000013 BAL RO,12(0,RP) PRINT 72300013 DROP RJ 72600013 ABRNOMES L RO,ABRSAVO RESTORE RO 72900013 L RJ,ABRSAVJ RESTORE RJ 73200013 ABRMVRTN L RO,PPIPSVA RETURN TO 73500013 BR RO IERRC9 73800013 SPACE 1 74100013 SPACE 1 74400013 ABRMV060 MVC 0(12,RG),KUPDATE UPDATE DISPLACEMENTS 74700013 LA RG,12(0,RG) AND REGISTERS IN LIST 75000013 MVC KMOVE(6),KMOVE1 REINITIALIZE MODEL MOVE INSTR. 75300013 BC 15,ABRMV040 GENERATE ANOTHER MOVE INSTR. 75600013 * 75900013 * 76200013 *LIST OF CONSTANTS USED BY THE MODULE: 76500013 SPACE 2 76800013 KON256 DC A(256) 77100013 KON6 DC A(6) 77400013 KON16 DC A(16) 77700013 KON12 DC A(12) 78000013 KON4096 DC X'5FFF4FFF' 78300013 KMOVE1 MVC 0(256,RF),0(RE) 78600013 KMOVE MVC 0(256,RF),0(RE) 78900013 KONMOVE DC X'01000100' 79200013 KBRANCH BCR 15,RO 79500013 KUPDATE LA RJ,1 3526 79800018 LA RF,4095(RF,RJ) 3526 80100018 LA RE,4095(RE,RJ) 3526 80400018 SPACE 2 80700013 *LIST OF WORK AREAS USED BY THE MODULE: 81000013 SPACE 2 81300013 WQUO DS 1F 81600013 WSIZE DS 1F 81900013 ABRSAVJ DC F'0' 82200013 ABRSAVO DC F'0' 82500013 DIERAMB DSECT 82800013 COPY AMBMAIN 83100013 EJECT 83400013 SMPPI 83700013 END 84000013 ./ ADD SSI=03011894,SOURCE=1,NAME=IERABS TITLE 'IERABS - OS/360 SORT/MERGE - 360-SM-023 - 3/8/65' 00300013 *MODULE NAME *** IERABS *** 00600013 SPACE 2 00900013 *STATUS:CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: PHASE 1 MOVE ASSIGNMENT -FIXED LEN.RCDS. 01800013 * THIS MODULE CONSTRUCTS THE MOVE LIST FOR FIXED LENGTH SORT 02100013 * RECORDS OF SIZE GREATER THAN 256 BYTES OR MODIFIED VIA E15. THE 02400013 * LIST IS USED TO MOVE DATA FROM/TO BUFFER AREA TO/FROM RSA AT 02700013 * RUNNING PROGRAM TIME IN THE SORT PHASE. THE 03000013 * CALLING SEQUENCE IS- 03300013 * 03600013 * L RP,PPIBDSVA+4 -STARTING ADDRESS OF LIST 03900013 * L RE,PAR1 -ADDRESS FROM WHICH THE DATA IS TO 04200013 * BE MOVED 04500013 * L RF,PAR2 -ADDRESS TO WHICH THE DATA IS TO BE 04800013 * MOVED 05100013 * BALR RO,RP 05400013 * 05700013 * THE ROUTINE USES REGISTERS RE, RF, AND RJ. THE CALLING ROUTINE 3526 06000018 * CANNOT RELY ON THE INTEGRITY OF THESE REGISTERS WHEN CONTROL IS 06300013 * RETURNED TO IT. 06600013 * 06900013 SPACE 2 07200013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 07500013 * 07800013 * N/A 08100013 * 08400013 *MACROS USED: SMPPI 08700013 SPACE 2 09000013 *ENTRY POINTS: 09300013 SPACE 1 09600013 * CSECT NAME -IERABS ENTRY FROM IERRC9 VIA 09900013 * LOAD EP=IERABS,DCB=SORTLIB 10200013 * LR RP,RA 10500013 * BALR RO,RP 10800013 SPACE 2 11100013 *INPUT: -PPI FIELDS REFERENCED- 11400013 SPACE 1 11700013 * PPIMODEX 12000013 * PPIRCDL2 12300013 * PPISW1 12600013 SPACE 2 12900013 *OUTPUT: -PPI FIELDS INITIALIZED OR ALTERED- 13200013 SPACE 1 13500013 * PPISPGN1 13800013 * PPIBDSVA 14100013 SPACE 2 14400013 *EXTERNAL ROUTINES: NONE 14700013 SPACE 2 15000013 *EXTERNAL PARAMETERS: NONE 15300013 SPACE 2 15600013 *EXITS-NORMAL: 15900013 SPACE 1 16200013 * IERRC9 RETURN TO LOAD ROUTINE VIA REG. RO 16500013 SPACE 2 16800013 *EXITS-ERROR: NONE 17100013 SPACE 2 17400013 *TABLES/WORK AREAS: 17700013 SPACE 1 18000013 * WSIZE IS USED TO ACCUMULATE THE SIZE OF THE MOVE LIST 18300013 * WQUO IS USED TO SAVE A QUOTIENT. 18600013 * PPIPSVA IS USED TO SAVE RETURN REGISTER RO 18900013 SPACE 2 19200013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 19500013 SPACE 2 19800013 *NOTES: THIS MODULE IS RESTRICTED TO FIXED LENGTH RECORDS ONLY. 20100013 EJECT 20400013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 20700013 SPACE 1 21000013 RA EQU 0 CONTENTS IN- N/A 21300013 * 21600013 * USE- NOT USED 21900013 * 22200013 * CONTENTS OUT- N/A 22500018 * 22800013 RB EQU 1 CONTENTS IN- N/A 23100013 * 23400013 * USE- NOT USED 3526 23700018 * 24000013 * CONTENTS OUT- N/A 24300013 * 24600013 RC EQU 2 CONTENTS IN- N/A 24900013 * 25200013 * USE- NOT USED 25500013 * 25800013 * CONTENTS OUT- N/A 26100013 * 26400013 RD EQU 3 CONTENTS IN- N/A 26700013 * 27000013 * USE- WORK REGISTER 27300013 * 27600013 * CONTENTS OUT- N/A 27900013 * 28200013 RE EQU 4 CONTENTS IN- N/A 28500013 * 28800013 * USE- WORK REGISTER 29100013 * 29400013 * CONTENTS OUT- N/A 29700013 * 30000013 RF EQU 5 CONTENTS IN- N/A 30300013 * 30600013 * USE- WORK REGISTER 30900013 * 31200013 * CONTENTS OUT- N/A 31500013 * 31800013 RG EQU 6 CONTENTS IN- N/A 32100013 * 32400013 * USE- NOT USED 32700013 * 33000013 * CONTENTS OUT- N/A 33300013 * 33600013 RH EQU 7 CONTENTS IN- N/A 33900013 * 34200013 * USE- NOT USED 34500013 * 34800013 * CONTENTS OUT- N/A 35100013 * 35400013 RI EQU 8 CONTENTS IN- N/A 35700013 * 36000013 * USE- NOT USED 36300013 * 36600013 * CONTENTS OUT- N/A 36900018 * 37200013 RJ EQU 9 CONTENTS IN- N/A 37500013 * 37800013 * USE- WORK REGISTER 3526 38100018 * 38400013 * CONTENTS OUT- N/A 38700013 * 39000013 RK EQU 10 CONTENTS IN- N/A 39300013 * 39600013 * USE- NOT USED 39900013 * 40200013 * CONTENTS OUT- N/A 40500013 * 40800013 RL EQU 11 CONTENTS IN- N/A 41100013 * 41400013 * USE- PROGRAM BASE 41700013 * 42000013 * CONTENTS OUT- PROGRAM BASE 42300013 * 42600013 RM EQU 12 CONTENTS IN- N/A 42900013 * 43200013 * USE- NOT USED 43500013 * 43800013 * CONTENTS OUT- N/A 44100013 * 44400013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 44700013 * USE- PPI REFERENCE,REGISTER SAVE 45000013 * AREA 45300013 * CONTENTS OUT- ADDRESS OF PPI 45600013 RO EQU 14 CONTENTS IN- RETURN ADDR. TO IERRC9 45900013 * 46200013 * USE- WORK REGISTER 46500013 * 46800013 * CONTENTS OUT- RETURN ADDR. TO -RC9 47100013 * 47400013 RP EQU 15 CONTENTS IN- PROGRAM BASE 47700013 * 48000013 * USE- WORK REGISTER 48300013 * 48600013 * CONTENTS OUT- N/A 48900013 * 49200013 SPACE 2 49500013 *START OF MODULE CODE PROPER: 49800013 SPACE 2 50100013 IERABS CSECT 50400013 *1615060000,237000,381000,783000-789000 3526 50500018 USING *,RL 50700013 USING IERRCA,RN SETTING UP PPIA BASE REGISTER 51000013 USING DIERAMA,RI MESSAGE BASE REG. 51300013 *CHECK TO SEE IF MODULE IS TO BE EXECUTED 51600013 * 51900013 IERMBF LR RL,RP 52200013 ST RO,PPIPSVA SAVE RETURN REGISTER 52500013 ABSNOMES TM PPIMODEX,X'60' E15 OR E16 ACTIVATED 52800013 BC 5,ABSMV010 53100013 CLC PPIRCDL2(2),KON256+2 RCD.LEN. TO 256 53400013 BCR 12,RO RETURN TO IERRC9 53700013 SPACE 1 54000013 ABSMV010 LH RF,PPIRCDL2 SORT RCD. LENGTH 54300013 L RB,PPISPGN1 54600013 * CALCULATE LIST SIZE. 54900013 LR RO,RF SAVE RCD. LENGTH 55200013 SR RE,RE 55500013 D RE,KON256 55800013 LTR RE,RE TEST FOR REMAINDER 56100013 BC 8,ABSMV020 56400013 LA RF,1(0,RF) ROUND OFF UPWARD 56700013 ABSMV020 ST RF,WQUO 57000013 M RE,KON6 QUOTIENT*6=NO.OF MOVES*SIZE OF MVC 57300013 LA RF,2(0,RF) 2 BYTES FOR BCR INSTR. 57600013 ST RF,WSIZE 57900013 CLC WQUO,KON16 QUOTIENT TO 16 58200013 BC 12,ABSMV030 LESS THAN OR EQUAL TO 16 58500013 SR RE,RE 58800013 L RF,WQUO 59100013 SRL RF,4 DIVIDE BY 16=Q1 59400013 M RE,KON12 Q1*12=NO.OF ADDR.ADJUSTMENTS*3-LA'S 59700013 A RF,WSIZE 60000013 ST RF,WSIZE 60300013 *ALLOCATION OF SPACE IN GENERATED CORE FOR THE LIST 60600013 * 60900013 ABSMV030 SR RB,RF 61200013 ST RB,PPISPGN1 UPDATE GENERATE AREA ADDRESS 61500013 TM PPISPGN1,X'01' MAKE SURE START MOVE LIST 61800013 BC 8,ABSMV032 ON A HALF WORD BOUNDARY 62100013 BCTR RB,0 62400013 ST RB,PPISPGN1 62700013 ABSMV032 MVC PPIBDSVA+4(4),PPISPGN1 SAVE MOVE LIST ADDR FOR 63000013 * THE RUNNING SORT 63300013 * GENERATE THE LIST. 63600013 ABSMV040 CL RO,KON256 63900013 BC 12,ABSMV050 LESS THAN OR EQUAL TO 256 64200013 L RD,KMOVE+2 64500013 MVC 0(6,RB),KMOVE MOVE INSTR. TO LIST AREA 64800013 A RD,KONMOVE UPDATE INSTR.'S DISPLACEMENTS 65100013 LA RB,6(0,RB) INCREMENT LIST POINTER 65400013 S RO,KON256 65700013 CL RD,KON4096 DISPLACEMENTS TO 4095 66000013 BC 2,ABSMV060 GREATER THAN 4095 66300013 ST RD,KMOVE+2 66600013 BC 15,ABSMV040 GENERATE ANOTHER MOVE INSTR. 66900013 SPACE 1 67200013 ABSMV050 BCTR RO,0 DECREMENT BY ONE TO OBTAIN LENGTH 67500013 STC RO,KMOVE+1 FACTOR FOR THE FINAL MVC INSTR. 67800013 MVC 0(6,RB),KMOVE 68100013 LA RB,6(0,RB) UPDATE LIST POINTER 68400013 MVC 0(2,RB),KBRANCH MOVE BRANCH INSTR. TO LIST AREA 68700013 L RI,PPIAMA+4 SET MSG BASE REG. 69000013 TM PPISW1+6,X'01' TEST DIAGNOSTIC SWITCH 69300013 BC 8,ABSMVRTN NO DIAGNOSTICS 69600013 L RA,PPISPGN1 LOAD NUMBER TO BE CONVERTED 69900013 L RP,PPICONV+4 LOAD ADDR OF CONVERSION ROUTINE 70200013 BAL RO,4(RP) BRANCH TO CONVERSION ROUTINE 70500013 MVC DMSG905A(8),0(RB) MOVE NUMBER INTO MESSAGE 70800013 LM RA,RB,DMSG905X SET UP FOR PRINTING 71100013 L RP,PPIADSSC LOAD ADDRESS OF PRINT ROUTINE 71400013 BAL RO,12(0,RP) BRANCH AND PRINT 71700013 ABSMVRTN L RO,PPIPSVA RETURN TO 72000013 BR RO IERRC9 72300013 SPACE 1 72600013 SPACE 1 72900013 ABSMV060 MVC 0(12,RB),KUPDATE UPDATE DISPLACEMENTS AND REGISTERS 73200013 LA RB,12(0,RB) IN THE LIST 73500013 MVC KMOVE(6),KMOVE1 REINITIALIZE MODEL MOVE INSTR. 73800013 BC 15,ABSMV040 GENERATE ANOTHER MOVE INSTR. 74100013 * 74400013 * 74700013 *LIST OF CONSTANTS USED BY THE MODULE: 75000013 SPACE 2 75300013 KON256 DC A(256) 75600013 KON6 DC A(6) 75900013 KON16 DC A(16) 76200013 KON12 DC A(12) 76500013 KON4096 DC X'5FFF4FFF' 76800013 KMOVE1 MVC 0(256,RF),0(RE) 77100013 KMOVE MVC 0(256,RF),0(RE) 77400013 KONMOVE DC X'01000100' 77700013 KBRANCH BCR 15,RO 78000013 KUPDATE LA RJ,1 3526 78300018 LA RF,4095(RF,RJ) 3526 78600018 LA RE,4095(RE,RJ) 3526 78900018 SPACE 2 79200013 *LIST OF WORK AREAS USED BY THE MODULE 79500013 SPACE 2 79800013 WQUO DS 1F 80100013 WSIZE DS 1F 80400013 DIERAMA DSECT 80700013 * 81000013 COPY AMAMAIN 81300013 EJECT 81600013 SMPPI 81900013 END 82200013 ./ ADD SSI=01011615,SOURCE=1,NAME=IERABT TITLE 'IERABT - OS/360 SORT/MERGE - 360-SM-023 05/09/66' 00300013 *MODULE NAME *** IERABT *** 00600013 SPACE 2 00900013 *STATUS: CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBT, A BLOCK/ 02100013 * DEBLOCK MODULE FOR FIXED LENGTH RECORDS IN THE MERGE PHASE OF AN 02400013 * OSCL/2314 SORT. IT ALSO ALLOCATES AREA IN GENERATED CORE FOR 02700013 * THE TAPE UNIT COUNTERS WHICH KEEP TRACK OF THE NUMBER OF RECORDS 03000013 * ON EACH UNIT. 03300013 SPACE 2 03600013 *USED AS A DSECT IN - N/A 03900013 * 04200013 * 04500013 *MACROS USED - 04800013 SPACE 1 05100013 * SMPPI 05400013 SPACE 2 05700013 *ENTRY POINTS: 06000013 SPACE 1 06300013 * ENTRY IERABT ENTRY FROM: IERRC9 06600013 * CALLING SEQUENCE- L RP,ASSG 06900013 * BR RP 07200013 SPACE 2 07500013 *INPUT: PPI FIELDS REFERENCED- 07800013 SPACE 1 08100013 * PPISRTBL 08400013 * PPIRCDL2 08700013 * PPILAB07 09000013 * PPILAB04 09300013 * PPIBDSVA 09600013 * PPISPGN1 09900013 SPACE 2 10200013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 10500013 SPACE 1 10800013 * PPIUNTCT 11100013 * PPISPGN1 11400013 * ALLOCATES AREA FOR TAPE UNIT COUNTERS IN GENERATED CORE 11700013 * INITIALIZES CONSTANTS AND CODE IN RUNNING PROGRAM. 12000013 SPACE 2 12300013 *EXTERNAL ROUTINES: 12600013 SPACE 1 12900013 * N/A 13200013 SPACE 2 13500013 *EXTERNAL PARAMETERS: 13800013 SPACE 1 14100013 * PPIBLK2-ADDRESS OF RUNNING PROGRAM DSECT 14400013 SPACE 2 14700013 *EXITS: NORMAL 15000013 SPACE 1 15300013 * IERRC9-RETURN TO LOAD MODULE BR RO 15600013 * 15900013 SPACE 2 16200013 *EXITS: ERROR 16500013 SPACE 1 16800013 * N/A 17100013 * 17400013 SPACE 2 17700013 *TABLES/WORK AREAS: 18000013 SPACE 1 18300013 * N/A 18600013 SPACE 2 18900013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 19200013 SPACE 2 19500013 *NOTES: 19800013 SPACE 1 20100013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS LESS THAN OR EQUAL TO 20400013 * 256 BYTES LONG IN THE MERGE PHASE. 20700013 EJECT 21000013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 21300013 SPACE 1 21600013 RA EQU 0 CONTENTS IN-N/A 21900013 * USE-N/A 22200013 * CONTENTS OUT-N/A 22500013 RB EQU 1 CONTENTS IN-N/A 22800013 * 23100013 * USE-N/A 23400013 * CONTENTS OUT-N/A 23700013 RC EQU 2 CONTENTS IN-N/A 24000013 * USE-PART OF INSTRUCTION CONSTANT 24300013 * CONTENTS OUT-N/A 24600013 RD EQU 3 CONTENTS IN-N/A 24900013 * USE-PART OF INSTRUCTION CONSTANT 25200013 * CONTENTS OUT-N/A 25500013 RE EQU 4 CONTENTS IN-N/A 25800013 * USE-DSECT BASE REG 26100013 * CONTENTS OUT-N/A 26400013 RF EQU 5 CONTENTS IN-N/A 26700013 * USE-WORK REG 27000013 * CONTENTS OUT-N/A 27300013 RG EQU 6 CONTENTS IN-N/A 27600013 * USE-WORK REG 27900013 * CONTENTS OUT-N/A 28200013 RH EQU 7 CONTENTS IN-N/A 28500013 * USE-N/A 28800013 * CONTENTS OUT-N/A 29100013 RI EQU 8 CONTENTS IN-N/A 29400013 * USE-WORK REG 29700013 * CONTENTS OUT-N/A 30000013 RJ EQU 9 CONTENTS IN-N/A 30300013 * USE-N/A 30600013 * CONTENTS OUT-N/A 30900013 RK EQU 10 CONTENTS IN-N/A 31200013 * USE-N/A 31500013 * CONTENTS OUT-N/A 31800013 RL EQU 11 CONTENTS IN-N/A 32100013 * USE-MODULE BASE REG 32400013 * CONTENTS OUT-N/A 32700013 RM EQU 12 CONTENTS IN-N/A 33000013 * USE-N/A 33300013 * CONTENTS OUT-N/A 33600013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 33900013 * USE- PPI REFERENCE,REGISTER SAVE 34200013 * AREA 34500013 * CONTENTS OUT- ASSRESS OF PPI 34800013 RO EQU 14 CONTENTS IN-ADDRS OF IERRC9 35100013 * USE-RETURN REG 35400013 * CONTENTS OUT-ADDRSOF IERRC9 35700013 RP EQU 15 CONTENTS IN-MOCULE ADDRS 36000013 * USE-SET MODULE BASE REG 36300013 * CONTENTS OUT-MODULE ADDRS 36600013 SPACE 2 36900013 *START OF MODULE CODE PROPER: 37200013 SPACE 2 37500013 IERABT CSECT 37800013 USING *,RL 38100013 USING DIERRBT,RE 38400013 USING IERRCA,RN 38700013 IERMBG LR RL,RP 39000013 L RE,PPIBLK2+4 SET DSECT BASE REG 39300013 SPACE 3 39600013 LH RF,PPISRTBL SET OUTPUT BLK CNT = SORT BLOCKING 39900013 ST RF,KOBLKCNT 40200013 LH RF,PPIRCDL2 SET RCD LENGTH - 1 IN 40500013 BCTR RF,0 IN-LINE MOVE INSTR 40800013 SPACE 1 41100013 STC RF,RBT2025+1 41400013 STC RF,KABTKON1+1 41700013 L RG,KMASK 42000013 N RG,PPILAB07 SET RG = OUTPUT BUFFER SIZE 42300013 ST RG,KBUFSIZ SET BUFF SIZE IN RUNNING PROGRAM 42600013 L RF,PPILAB04 SET RF=OUTPUT BUFFER ADDRS 42900013 SPACE 1 43200013 TM PPISW1+6,X'02' CHECK FOR 2314 43500013 BO ABT1020 YES, SET UP TO BLOCK FORWARD 43800013 SPACE 1 44100013 ABT1010 AR RF,RG SET CONSTANTS 44400013 ST RF,KBLKPTR SET BLOCK POINTER AND 44700013 ST RF,KIBLKPTR INITIAL BLOCK POINTER 45000013 SPACE 2 45300013 * SET UP TAPE UNIT COUNTERS IN GENERATED CORE 45600013 SPACE 1 45900013 SR RD,RD 46200013 IC RD,PPIBDSVA LOAD NUMBER OF TAPE UNITS 46500013 LA RD,1(RD) 46800013 LA RF,4 47100013 MR RE,RD MULTIPLY BY FOUR 47400013 L RD,PPISPGN1 LOAD ADDRESS OF GENERATED CORE 47700013 SR RD,RF SUBTRACT REQUIRED AMT OF CORE 48000013 N RD,KROUND PUT ON FULL WORD BOUNDARY 48300013 MVI 0(RD),X'00' ZERO OUT THE AREA 48600013 S RF,KTWO 48900013 EX RF,BTZERO 49200013 ST RD,PPISPGN1 STORE NEW ADDRESS OF GEN. CORE 49500013 ST RD,PPIUNTCT STORE ADDRESS OF UNIT COUNTERS 49800013 BR RO RETURN TO LOAD MODULE 50100013 SPACE 2 50400013 ABT1020 LA RG,12 ADJUST FOR EOS AND CHAIN BYTES 50700013 STH RG,K4 51000013 MVC RBT2020(14),KABTKON1 OVERLAY TO MVC RCD, THEN UPDATE 51300013 MVC RBT2053(4),KABTKON2 BLOCK POINTER 51600013 MVC RBT2090(4),KABTKON2 INITIAL BLOCK POINTER 51900013 MVC RBINCR(4),KABTKON INCR. FOR OUTPUT FILE 52200013 B ABT1010 52500013 SPACE 2 52800013 * EXECUTED MOVE INSTRUCTION TO ZERO OUT UNIT COUNTER AREA 53100013 SPACE 1 53400013 BTZERO MVC 1(1,RD),0(RD) 53700013 SPACE 2 54000013 *LIST OF CONSTANTS USED BY MODULE: 54300013 SPACE 1 54600013 KTWO DC F'2' 54900013 KROUND DC X'FFFFFFFC' 55200013 KMASK DC X'00FFFFFF' 55500013 DROP RL 55800013 DROP RE 56100013 USING DIERRBT,RL 56400013 KABTKON IC RG,PPIDEPHO+1 INCR. FOR OUTPUT FILE 56700013 KABTKON1 MVC 0(1,RC),0(RD) MOVE RECORD 57000013 AH RC,PPIRCDL2 UPDATE BLOCK 57300013 ST RC,KBLKPTR POINTER 57600013 KABTKON2 L RC,KIBLKPTR INITIAL BLOCK POINTER 57900013 SPACE 2 58200013 EJECT 58500013 DIERRBT DSECT 58800013 *DUMMY RUNNING PROGRAM 59100013 IERDB2 B RBT2080 EOS ENTRY 59400013 B RBT2040 READ ENTRY 59700013 B RBT2060 WRITE ENTRY 60000013 B *+4 PRIMING ENTRY (REQUIRES NO ACTION 60300013 * IN THIS MODULE) 60600013 B RBBRANCH 60900013 SPACE 1 61200013 KBLKPTR DS F BLOCK POINTER 61500013 KIBLKPTR DS F INITIAL BLOCK POINTER 61800013 SPACE 1 62100013 *NORMAL ENTRY FROM MERGE, RD CONTAINS WINNER ADDRESS 62400013 SPACE 1 62700013 RBBRANCH L RE,KOBLKCNT SET RE=OUTPUT BLOCK COUNT 63000013 SPACE 1 63300013 *BLOCK WINNER RECORD 63600013 SPACE 1 63900013 SR RA,RA 64200013 CR RE,RA IS BLOCK COUNT = 0 64500013 BC 12,RBT2050 YES-TAKE BRANCH, BLOCK IS FULL 64800013 SPACE 1 65100013 RBT2010 BCTR RE,0 NO-DECREMENT BLK CNT BY 1 65400013 ST RE,KOBLKCNT 65700013 L RC,KBLKPTR 66000013 SPACE 1 66300013 RBT2020 SH RC,PPIRCDL2 DECREMENT BLK PTR BY RCD LENGTH 66600013 ST RC,KBLKPTR 66900013 RBT2025 MVC 0(1,RC),0(RD) MOVE WINNER RCD TO OUTPUT BUFFER 67200013 SPACE 1 67500013 SR RG,RG 67800013 RBINCR IC RG,PPIDEPHO+3 INCR. FOR OUTPUT FILE COUNT 68100013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 68400013 L RI,0(RG,RH) LOAD COUNT FOR THIS UNIT 68700013 LA RI,1(RI) INCREMENT IT BY ONE 69000013 ST RI,0(RG,RH) RESTORE 69300013 SPACE 1 69600013 *DEBLOCK NEW RECORD FROM SAME FILE AS WINNER RCD 69900013 SPACE 1 70200013 LR RC,RD SAVE WINNER ADDRS 70500013 SRL RD,24 ACCESS INCREMENT 70800013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 71100013 L RF,0(RD,RH) LOAD COUNT FOR THIS UNIT 71400013 BCTR RF,0 DECREMENT IT BY ONE 71700013 ST RF,0(RD,RH) RESTORE 72000013 L RH,PPISBLCT SET RH=START ADDRS OF BLK CTRS 72300013 L RI,0(RD,RH) SET RI=BLK CNT FOR THIS BUFFER 72600013 BCTR RI,0 DECREMENT BLK CNT BY 1 72900013 SR RA,RA 73200013 CR RI,RA IS THIS BLK CNT = ZERO 73500013 BC 12,RBT2030 YES-TAKE BRANCH, BLK IS EMPTY 73800013 SPACE 1 74100013 ST RI,0(RD,RH) NO-STORE NEW BLK CNT 74400013 LR RD,RC INCREMENT WINNER BY RCD LENGTH TO 74700013 AH RD,PPIRCDL2 GET NEXT RCD 75000013 L RL,PPINETM+4 EXIT TO MERGE 75300013 B 8(0,RL) 75600013 EJECT 75900013 *INPUT BUFFER IS EMPTY - LINK TO READ ROUTINE TO REFILL BUFFER 76200013 * RC = ADDRESS OF EMPTY BUFFER 76500013 * RD = INCREMENT 76800013 SPACE 1 77100013 RBT2030 L RH,PPIBDSVA SET RH=ADDR OF BUFFER TABLE 77400013 L RC,0(RD,RH) ACCESS ADDR OF EMPTY BUFFER 77700013 L RL,PPIRD+4 EXIT TO READ RTN 78000013 B 8(0,RL) 78300013 SPACE 2 78600013 *RETURN FROM READ ROUTINE - 78900013 * RB = BLOCK COUNT 79200013 * RC = BUFFER ADDRS (FOR DEBLOCKING) 79500013 * RD = INCREMENT 79800013 * RE = BUFFER ADDRS (FOR READING) 80100013 SPACE 1 80400013 RBT2040 L RH,PPIBDSVA SET RH = ADDR OF BUFFER TABLE 80700013 ST RE,0(RD,RH) STORE BUFF ADDR IN TABLE 81000013 L RF,PPISBLCT SET RF = START ADDRS OF BLK CNTRS 81300013 ST RB,0(RD,RF) STORE BLK CNT IN BLK CNT TABLE 81600013 SLL RD,24 ADD INCR TO NEXT RCD 81900013 AR RD,RC 82200013 L RL,PPINETM+4 EXIT TO MERGE 82500013 B 8(0,RL) 82800013 SPACE 4 83100013 *OUTPUT BUFFER IS FULL - LINK TO WRITE RTN TO EMPTY BUFFER 83400013 * RB = NO. OF BYTES TO BE WRITTEN 83700013 * RC = ADDRESS OF BUFFER TO BE WRITTEN 84000013 SPACE 1 84300013 RBT2050 L RB,KBUFSIZ SET RB=NO. BYTES IN BUFFER 84600013 RBT2053 L RC,KBLKPTR SET RC=BUFFER ADRS 84900013 SH RC,K4 ADJUST BY 4 FOR EOS INDICATION 85200013 L RL,PPIWRT+4 EXIT TO WRITE RTN 85500013 B 8(0,RL) 85800013 SPACE 2 86100013 *RETURN FROM WRITE ROUTINE 86400013 * RC = ADDRESS OF EMPTY BUFFER 86700013 SPACE 1 87000013 RBT2060 LH RE,PPISRTBL RESET OUTPUT BLK CNT TO SORT BLKNG 87300013 ST RC,KIBLKPTR SAVE INITIAL PTR 87600013 ST RC,KBLKPTR SET BLK PTR 87900013 B RBT2010 88200013 SPACE 4 88500013 *END OF SEQUENCE - WRITE THIS BUFFER, RESET POINTERS TO REUSE THIS 88800013 *BUFFER THE NEXT TIME THROUGH 89100013 SPACE 1 89400013 RBT2080 L RB,KBUFSIZ 89700013 L RE,KOBLKCNT CALCULATE NO. OF BYTES TO BE 90000013 MH RE,PPIRCDL2 WRITTEN 90300013 SR RB,RE 90600013 SPACE 1 90900013 LH RE,PPISRTBL RESET OUTPUT BLOCKING TO SORT 91200013 ST RE,KOBLKCNT BLOCKING 91500013 RBT2090 L RC,KBLKPTR SET RC = BUFFER ADDRS 91800013 SH RC,K4 92100013 L RF,KIBLKPTR 92400013 ST RF,KBLKPTR SET BLK PTR 92700013 LA RE,4 SET INDICATION FOR NON-FINAL EOS 93000013 L RL,PPIWRT+4 93300013 B 4(0,RL) 93600013 SPACE 2 93900013 *LIST OF CONSTANTS USED BY MODULE: 94200013 SPACE 1 94500013 KOBLKCNT DS 1F OUTPUT BLOCK COUNT 94800013 KBUFSIZ DS 1F BUFFER SIZE WHEN FULL 95100013 K4 DC X'0004' CONSTANT =4 FOR OSCL., =12 FOR 2314 95400013 EJECT 95700013 SMPPI 96000013 END 96300013 ./ ADD SSI=01011615,SOURCE=1,NAME=IERABU TITLE 'IERABU - OS/360 SORT/MERGE - 360-SM023 05/11/66' 00300013 *MODULE NAME *** IERABU *** 00600013 SPACE 2 00900013 *STATUS: CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBU, A BLOCK/ 02100013 * DEBLOCK ROUTINE FOR FIXED LENGTH RECORDS GREATER THAN 256 BYTES IN 02400013 * THE MERGE PHASE OF AN OSCL/2314 SORT. IT ADJUSTS BUFFER POINTERS 02700013 * IN THE RUNNING PROGRAM AND ALLOCATES AREA IN GENERATED CORE FOR 03000013 * THE TAPE UNIT COUNTERS WHICH KEEP TRACK OF THE NUMBER OF RECORDS 03300013 * ON EACH UNIT. 03600013 SPACE 2 03900013 *USED AS A DSECT IN - N/A 04200013 * 04500013 * 04800013 *MACROS USED - 05100013 SPACE 1 05400013 * SMPPI 05700013 SPACE 2 06000013 *ENTRY POINTS: 06300013 SPACE 1 06600013 * ENTRY IERABT ENTRY FROM: IERRC9 06900013 * CALLING SEQUENCE- L RP,ASSG 07200013 * BR RP 07500013 SPACE 2 07800013 *INPUT: PPI FIELDS REFERENCED- 08100013 SPACE 1 08400013 * PPISRTBL PPIBDSVA 08700013 * PPILAB07 PPISPGN1 09000013 * PPILAB04 09300013 SPACE 2 09600013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 09900013 SPACE 1 10200013 * PPIUNTCT 10500013 * PPISPGN1 10800013 * ALLOCATES AREA FOR TAPE UNIT COUNTERS IN GENERATED CORE 11100013 * CONSTANTS AND CODE IN RUNNING PROGRAM ARE INITIALIZED. 11400013 SPACE 2 11700013 *EXTERNAL ROUTINES: 12000013 SPACE 1 12300013 * N/A 12600013 SPACE 2 12900013 *EXTERNAL PARAMETERS: 13200013 SPACE 1 13500013 * PPIBLK2-ADDRS FOR DSECT 13800013 SPACE 2 14100013 *EXITS: NORMAL 14400013 SPACE 1 14700013 * IERRC9 BR RO RETURN TO LOAD MODULE 15000013 SPACE 2 15300013 *EXITS: ERROR 15600013 SPACE 1 15900013 * N/A 16200013 SPACE 2 16500013 *TABLES/WORK AREAS: 16800013 SPACE 1 17100013 * N/A 17400013 SPACE 2 17700013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 18000013 SPACE 2 18300013 *NOTES: 18600013 SPACE 1 18900013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS GREATER THAN 256 BYTES 19200013 * IN THE MERGE PHASE. 19500013 EJECT 19800013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 20100013 SPACE 1 20400013 RA EQU 0 CONTENTS IN-N/A 20700013 * USE-N/A 21000013 * CONTENTS OUT-N/A 21300013 RB EQU 1 CONTENTS IN-N/A 21600013 * USE-N/A 21900013 * CONTENTS OUT-N/A 22200013 RC EQU 2 CONTENTS IN-N/A 22500013 * USE-IN ADDRESS CONSTANT 22800013 * CONTENTS OUT-N/A 23100013 RD EQU 3 CONTENTS IN-N/A 23400013 * USE- WORK REGISTER 23700013 * CONTENTS OUT-N/A 24000013 RE EQU 4 CONTENTS IN-N/A 24300013 * USE-DSECT BASE REG 24600013 * CONTENTS OUT-N/A 24900013 RF EQU 5 CONTENTS IN-N/A 25200013 * USE-WORK REG 25500013 * CONTENTS OUT-N/A 25800013 RG EQU 6 CONTENTS IN-N/A 26100013 * USE-WORK REG. 26400013 * CONTENTS OUT-N/A 26700013 RH EQU 7 CONTENTS IN-N/A 27000013 * USE-N/A 27300013 * CONTENTS OUT-N/A 27600013 RI EQU 8 CONTENTS IN-N/A 27900013 * USE-WORK REG 28200013 * CONTENTS OUT-N/A 28500013 RJ EQU 9 CONTENTS IN-N/A 28800013 * USE-N/A 29100013 * CONTENTS OUT-N/A 29400013 RK EQU 10 CONTENTS IN-N/A 29700013 * USE-N/A 30000013 * CONTENTS OUT-N/A 30300013 RL EQU 11 CONTENTS IN-N/A 30600013 * USE-MODULE BASE REG 30900013 * CONTENTS OUT-N/A 31200013 RM EQU 12 CONTENTS IN-N/A 31500013 * USE-N/A 31800013 * CONTENTS OUT-N/A 32100013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 32400013 * USE-PPT REFERENCE,REGISTER SAVE 32700013 * AREA 33000013 * CONTENTS OUT- ADDRESS OF PPI 33300013 RO EQU 14 CONTENTS IN LOAD MODULE ADDRS 33600013 * USE-RETURN REG 33900013 * CONTENTS OUT-LOAD MODULE ADDRS 34200013 RP EQU 15 CONTENTS IN-MODULE ADDRS 34500013 * USE-SET BASE REG 34800013 * CONTENTS OUT-MODULE ADDRESS 35100013 SPACE 2 35400013 *START OF MODULE CODE PROPER: 35700013 SPACE 2 36000013 IERABU CSECT 36300013 USING *,RL 36600013 USING DIERRBU,RE 36900013 USING IERRCA,RN 37200013 IERMBG LR RL,RP 37500013 L RE,PPIBLK2+4 SET DSECT BASE REG 37800013 SPACE 3 38100013 LH RF,PPISRTBL SET OUTPUT BLK CNT=SORT BLKING 38400013 ST RF,KOBLKCNT 38700013 L RG,KMASK 39000013 N RG,PPILAB07 SET RG=OUTPUT BUFFER SIZE 39300013 ST RG,KBUFSIZ SET BUFF SIZE IN RUNNING PROG. 39600013 L RF,PPILAB04 SET RF=OUTPUT BUFFER ADDRS 39900013 TM PPISW1+6,X'02' CHECK FOR 2314 40200013 BO ABU1020 YES, SET UP TO BLOCK FORWARD 40500013 SPACE 1 40800013 ABU1010 AR RF,RG SET CONSTANTS 41100013 ST RF,KBLKPTR SET BLOCK POINTER AND 41400013 ST RF,KIBLKPTR INITIAL BLOCK POINTER 41700013 SPACE 2 42000013 * SET UP TAPE UNIT COUNTERS IN GENERATED CORE 42300013 SPACE 1 42600013 SR RD,RD 42900013 IC RD,PPIBDSVA LOAD NUMBER OF TAPE UNITS 43200013 LA RD,1(RD) 43500013 LA RF,4 43800013 MR RE,RD MULTIPLY BY FOUR 44100013 L RD,PPISPGN1 LOAD ADDRESS OF GENERATED CORE 44400013 SR RD,RF SUBTRACT REQUIRED AMT OF CORE 44700013 N RD,KROUND PUT ON FULL WORD BOUNDARY 45000013 MVI 0(RD),X'00' ZERO OUT THE AREA 45300013 S RF,KTWO 45600013 EX RF,BTZERO 45900013 ST RD,PPISPGN1 STORE NEW ADDRESS OF GEN. CORE 46200013 ST RD,PPIUNTCT STORE ADDRESS OF UNIT COUNTERS 46500013 BR RO RETURN TO LOAD MODULE 46800013 SPACE 2 47100013 ABU1020 LA RG,12 ADJUST FOR EOS AND CHAIN BYTES 47400013 STH RG,K4 47700013 MVC RBU2020(18),KABUKON1 OVERLAY TO MVC RCD, THEN UPDATE 48000013 MVC RBU2053(4),KABUKON2 BLOCK POINTER 48300013 MVC RBU2090(4),KABUKON2 INITIAL BLOCK POINTER 48600013 MVC RBINCR(4),KABUKON INCR. FOR OUTPUT FILE 48900013 B ABU1010 49200013 SPACE 2 49500013 * EXECUTED MOVE INSTRUCTION TO ZERO OUT UNIT COUNTER AREA 49800013 SPACE 1 50100013 BTZERO MVC 1(1,RD),0(RD) 50400013 SPACE 2 50700013 *LIST OF CONSTANTS USED BY MODULE: 51000013 SPACE 1 51300013 KTWO DC F'2' 51600013 KROUND DC X'FFFFFFFC' 51900013 KMASK DC X'00FFFFFF' 52200013 DROP RL 52500013 DROP RE 52800013 USING DIERRBU,RL 53100013 KABUKON IC RG,PPIDEPHO+1 INCR FOR OUTPUT FILE 53400013 KABUKON1 LR RE,RD 53700013 LR RF,RC 54000013 L RP,PPIBDSVA+8 MOVE RECORD 54300013 BALR RO,RP 54600013 AH RC,PPIRCDL2 UPDATE BLOCK 54900013 ST RC,KBLKPTR POINTER 55200013 KABUKON2 L RC,KIBLKPTR INITIAL BLOCK POINTER 55500013 EJECT 55800013 SPACE 2 56100013 *** IERRBU *** 56400013 *DUMMY RUNNING PROGRAM 56700013 SPACE 2 57000013 DIERRBU DSECT 57300013 USING *,RL 57600013 USING IERRCA,RN 57900013 IERDB2 B RBU2080 EOS ENTRY 58200013 B RBU2040 READ ENTRY 58500013 B RBU2060 WRITE ENTRY 58800013 B *+4 PRIMING ENTRY (REQUIRES NO ACTION 59100013 * IN THIS MODULE 59400013 B RBBRANCH 59700013 SPACE 1 60000013 KBLKPTR DS F BLOCK POINTER 60300013 KIBLKPTR DS F INITIAL BLOCK POINTER 60600013 SPACE 1 60900013 RBBRANCH L RE,KOBLKCNT SET RE=OUTPUT BLOCK COUNT 61200013 * NORMAL ENTRY FROM MERGE 61500013 SR RA,RA 61800013 CR RE,RA IS BLOCK COUNT = ZERO 62100013 BC 12,RBU2050 YES-TAKE BRANCH, BLOCK IS FULL 62400013 SPACE 1 62700013 RBU2010 BCTR RE,0 NO-DECREMENT BLK CNT BY 1 63000013 ST RE,KOBLKCNT 63300013 L RC,KBLKPTR 63600013 SPACE 1 63900013 SPACE 1 64200013 RBU2020 SH RC,PPIRCDL2 DECREMENT BLK PTR BY RCD LENGTH 64500013 ST RC,KBLKPTR 64800013 LR RE,RD SET RE=RCD ADDRS FOR MOVE RTN 65100013 LR RF,RC SET RC = BUFFER ADDRS 65400013 L RP,PPIBDSVA+8 LINK TO MOVE LIST - MOVE WINNER 65700013 BALR RO,RP TO OUTPUT BUFFER 66000013 SPACE 2 66300013 SR RG,RG 66600013 RBINCR IC RG,PPIDEPHO+3 INCR. FOR OUTPUT FILE COUNT 66900013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 67200013 L RI,0(RG,RH) LOAD COUNT FOR THIS UNIT 67500013 LA RI,1(RI) INCREMENT IT BY ONE 67800013 ST RI,0(RG,RH) RESTORE 68100013 SPACE 1 68400013 *DEBLOCK NEW RECORD FROM SAME FILE AS WINNER RECORD 68700013 SPACE 1 69000013 LR RC,RD SAVE WINNER ADDRS 69300013 SRL RD,24 ACCESS INCREMENT 69600013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 69900013 L RF,0(RD,RH) LOAD COUNT FOR THIS UNIT 70200013 BCTR RF,0 DECREMENT IT BY ONE 70500013 ST RF,0(RD,RH) RESTORE 70800013 L RH,PPISBLCT SET RH=START ADDRS OF BLK CTRS 71100013 L RI,0(RD,RH) SET RI=BLK CNT FOR THIS BUFFER 71400013 BCTR RI,0 DECREMENT BLK CNT BY 1 71700013 SR RA,RA 72000013 CR RI,RA IS THIS BLK CNT = ZERO 72300013 BC 12,RBU2030 YES-TAKE BRANCH, BLK IS EMPTY 72600013 SPACE 1 72900013 ST RI,0(RD,RH) NO-STORE NEW BLK CNT 73200013 LR RD,RC INCREMENT WINNER BY RCD LENGTH TO 73500013 AH RD,PPIRCDL2 GET NEXT RECORD 73800013 L RL,PPINETM+4 EXIT TO MERGE 74100013 B 8(0,RL) 74400013 EJECT 74700013 *INPUT BUFFER IS EMPTY - LINK TO READ ROUTINE TO REFILL BUFFER 75000013 * RC = ADDRESS OF EMPTY BUFFER 75300013 * RD = INCREMENT 75600013 SPACE 1 75900013 RBU2030 L RH,PPIBDSVA SET RH=ADDR OF BUFFER TABLE 76200013 L RC,0(RD,RH) ACCESS ADDR OF EMPTY BUFFER 76500013 L RL,PPIRD+4 EXIT TO READ RTN 76800013 B 8(RL) 77100013 SPACE 2 77400013 *RETURN FROM READ ROUTINE - 77700013 * RB = BLOCK COUNT 78000013 * RC = BUFFER ADDRESS (FOR DEBLOCKING) 78300013 * RD = INCREMENT 78600013 * RE = BUFFER ADDRESS (FOR READING) 78900013 SPACE 1 79200013 RBU2040 L RH,PPIBDSVA SET RH = ADDR OF BUFFER TABLE 79500013 ST RE,0(RD,RH) STORE BUFF ADDR IN TABLE 79800013 L RF,PPISBLCT SET RF = START ADDRS OF BLK CNTRS 80100013 ST RB,0(RD,RF) STORE BLK CNT IN BLK CNT TABLE 80400013 SLL RD,24 ADD INCR TO NEXT RCD 80700013 AR RD,RC 81000013 L RL,PPINETM+4 EXIT TO MERGE 81300013 B 8(0,RL) 81600013 SPACE 3 81900013 *OUTPUT BUFFER IS FULL - LINK TO WRITE RTN TO EMPTY BUFFER 82200013 * RB = NO. OF BYTES TO BE WRITTEN 82500013 * RC = ADDRESS OF BUFFER TO BE WRITTEN 82800013 SPACE 1 83100013 RBU2050 L RB,KBUFSIZ SET RB=NO. BYTES IN BUFFER 83400013 RBU2053 L RC,KBLKPTR SET RC = BUFFER ADDRS 83700013 SH RC,K4 ADJUST BY 4 FOR EOS INDICATION 84000013 L RL,PPIWRT+4 EXIT TO WRITE 84300013 B 8(RL) 84600013 SPACE 2 84900013 *RETURN FROM WRITE ROUTINE 85200013 * RC = ADDRESS OF EMPTY BUFFER 85500013 SPACE 1 85800013 RBU2060 LH RE,PPISRTBL RESET OUTPUT BLK CNT TO SORT BLKNG 86100013 ST RC,KIBLKPTR SAVE INITIAL POINTER 86400013 ST RC,KBLKPTR SET BLK PTR 86700013 B RBU2010 87000013 SPACE 3 87300013 *END OF SEQUENCE - WRITE THIS BUFFER, RESET POINTERS TO REUSE THIS 87600013 *BUFFER THE NEXT TIME THROUGH 87900013 SPACE 1 88200013 RBU2080 L RB,KBUFSIZ 88500013 L RE,KOBLKCNT CALCULATE NO. OF BYTES TO BE 88800013 MH RE,PPIRCDL2 WRITTEN 89100013 SR RB,RE 89400013 SPACE 1 89700013 *RB = BUFFER SIZE WHEN FULL - (REMAINING BLOCK COUNT * RCD LENGTH) 90000013 LH RE,PPISRTBL RESET OUTPUT BLOCKING TO SORT 90300013 ST RE,KOBLKCNT BLOCKING 90600013 RBU2090 L RC,KBLKPTR SET RC = BUFFER ADDRS 90900013 SH RC,K4 DECR BY 4 FOR EOS INDICATION 91200013 L RF,KIBLKPTR 91500013 ST RF,KBLKPTR SET BLK PTR 91800013 LA RE,4 SET INDICATION FOR NON-FINAL EOS 92100013 L RL,PPIWRT+4 EXIT TO WRITE ON EOS 92400013 B 4(RL) 92700013 SPACE 2 93000013 *LIST OF CONSTANTS USED BY MODULE: 93300013 SPACE 2 93600013 *CONSTANTS 93900013 SPACE 1 94200013 KOBLKCNT DS 1F OUTPUT BLOCK COUNT 94500013 KBUFSIZ DS 1F BUFFER SIZE WHEN FULL 94800013 K4 DC X'0004' CONSTANT =4 FOR OSCL., =12 FOR 2314 95100013 SPACE 2 95400013 EJECT 95700013 SMPPI 96000013 END 96300013 ./ ADD SSI=01011720,SOURCE=1,NAME=IERABV TITLE 'IERABV - OS/360 SORT/MERGE - 360-SM023 05/11/66' 00200013 *MODULE NAME:*** IERABV *** 00400013 SPACE 2 00600013 *STATUS: CHANGE LEVEL 000 00800013 SPACE 2 01000013 *MODULE FUNCTION/OPERATION: 01200013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR THE RUNNING PROGRAM 01400013 * IERRBV, A BLOCK/DEBLOCK ROUTINE FOR VARIABLE LENGTH RECORDS WITHOUT 01600013 * USER EXITS IN THE MERGE PHASE OF AN OSCL/2314 SORT. IT SETS 01800013 * WORK AREAS AND CONSTANTS TO SPECIFIC VALUES IN THE RUNNING PROGRAM. 02000013 * IT ALSO ALLOCATES AREA IN GENERATED CORE FOR THE TAPE UNIT COUNTERS 02200013 * WHICH KEEP TRACK OF THE NUMBER OF RECORDS ON EACH UNIT. 02400013 SPACE 2 02600013 *MACRO'S USED: 02800013 SPACE 1 03000013 * SMPPI 03200013 SPACE 2 03400013 *ENTRY POINTS: 03600013 SPACE 1 03800013 * ENTRY IERMBG ENTRY FROM: LOAD MODULE, IERRC9 04000013 * CALLING SEQUENCE- 04200013 * LOAD EP=IERABV,DCB= 04400013 * LR RP,RA 04600013 * BALR RO,RP 04800013 SPACE 2 05000013 *INPUT: PPI FIELDS REFERENCED- 05200013 SPACE 1 05400013 * PPILAB04 PPILAB07 05600013 * PPIBDSVA PPIUNTCT 05800013 * PPISPGN1 06000013 SPACE 2 06200013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 06400013 SPACE 1 06600013 * PPIUNTCT 06800013 * PPISPGN1 07000013 * CONSTANTS AND CODE IN THE RUNNING PROGRAM ARE INITIALIZD 07200013 * ALLOCATES AREA FOR TAPE UNIT COUNTERS IN GENERATED CORE 07400013 SPACE 2 07600013 *EXTERNAL ROUTINES: 07800013 SPACE 1 08000013 * NONE 08200013 SPACE 2 08400013 *EXTERNAL PARAMETERS: 08600013 SPACE 1 08800013 * NONE 09000013 SPACE 2 09200013 *EXITS: NORMAL 09400013 SPACE 1 09600013 * BR RO - RETURN TO LOAD MODULE, IERRC9 09800013 SPACE 2 10000013 *EXITS: ERROR 10200013 SPACE 1 10400013 * NONE 10600013 SPACE 2 10800013 *TABLES/WORK AREAS: 11000013 SPACE 1 11200013 * NONE 11400013 SPACE 2 11600013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 11800013 SPACE 2 12000013 *NOTES: 12200013 SPACE 1 12400013 * THIS MODULE IS USED FOR VARIABLE LENGTH RECORDS WITOUT USER EXITS 12600013 * IN THE MERGE PHASE. 12800013 SPACE 2 13000013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 13200013 SPACE 1 13400013 RA EQU 0 USE-NOT USED 13600013 RB EQU 1 USE-NOT USED 13800013 RC EQU 2 USE-NOT USED 14000013 RD EQU 3 CONTENTS IN- N/A 14200013 * USE- WORK REGISTER 14400013 * CONTENTS OUT- N/A 14600013 RE EQU 4 CONTENTS IN- N/A 14800013 * USE- WORK REGISTER 15000013 * CONTENTS OUT- N/A 15200013 RF EQU 5 CONTENTS IN- N/A 15400013 * USE- WORK REGISTER 15600013 * CONTENTS OUT- N/A 15800013 RG EQU 6 USE-NOT USED 16000013 RH EQU 7 USE-NOT USED 16200013 RI EQU 8 USE-NOT USED 16400013 RJ EQU 9 USE-NOT USED 16600013 RK EQU 10 CONTENTS IN- N/A 16800013 * USE- BASE REGISTER FOR DSECT OF 17000013 * RUNNING PROGRAM 17200013 * CONTENTS OUT- N/A 17400013 RL EQU 11 CONTENTS IN- N/A 17600013 * USE- BASE REGISTER FOR THIS MODULE 17800013 * CONTENTS OUT- N/A 18000013 RM EQU 12 USE-NOT USED 18200013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 18400013 * USE- PPI REFERENCE,REGISTER SAVE 18600013 * AREA 18800013 * CONTENTS OUT- ADDRESS OF PPI 19000013 RO EQU 14 CONTENTS IN - RETURN ADDRESS IN 19200013 * IERRC9 19400013 * USE- NOT USED 19600013 * CONTENTS OUT- RETURN ADDRESS IN 19800013 * IERRC9 20000013 RP EQU 15 CONTENTS IN- BASE ADDRESS OF THIS 20200013 * MODULE 20400013 * USE- NOT USED 20600013 * CONTENTS OUT- N/A 20800013 SPACE 2 21000013 *START OF MODULE CODE PROPER: 21200013 SPACE 2 21400013 IERABV CSECT 21600013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 21800013 USING IERRBVD,RK ADDR OF RUNNING PROGRAM DUMMY MOD 22000013 USING IERRCA,RN PPI COMMON MODULE BASE REGISTER 22200013 IERMBG LR RL,RP LOAD MODULE BASE REG 22400013 L RK,PPIBLK2+4 LOAD ADDRESS OF RUNNING PROGRAM 22600013 MVC WBLKCCNT,KEIGHT SET BLOCK CHARACTER CTR TO 8 22800013 L RF,PPILAB04 LOAD ADDR OF OUTPUT BUFFER 1 23000013 TM PPISW1+6,X'02' CHECK FOR 2314 23200013 BO ABV2314 YES, SET UP TO BLOCK FORWARD 23400013 SPACE 1 23600013 AH RF,PPILAB07+2 ADD ROUNDED LENGTH OF OUTBLOCK BLOCK 23800013 ABV1000 ST RF,WLSTPTR OUTPUT BLOCK ADDRESS 24000013 ST RF,WLSTPTRD CURRENT OUTPUT BLK ENDING ADDR+1 24200013 SPACE 2 24400013 * SET UP TAPE UNIT COUNTERS IN GENERATED CORE 24600013 SPACE 1 24800013 SR RD,RD 25000013 IC RD,PPIBDSVA LOAD NUMBER OF TAPE UNITS 25200013 LA RD,1(RD) 25400013 LA RF,4 25600013 MR RE,RD MULTIPLY BY FOUR 25800013 L RD,PPISPGN1 LOAD ADDRESS OF GENERATED CORE 26000013 SR RD,RF SUBTRACT REQUIRED AMT OF CORE 26200013 N RD,KROUND PUT ON FULL WORD BOUNDARY 26400013 MVI 0(RD),X'00' ZERO OUT THE AREA 26600013 S RF,KTWO 26800013 EX RF,BTZERO 27000013 ST RD,PPISPGN1 STORE NEW ADDRESS OF GEN. CORE 27200013 ST RD,PPIUNTCT STORE ADDRESS OF UNIT COUNTERS 27400013 BR RO RETURN TO LOAD MODULE 27600013 SPACE 2 27800013 ABV2314 LA RF,16(0,RF) ADJUST FOR EOS,BCC AND CHAIN BYTES 28000013 MVI KEIGHT+3,X'10' 28200013 MVI KFOUR+3,X'0C' ADJUST BCC BY CHAIN TOO 28400013 MVI WBLKCCNT+3,X'10' 28600013 MVC RBSUBRLT(2),KNOP OVERLAY TO MOVE RCD., THEN UPDATE 28800013 MVC RBSUBRLD(2),KNOP BLOCK POINTER 29000013 MVC RBLSTPTR(4),KABVKON1 INITIAL BLOCK 29200013 MVC RBEOS(4),KABVKON2 POINTER 29400013 MVC RBINCR(4),KABVKON 29600013 B ABV1000 29800013 SPACE 2 30000013 * EXECUTED MOVE INSTRUCTION TO ZERO OUT UNIT COUNTER AREA 30200013 SPACE 1 30400013 BTZERO MVC 1(1,RD),0(RD) 30600013 SPACE 2 30800013 * CONSTANTS USED BY THE PROGRAM 31000013 SPACE 1 31200013 KTWO DC F'2' 31400013 KROUND DC X'FFFFFFFC' 31600013 KNOP DC X'4700' 31800013 DROP RL 32000013 DROP RK 32200013 USING IERRBVD,RL 32400013 KABVKON1 L RC,WLSTPTRD INITIAL 32600013 KABVKON IC RG,PPIDEPHO+1 32800013 KABVKON2 L RE,WLSTPTRD 33000013 EJECT 33200013 * DSECT OF RUNNING PROGRAM *** IERABV *** 33400013 SPACE 3 33600013 IERRBVD DSECT 33800013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 34000013 USING IERRCA,RN ADDR OF PPI LOADED EXTERNALLY 34200013 SPACE 1 34400013 * ENTRY TABLE 34600013 SPACE 1 34800013 IERDB2 B RBEOS FROM MERGE ON NORMAL EOS 35000013 B RBRDRTRN FROM READ MODULE 35200013 B RBWRT FROM WRITE MODULE 35400013 BC 0,RBSAVE PRIMING ENTRY-ONLY FOR USER MODS MOD 35600013 B RBBRANCH 35800013 SPACE 1 36000013 WLSTPTR DC F'0' INITIALLY LOADED BY A.P. TO OUTPUT 36200013 * BLOCK ENDING ADDRESS + 1. 36400013 WLSTPTRD DC F'0' OUTPUT BLOCK ENDING ADDRESS + 1. 36600013 SPACE 1 36800013 SPACE 1 37000013 * NORMAL MERGE ENTRY. INCR BLOCK CHAR CTR. CHECK IF RCD WILL FIT IN 37200013 * OUTPUT BLOCK. IF NOT, WRITE THE BLOCK BEFORE MOVING THE RCD. 37400013 SPACE 1 37600013 RBBRANCH L RG,WBLKCCNT OUTPUT BLOCK CHAR CTR INITIALLY 37800013 * PRESET TO 8 BY A.P. 38000013 MVC WRCDLGTH+2(2),0(RD) MOVE RCD LENGTH TO PROPER BOUNDARY 38200013 A RG,WRCDLGTH ADD RCD LENGTH TO OUTPUT BLOCK CHAR 38400013 * CTR 38600013 CH RG,PPILAB07+2 GREATER THAN ROUNDED OUTPUT BLOCKING 38800013 BC 2,RBWRTBLK GRTR,BR TO WRITE THE BLOCK FIRST 39000013 RBSAVE ST RG,WBLKCCNT SAVE UPDATED BLOCK CHAR CTR 39200013 ST RD,WINNER SAVE ADDR OF RCD IN INPUT BLOCK 39400013 L RF,WLSTPTR ADDR IN OUTPUT BLOCK TO MOVE RCD 39600013 RBSUBRLT S RF,WRCDLGTH DECR ADDR BY RCD LGTH. FOR TAPE SORT 39800013 * RCDS FILL OUTPUT BLOCK STARTG FROM 40000013 * HI CORE TO LOW. 40200013 SR RG,RG 40400013 RBINCR IC RG,PPIDEPHO+3 40600013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 40800013 L RI,0(RG,RH) LOAD COUNT FOR THIS UNIT 41000013 LA RI,1(RI) INCREMENT BY ONE 41200013 ST RI,0(RG,RH) RESTORE 41400013 LR RE,RD ADDR OF RCD IN INPUT AREA FOR MOVE 41600013 L RI,WRCDLGTH LENGTH OF RCD FOR MOVE RTN 41800013 SPACE 1 42000013 * GENERALIZED MOVE RTN USED TO MOVE ANY SIZE DATA RCD FROM ONE DATA 42200013 * AREA TO ANOTHER. REGISTERS ARE USED AS FOLLOWS- 42400013 SPACE 1 42600013 * RE ADDR FROM WHICH THE DATA IS TO BE MOVED 42800013 * RF ADDR TO WHICH THE DATA IS TO BE MOVED 43000013 * RI DATA RCD LENGTH 43200013 SPACE 1 43400013 * IN ADDITION THE ROUTINE USES REGISTERS RG AND RH. 43600013 SPACE 1 43800013 CL RI,KON256 RCD LENGTH TO 256 44000013 BC 12,RBNMV020 LESS THAN OR EQUAL 44200013 SPACE 1 44400013 LA RH,256 SET UP TO MOVE RCD IN SECTIONS OF 44600013 LNR RG,RH 256 BYTES EACH 44800013 RBKMOVE MVC 0(256,RF),0(RE) 45000013 AR RE,RH UPDATE DATA AREA POINTERS BY 256 45200013 AR RF,RH BYTES 45400013 BXLE RI,RG,RBNMV020 TEST FOR REMAINING LENGTH--LE 256 45600013 BC 15,RBKMOVE ANOTHER FULL MOVE OF 256 BYTES NEEDD 45800013 SPACE 2 46000013 KON256 DC F'256' 46200013 KMOVE1 MVC 0(1,RF),0(RE) 46400013 RBNMV020 LR RG,RI MOVE LENGTH LE 256 BYTES 46600013 BCTR RG,0 DECR RG BY ONE 46800013 EX RG,KMOVE1 47000013 SPACE 1 47200013 * END OF GENERALIZED MOVE ROUTINE. 47400013 SPACE 1 47600013 AR RF,RI UPDATE OUTPUT BLOCK RCD PTR BY 47800013 * REMAINING RCD LENGTH 48000013 RBSUBRLD S RF,WRCDLGTH DECR ADDRESS BY RECORD LENGTH 48200013 ST RF,WLSTPTR SAVE UPDATED OUTPUT BLOCK RCD PTR 48400013 B RBDEBLCK BR TO DEBLOCK ANOTHER RCD 48600013 SPACE 2 48800013 * WRITE A BLOCK. THIS RCD CAN'T FIT INTO THIS BLOCK 49000013 SPACE 1 49200013 RBWRTBLK S RG,WRCDLGTH SUBTR LENGTH OF RCD THAT CAN'T FIT 49400013 * FROM OUTPUT BLOCK CHAR COUNT 49600013 RBLSTPTR L RC,WLSTPTR LOAD OUTPUT BLOCK RECORD POINTER 49800013 S RC,KEIGHT EQUALS ADDR OF OUTPUT BLK TO WRITE 50000013 ST RG,WBLKCCNT STORE BLK CHAR CTR IN 1ST 2 BYTES 50200013 MVC 0(2,RC),WBLKCCNT+2 50400013 LR RB,RG ALSO, IN RB FOR WRITE MODULE PARAM 50600013 SPACE 1 50800013 * INTERFACE TO WRITE MODULE 51000013 SPACE 1 51200013 L RL,PPIWRT+4 ADDR OF WRITE MODULE 51400013 B 8(RL) BR TO WRITE MODULE 51600013 SPACE 1 51800013 * WRITE MODULE REENTERS VIA BRANCH TABLE. RC FOR TAPE,HAS AN OUTPUT 52000013 * BLOCK ENDING ADDRESS+1. 52200013 SPACE 1 52400013 RBWRT ST RC,WLSTPTRD SAVE AS CURRENT OUTPUT BLK POINTER 52600013 ST RC,WLSTPTR STORE AS OUTPUT BLK WORK POINTER 52800013 L RG,KEIGHT REINITIALIZE BCC TO 8 OR 16 53000013 A RG,WRCDLGTH ADD LENGTH OF RCD TO BE MOVED TO 53200013 * OUTPUT BLOCK 53400013 B RBSAVE BR TO MOVE RCD TO OUTPUT BLOCK 53600013 SPACE 2 53800013 * FROM MERGE.NORMAL EOS.PREVIOUS RCD WAS EOS RCD AND IS IN OUTPUT BLK 54000013 * NO NEW RECORDS PASSED TO BLOCK RTN AT THIS TIME. 54200013 SPACE 1 54400013 RBEOS L RE,WLSTPTR 54600013 MVC WLSTPTR,WLSTPTRD RESET OUTPUT BLOCK POINTER 54800013 S RE,KEIGHT DECR OUTPUT BLK PTR BY 8 TO INSERT 55000013 * BLOCK CHAR CNT IN 1ST 2 BYTES 55200013 MVC 0(2,RE),WBLKCCNT+2 STORE BLK CHAR CNT IN OUTPUT BLK 55400013 L RB,WBLKCCNT LOAD BLOCK CHAR CNT FOR WRITE MOD 55600013 MVC WBLKCCNT,KEIGHT REINITIALIZE BLOCK CHAR CTR TO 8 55800013 LR RC,RE LOAD OUTPUT BLOCK PTR FOR WRITE 56000013 LA RE,4 SET INDICATION FOR NON-FINAL EOS 56200013 SPACE 1 56400013 * INTERFACE TO WRITE MODULE FOR NORMAL EOS 56600013 SPACE 1 56800013 L RL,PPIWRT+4 ADDR OF WRITE MODULE 57000013 B 4(RL) BR TO WRITE MODULE 57200013 SPACE 2 57400013 * DEBLOCK SIDE OF PROGRAM 57600013 SPACE 1 57800013 RBDEBLCK SRL RD,24 SHIFT TO GET AT INCR OF WINNER RCD 58000013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 58200013 L RF,0(RD,RH) LOAD COUNT FOR THIS UNIT 58400013 BCTR RF,0 DECREMENT BY ONE 58600013 ST RF,0(RD,RH) STORE 58800013 L RG,PPISBLCT LOAD ADDR OF INPT BLK CHAR CNT TABLE 59000013 L RH,0(RD,RG) LOAD BLK CHAR CNT OF WINNER'S BLOCK 59200013 S RH,WRCDLGTH SUBTRACT RCD LENGTH OF WINNER 59400013 C RH,KZERO TEST IF BLOCK CHAR CNT IS ZERO 59600013 BC 8,RBREAD YES,BR TO READ ANOTHER BLK INTO 59800013 * INPUT BLK JUST VACATED 60000013 ST RH,0(RD,RG) NO,STORE UPDATED BLOCK CHAR CNT 60200013 L RD,WINNER RESTORE WINNER 60400013 A RD,WRCDLGTH ADDR OF NEXT RCD FROM WINNER FILE 60600013 SPACE 1 60800013 * INTERFACE TO MERGE NETWORK 61000013 SPACE 1 61200013 RBMERGE L RL,PPINETM+4 ADDR OF MERGE MODULE 61400013 B 8(RL) BR TO MERGE MODULE 61600013 SPACE 2 61800013 * FILL EMPTY INPUT BLOCK OF WINNER. RD HAS INCR IN LOW ORDER BYTE 62000013 SPACE 1 62200013 RBREAD L RG,PPIBDSVA ADDR OF INPUT BLK ADDR TABLE 62400013 L RC,0(RD,RG) ADDR OF THE WINNER'S INPUT BLOCK 62600013 SPACE 1 62800013 * INTERFACE TO READ MODULE 63000013 SPACE 1 63200013 L RL,PPIRD+4 ADDR OF READ MODULE 63400013 B 8(RL) BR TO READ MODULE 63600013 SPACE 2 63800013 * READ MODULE RETURNS VIA THIS MODULE BRANCH TABLE. THE REGS CONTAIN 64000013 * THE FOLLOWING.RB - BLOCK CNT,RC - ADDR OF 1ST RCD IN INPUT BLOCK. 64200013 * RD - INCREMENT, RE - ENDING ADDRESS OF BLOCK 64400013 SPACE 1 64600013 RBRDRTRN L RG,PPISBLCT LOAD ADDR OF BLOCK CNT TABLE 64800013 S RB,KFOUR EQUALS TOTAL BYTES(OF RCDS)IN BLOCK 65000013 ST RB,0(RD,RG) STORE NEW BLOCK CHAR CNT IN TABLE 65200013 L RG,PPIBDSVA ADDR OF TABLE OF INPUT BLK STRTG 65400013 * ADDRESSES 65600013 ST RE,0(RD,RG) STORE IN INDEXED POSITION IN TABLE 65800013 SLL RD,24 POSITION INCR IN HI BYTE 66000013 AR RD,RC INSERT STRTG ADDR OF 1ST RCD OF BLK 66200013 B RBMERGE BR TO MERGE 66400013 SPACE 2 66600013 * LIST OF CONSTANTS USED BY THE MODULE 66800013 SPACE 1 67000013 KZERO DC F'0' ZERO 67200013 KFOUR DC F'4' FOUR 67400013 KEIGHT DC F'8' CONSTANT =8 FOR OSCL., =16 FOR 2314 67600013 SPACE 2 67800013 * LIST OF WORK AREAS 68000013 SPACE 1 68200013 WBLKCCNT DC F'0' OUTPUT BLOCK CHAR CTR INITIALLY 68400013 * PRESET TO 8 BY A.P. 68600013 WRCDLGTH DC F'0' LENGTH OF INPUT RECORD TO BE BLOCKED 68800013 WINNER DC F'0' ADDR OF WINNER RCD IN INPUT BLOCK 69000013 EJECT 69200013 SMPPI 69400013 END 69600013 ./ ADD SSI=03011907,SOURCE=1,NAME=IERABW TITLE 'IERABW - OS/360 SORT/MERGE - 360-SM023 05/11/66' 00200013 *MODULE NAME *** IERABW *** 00400013 SPACE 2 00600013 *STATUS: CHANGE LEVEL 000 00800013 SPACE 2 01000013 *MODULE FUNCTION/OPERATION: 01200013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBW, A BLOCK/ 01400013 * DEBLOCK MODULE FOR FIXED LENGTH RECORDS WITH USER MODIFICATIONS IN 01600013 * THE MERGE PHASE OF AN OSCL/2314 SORT. IT ADJUSTS BUFFER POINTERS 01800013 * IN THE RUNNING PROG. IT ALSO ALLOCATES AREA IN GENERATED CORE FOR 02000013 * THE TAPE UNIT COUNTERS WHICH KEEP TRACK OF THE NUMBER OF RECORDS 02200013 * ON EACH UNIT. 02400013 SPACE 2 02600013 *USED AS A DSECT IN - N/A 02800013 * 03000013 * 03200013 *MACROS USED - 03400013 SPACE 1 03600013 * SMPPI 03800013 SPACE 2 04000013 *ENTRY POINTS: 04200013 SPACE 1 04400013 ENTRY IERABW ENTRY FROM: LOAD MODULE, IERRC9 04600013 * CALLING SEQUENCE- L RP,ASSG 04800013 * BR RP 05000013 SPACE 2 05200013 *INPUT: PPI FIELDS REFERENCED- 05400013 SPACE 1 05600013 * PPISRTBL 05800013 * PPILAB07 06000013 * PPILAB04 06200013 * PPIBDSVA 06400013 * PPISPGN1 06600013 SPACE 2 06800013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 07000013 SPACE 1 07200013 * PPIUNTCT 07400013 * PPISPGN1 07600013 * ALLOCATES AREA FOR TAPE UNIT COUNTERS IN GENERATED CORE 07800013 * CONSTANTS AND CODE IN RUNNING PROGRAM ARE INITIALIZED. 08000013 SPACE 2 08200013 *EXTERNAL ROUTINES: 08400013 SPACE 1 08600013 * N/A 08800013 SPACE 2 09000013 *EXTERNAL PARAMETERS: 09200013 SPACE 1 09400013 * PPIBLK2-ADDRS FOR DSECT 09600013 * PPIX25 - USER ADDRS FOR EXIT E15 09800013 * SPACE 2 10000013 *EXITS: NORMAL 10200013 SPACE 1 10400013 * IERRC9 BR RO RETURN TO LOAD MODULE 10600013 * 10800013 SPACE 2 11000013 *EXITS: ERROR 11200013 SPACE 1 11400013 * N/A 11600013 * 11800013 SPACE 2 12000013 *TABLES/WORK AREAS: 12200013 SPACE 1 12400013 * N/A 12600013 * 12800013 SPACE 2 13000013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 13200013 SPACE 2 13400013 *NOTES: 13600013 SPACE 1 13800013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS 14000013 * WHEN E25 IS ACTIVATED. 14200013 EJECT 14400013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 14600013 SPACE 1 14800013 RA EQU 0 CONTENTS IN-N/A 15000013 * USE-N/A 15200013 * CONTENTS OUT-N/A 15400013 RB EQU 1 CONTENTS IN-N/A 15600013 * USE-N/A 15800013 * CONTENTS OUT-N/A 16000013 RC EQU 2 CONTENTS IN-N/A 16200013 * USE-IN INSTRUCTION CONSTANT 16400013 * CONTENTS OUT-N/A 16600013 RD EQU 3 CONTENTS IN-N/A 16800013 * USE- WORK REGISTER 17000013 * CONTENTS OUT-N/A 17200013 RE EQU 4 CONTENTS IN-N/A 17400013 * USE-DSECT BASE REG 17600013 * CONTENTS OUT-N/A 17800013 RF EQU 5 CONTENTS IN-N/A 18000013 * USE-WORK REG 18200013 * CONTENTS OUT-N/A 18400013 RG EQU 6 CONTENTS IN-N/A 18600013 * USE-WORK REG 18800013 * CONTENTS OUT-N/A 19000013 RH EQU 7 CONTENTS IN-N/A 19200013 * USE-N/A 19400013 * CONTENTS OUR-N/A 19600013 RI EQU 8 CONTENTS IN-N/A 19800013 * USE-WORK REG 20000013 * CONTENTS OUT-N/A 20200013 RJ EQU 9 CONTENTS IN-N/A 20400013 * USE-N/A 20600013 * CONTENTS OUT-N/A 20800013 RK EQU 10 CONTENTS IN-N/A 21000013 * USE-N/A 21200013 * CONTENTS OUT-N/A 21400013 RL EQU 11 CONTENTS IN-N/A 21600013 * USE-MODULE BASE REG 21800013 * CONTENTS OUT-N/A 22000013 RM EQU 12 CONTENTS IN-N/A 22200013 * USE-N/A 22400013 * CONTENTS OUT-N/A 22600013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 22800013 * USE- PPI REFERENCE,REGISTER SAVE 23000013 * AREA 23200013 * CONTENTS OUT- ADDRESS OF PPI 23400013 RO EQU 14 CONTENTS IN-LOAD MODULE ADDRS 23600013 * USE-RETURN REG 23800013 * CONTENTS OUT-LOAD MODULE ADDRS 24000013 RP EQU 15 CONTENTS IN-MODULE ADDRS 24200013 * USE-SET BASE REG 24400013 * CONTENTS OUT-MODULE ADDRS 24600013 SPACE 2 24800013 *START OF MODULE CODE PROPER: 25000013 SPACE 2 25200013 IERABW CSECT 25400013 *0515366000,402000,470000,594000 4553 25500018 USING *,RL 25600013 USING DIERRBW,RE 25800013 USING IERRCA,RN 26000013 IERMBG LR RL,RP 26200013 L RE,PPIBLK2+4 SET BASE REG FOR DSECT 26400013 LH RF,PPISRTBL SET OUTPUT BLK CNT = SORT BLOCKING 26600013 ST RF,KOBLKCNT 26800013 L RG,KMASK 27000013 N RG,PPILAB07 SET RG=OUTPUT BUFFER SIZE 27200013 ST RG,KBUFSIZ SET BUFF SIZE IN RUNNING PROGRAM 27400013 L RF,PPILAB04 SET RF=OUTPUT BUFFER ADDRESS 27600013 TM PPISW1+6,X'02' CHECK FOR 2314 27800013 BO ABW2020 YES, SET UP TO BLOCK FORWARD 28000013 SPACE 1 28200013 ABW1010 AR RF,RG SET CONSTANTS 28400013 ST RF,KBLKPTR SET BLOCK POINTER AND 28600013 ST RF,KIBLKPTR INITIAL BLOCK POINTER 28800013 SPACE 2 29000013 * SET UP TAPE UNIT COUNTERS IN GENERATED CORE 29200013 SPACE 1 29400013 SR RD,RD 29600013 IC RD,PPIBDSVA LOAD NUMBER OF TAPE UNITS 29800013 LA RD,1(RD) 30000013 LA RF,4 30200013 MR RE,RD MULTIPLY BY FOUR 30400013 L RD,PPISPGN1 LOAD ADDRESS OF GENERATED CORE 30600013 SR RD,RF SUBTRACT REQUIRED AMT OF CORE 30800013 N RD,KROUND PUT ON FULL WORD BOUNDARY 31000013 MVI 0(RD),X'00' ZERO OUT THE AREA 31200013 S RF,KTWO 31400013 EX RF,BTZERO 31600013 ST RD,PPISPGN1 STORE NEW ADDRESS OF GEN. CORE 31800013 ST RD,PPIUNTCT STORE ADDRESS OF UNIT COUNTERS 32000013 BR RO RETURN TO LOAD MODULE 32200013 SPACE 2 32400013 ABW2020 LA RG,12 ADJUST FOR EOS AND CHAIN BYTES 32600013 STH RG,K4 32800013 MVC RBW2020(22),KABWKON1 OVERLAY TO MVC RCD-THEN UPDATE 5374 33000016 MVC RBW2053(4),KABWKON2 BLOCK POINTER 33200013 MVC RBW2090(4),KABWKON2 INITIAL BLOCK POINTER 33400013 MVC RBINCR(4),KABWKON INCR. FOR OUTPUT FILE 33600013 B ABW1010 33800013 SPACE 2 34000013 * EXECUTED MOVE INSTRUCTION TO ZERO OUT UNIT COUNTER AREA 34200013 SPACE 1 34400013 BTZERO MVC 1(1,RD),0(RD) 34600013 SPACE 2 34800013 *LIST OF CONSTANTS USED BY MODULE. 35000013 KTWO DC F'2' 35200013 KROUND DC X'FFFFFFFC' 35400013 KMASK DC X'00FFFFFF' 35600013 DROP RL 35800013 DROP RE 36000013 USING DIERRBW,RL 36200013 KABWKON IC RG,PPIDEPHO+1 INCR FOR OUTPUT FILE 36400013 KABWKON1 LR RE,RB 4553 36600018 LR RF,RC 36800013 L RP,PPIBDSVA+8 MOVE RECORD 37000013 BALR RO,RP 37200013 AH RC,PPIRCDL2 UPDATE BLOCK 37400013 ST RC,KBLKPTR POINTER 37600013 ST RF,KPARLST+4 STORE RCD ADDRS IN PARM LIST 5374 37700016 KABWKON2 L RC,KIBLKPTR INITIAL BLOCK POINTER 37800013 EJECT 38000013 *** IERRBW *** 38200013 SPACE 2 38400013 *DUMMY RUNNING PROGRAM 38600013 SPACE 2 38800013 DIERRBW DSECT 39000013 USING *,RL 39200013 USING IERRCA,RN 39400013 IERDB2 B RBW2080 EOS ENTRY 39600013 B RBW2040 READ ENTRY 39800013 B RBW2060 WRITE ENTRY 40000013 B RBW2006 PRIME ENTRY TO BYPASS E25 4553 40200018 B RBBRANCH 40400013 SPACE 1 40600013 KBLKPTR DS F BLOCK POINTER 40800013 KIBLKPTR DS F INITIAL BLOCK POINTER 41000013 SPACE 1 41200013 *NORMAL ENTRY FROM MERGE - RD CONTAINS ADDRESS OF WINNER RCD 41400013 *SET UP LINK TO USER EXIT 41600013 SPACE 1 41800013 RBBRANCH ST RD,KPARLST PUT WINNER ADDR IN PARAMETER LIST 42000013 LA RB,KPARLST SET RB = ADDRS OF PARAMETER LIST 42200013 L RP,PPIX25+4 42400013 BALR RO,RP LINK TO USER AT E25 42600013 SPACE 2 42800013 B *+4(RP) RETURN FROM USER - RP INDICATES 43000013 * PROPER BRANCH TABLE ENTRY 43200013 B RBW2005 DO NOTHING ENTRY - PROCEDE TO BLOCK 43400013 * RECORD 43600013 B RBW2100 DELETE ENTRY 43800013 SPACE 2 44000013 *BLOCK WINNER RECORD 44200013 RBW2006 LR RB,RD LOAD ADDR OF RCD 4553 44300018 SPACE 1 44400013 RBW2005 L RE,KOBLKCNT SET RE = OUTPUT BLOCK COUNT 44600013 SR RA,RA 44800013 CR RE,RA IS BLOCK COUNT = 0 45000013 BC 12,RBW2050 YES-TAKE BRANCH, BLOCK IS FULL 45200013 SPACE 1 45400013 RBW2010 BCTR RE,0 NO-DECREMENT BLOCK COUNT BY 1 45600013 ST RE,KOBLKCNT 45800013 L RC,KBLKPTR 46000013 SPACE 1 46200013 SPACE 1 46400013 RBW2020 SH RC,PPIRCDL2 DECREMENT BLK PTR BY RCD LENGTH 46600013 ST RC,KBLKPTR 46800013 LR RE,RB ADDR OF RCD IN INPUT AREA 4553 47000018 LR RF,RC SET RC=BUFFER ADDRS 47200013 L RP,PPIBDSVA+8 LINK TO MOVE LIST - MOVE WINNER TO 47400013 BALR RO,RP OUTPUT BUFFER 47600013 SPACE 2 47800013 ST RC,KPARLST+4 STORE RCD ADDRS IN PARAMETER LIST 48000013 SR RG,RG 48200013 RBINCR IC RG,PPIDEPHO+3 INCR. FOR OUTPUT FILE COUNT 48400013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 48600013 L RI,0(RG,RH) LOAD COUNT FOR THIS UNIT 48800013 LA RI,1(RI) INCREMENT IT BY ONE 49000013 ST RI,0(RG,RH) RESTORE 49200013 SPACE 1 49400013 *DEBLOCK RECORD FROM SAME FILE AS WINNER RECORD 49600013 SPACE 1 49800013 RBW2027 LR RC,RD SAVE WINNER ADDRS 50000013 SRL RD,24 ACCESS INCREMENT 50200013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 50400013 L RF,0(RD,RH) LOAD COUNT FOR THIS UNIT 50600013 BCTR RF,0 DECREMENT IT BY ONE 50800013 ST RF,0(RD,RH) RESTORE 51000013 L RH,PPISBLCT SET RH=START ADDRS OF BLOCK COUNTERS 51200013 L RI,0(RD,RH) SET RI=BLK CNT FOR THIS BUFFER 51400013 BCTR RI,0 DECREMENT BLK CNT BY 1 51600013 SR RA,RA 51800013 CR RI,RA IS THIS BLK CNT = 0 52000013 BC 12,RBW2030 YES-TAKE BRANCH, BLK IS EMPTY 52200013 SPACE 1 52400013 ST RI,0(RD,RH) NO-STORE NEW BLK CNT 52600013 LR RD,RC INCREMENT WINNER BY RCD LENGTH TO 52800013 AH RD,PPIRCDL2 GET NEXT RECORD 53000013 L RL,PPINETM+4 EXIT TO MERGE 53200013 B 8(0,RL) 53400013 EJECT 53600013 *INPUT BUFFER IS EMPTY - LINK TO READ ROUTINE TO REFILL BUFFER 53800013 * RC = ADDRESS OF EMPTY BUFFER 54000013 * RD = INCREMENT 54200013 SPACE 1 54400013 RBW2030 L RH,PPIBDSVA SET RH=ADDR OF BUFFER TABLE 54600013 L RC,0(RD,RH) ACCESS ADDR OF EMPTY BUFFER VIA INCR 54800013 L RL,PPIRD+4 55000013 B 8(0,RL) 55200013 SPACE 2 55400013 *RETURN FROM READ ROUTINE 55600013 * RB = BLOCK COUNT 55800013 * RC = BUFFER ADDRESS (FOR DEBLOCKING) 56000013 * RD = INCREMENT 56200013 * RE = BUFFER ADDRESS (FOR READING) 56400013 SPACE 1 56600013 RBW2040 L RH,PPIBDSVA SET RH = ADDR OF BUFFER TABLE 56800013 ST RE,0(RD,RH) STORE BUFF ADDR IN TABLE 57000013 L RF,PPISBLCT SET RF=START ADDR OF BLOCK COUNTERS 57200013 ST RB,0(RD,RF) STORE BLK CNT IN BLK CNT TABLE 57400013 SLL RD,24 ADD INCREMENT TO NEXT RECORD 57600013 AR RD,RC 57800013 L RL,PPINETM+4 EXIT TO MERGE 58000013 B 8(0,RL) 58200013 SPACE 4 58400013 *OUTPUT BUFFER IS FULL - LINK TO WRITE ROUTINE TO EMPTY BUFFER 58600013 * RB = NO. OF BYTES TO BE WRITTEN 58800013 * RC = ADDRESS OF BUFFER TO BE WRITTEN 59000013 SPACE 1 59200013 RBW2050 ST RB,WRBSAVE STORE MOD RCD ADDR 4553 59300018 L RB,KBUFSIZ SET RB=NO.BYTES IN BUFFER 4553 59400018 RBW2053 L RC,KBLKPTR SET RC = BUFFER ADDRS 59600013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 59800013 L RL,PPIWRT+4 LINK TO WRITE RTN 60000013 B 8(0,RL) 60200013 SPACE 2 60400013 *RETURN FROM WRITE ROUTINE 60600013 * RC = ADDRESS OF EMPTY BUFFER 60800013 SPACE 1 61000013 RBW2060 LH RE,PPISRTBL RESET OUTPUT BLK CNT TO SORT BLKNG 61200013 ST RC,KIBLKPTR SAVE INITIAL POINTER 61400013 ST RC,KBLKPTR SET BLOCK POINTER 61600013 L RB,WRBSAVE RELOAD MOD RCD ADDR 4553 61700018 B RBW2010 61800013 SPACE 3 62000013 *END OF SEQUENCE - WRITE THIS BUFFER, RESET POINTERS TO REUSE THIS 62200013 *BUFFER THE NEXT TIME THROUGH 62400013 SPACE 1 62600013 SPACE 1 62800013 *CALCULATE NUMBER OF BYTES TO BE WRITTEN - 63000013 * BUFFER SIZE WHEN FULL - (REMAINING BLOCK COUNT * RECORD LENGTH) 63200013 RBW2080 L RB,KBUFSIZ 63400013 L RE,KOBLKCNT 63600013 MH RE,PPIRCDL2 63800013 SR RB,RE 64000013 SPACE 1 64200013 LH RE,PPISRTBL RESET OUTPUT BLOCK COUNT TO SORT 64400013 ST RE,KOBLKCNT BLOCKING 64600013 RBW2090 L RC,KBLKPTR SET RC = BUFFER ADDRS 64800013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 65000013 L RF,KIBLKPTR 65200013 ST RF,KBLKPTR RESET BLK PTR 65400013 LA RE,4 SET INDICATION FOR NON-FINAL EOS 65600013 L RL,PPIWRT+4 LINK TO WRITE ON EOS. 65800013 B 4(0,RL) 66000013 SPACE 4 66200013 *WINNER RECORD IS TO BE DELETED 66400013 SPACE 1 66600013 RBW2100 L RH,PPIDELCT 66800013 LA RH,1(RH) INCREMENT DELETE COUNTER BY 1 67000013 ST RH,PPIDELCT 67200013 B RBW2027 DEBLOCK ANOTHER RECORD 67400013 SPACE 4 67600013 *CONSTANTS 67800013 SPACE 1 68000013 *PARAMETER LIST FOR USER 68200013 KPARLST DC A(0) ADDRS OF WINNER RCD 68400013 DC A(0) ADDRS OF LAST RECORD BLOCKED 68600013 SPACE 1 68800013 KOBLKCNT DS 1F 69000013 KBUFSIZ DS 1F 69200013 K4 DC X'0004' CONSTANT =4 FOR OSCL., =12 FOR 2314 69400013 WRBSAVE DC F'0' CURRENT MODIFIED RCD ADDR 4553 69500018 EJECT 69600013 SMPPI 69800013 END 70000013 ./ ADD SSI=02011906,SOURCE=1,NAME=IERABX TITLE 'IERABX - OS/360 SORT/MERGE - 360-SM023 05/11/66' 00200013 *MODULE NAME:*** IERABX *** 00400013 SPACE 2 00600013 *STATUS: CHANGE LEVEL 000 00800013 SPACE 2 01000013 *MODULE FUNCTION/OPERATION: 01200013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR IERRBW, A BLOCK/DEBLOCK 01400013 * ROUTINE FOR VARIABLE LENGTH RECORDS WITH USER MODIFICATION EXIT 01600013 * E25 FOR THE MERGE PHASE OF AN OSCL/2314 SORT. IT SETS WORK AREAS 01800013 * AND CONSTANTS TO SPECIFIC VALUES IN THE RUNNING PROGRAM. IT ALSO 02000013 * ALLOCATES AREA IN GENERATED CORE FOR THE TAPE UNIT COUNTERS WHICH 02200013 * KEEP TRACK OF THE NUMBER OF RECORDS ON EACH UNIT. 02400013 SPACE 2 02600013 *USED AS A DSECT IN - N/A 02800013 * 03000013 * 03200013 *MACROS USED - 03400013 SPACE 1 03600013 * SMPPI 03800013 SPACE 2 04000013 *ENTRY POINTS: 04200013 SPACE 1 04400013 * ENTRY IERMGB ENTRY FROM: LOAD MODULE, IERRC9 04600013 * CALLING SEQUENCE- 04800013 * LOAD EP=IERABX,DCB= 05000013 * LR RP,RA 05200013 * BALR RO,RP 05400013 SPACE 2 05600013 *INPUT: PPI FIELDS REFERENCED- 05800013 SPACE 1 06000013 * PPILAB04 PPILAB07 06200013 * PPIBDSVA PPIUNTCT 06400013 * PPISPGN1 06600013 SPACE 2 06800013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 07000013 SPACE 1 07200013 * PPIUNTCT 07400013 * PPISPGN1 07600013 * CONSTANTS AND CODE IN THE RUNNING PROGRAM ARE INITIALIZED 07800013 * ALLOCATES AREA FOR TAPE UNIT COUNTERS IN GENERATED CORE 08000013 SPACE 2 08200013 *EXTERNAL ROUTINES: 08400013 SPACE 1 08600013 * NONE 08800013 SPACE 2 09000013 *EXTERNAL PARAMETERS: 09200013 SPACE 1 09400013 * NONE 09600013 SPACE 2 09800013 *EXITS: NORMAL 10000013 SPACE 1 10200013 * BR RO - RETURN TO LOAD MODULE, IERRC9 10400013 SPACE 2 10600013 *EXITS: ERROR 10800013 SPACE 1 11000013 * NONE 11200013 SPACE 2 11400013 *TABLES/WORK AREAS: 11600013 SPACE 1 11800013 * NONE 12000013 SPACE 2 12200013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 12400013 SPACE 2 12600013 *NOTES: 12800013 SPACE 1 13000013 * THIS MODULE IS USED FOR VARIABLE LENGTH RECORDS WITH USER EXIT E25 13200013 * IN THE MERGE PHASE. 13400013 SPACE 2 13600013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 13800013 SPACE 1 14000013 RA EQU 0 USE-NOT USED 14200013 RB EQU 1 USE-NOT USED 14400013 RC EQU 2 USE-NOT USED 14600013 RD EQU 3 CONTENTS IN- N/A 14800013 * USE- WORK REGISTER 15000013 * CONTENTS OUT- N/A 15200013 RE EQU 4 CONTENTS IN- N/A 15400013 * USE- WORK REGISTER 15600013 * CONTENTS OUT- N/A 15800013 RF EQU 5 CONTENTS IN- N/A 16000013 * USE- WORK REGISTER 16200013 * CONTENTS OUT- N/A 16400013 RG EQU 6 USE-NOT USED 16600013 RH EQU 7 USE-NOT USED 16800013 RI EQU 8 USE-NOT USED 17000013 RJ EQU 9 USE-NOT USED 17200013 RK EQU 10 CONTENTS IN- N/A 17400013 * USE- BASE REGISTER FOR DSECT OF 17600013 * RUNNIN PROGRAM 17800013 * CONTENTS OUT- N/A 18000013 RL EQU 11 CONTENTS IN- N/A 18200013 * USE- BASE REGISTER FOR THIS MODULE 18400013 * CONTENTS OUT- N/A 18600013 RM EQU 12 USE-NOT USED 18800013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 19000013 * USE- PPI REFERENCE,REGISTER SAVE 19200013 * AREA 19400013 * CONTENTS OUT- ADDRESS OF PPI 19600013 RO EQU 14 CONTENTS IN- RETURN ADDRESS IN 19800013 * IERRC9 20000013 * USE- NOT USED 20200013 * CONTENTS OUT- RETURN ADDRESS IN 20400013 * IERRC9 20600013 RP EQU 15 CONTENTS IN- BASE ADDRESS OF THIS 20800013 * MODULE 21000013 * USE- NOT USED 21200013 * CONTENTS OUT- N/A 21400013 SPACE 2 21600013 *START OF MODULE CODE PROPER: 21800013 SPACE 2 22000013 IERABX CSECT 22200013 *1615362000,428000,466000 4553 22300018 USING *,RL MODULE BASE REG LOADED EXTERNALLY 22400013 USING IERRBXD,RK ADDR OF RUNNING PROGRAM DUMMY MOD 22600013 USING IERRCA,RN PPI COMMON MODULE BASE REGISTER 22800013 IERMBG LR RL,RP LOAD MODULE BASE REG 23000013 L RK,PPIBLK2+4 LOAD ADDRESS OF RUNNING PROGRAM 23200013 MVC WBLKCCNT,KEIGHT SET BLOCK CHARACTER CTR TO 8 23400013 L RF,PPILAB04 LOAD ADDR OF OUTPUT BUFFER 1 23600013 TM PPISW1+6,X'02' CHECK FOR 2314 23800013 BO ABX1020 YES, SET UP TO BLOCK FORWARD 24000013 SPACE 1 24200013 AH RF,PPILAB07+2 ADD ROUNDED LENGTH OF OUTPUT BLOCK 24400013 ABX1010 ST RF,WLSTPTR OUTPUT BLOCK ADDRESS 24600013 ST RF,WLSTPTRD CURRENT OUTPUT BLK ENDING ADDR+1 24800013 SPACE 2 25000013 * SET UP TAPE UNIT COUNTERS IN GENERATED CORE 25200013 SPACE 1 25400013 SR RD,RD 25600013 IC RD,PPIBDSVA LOAD NUMBER OF TAPE UNITS 25800013 LA RD,1(RD) 26000013 LA RF,4 26200013 MR RE,RD MULTIPLY BY FOUR 26400013 L RD,PPISPGN1 LOAD ADDRESS OF GENERATED CORE 26600013 SR RD,RF SUBTRACT REQUIRED AMT OF CORE 26800013 N RD,KROUND PUT ON FULL WORD BOUNDARY 27000013 MVI 0(RD),X'00' ZERO OUT THE AREA 27200013 S RF,KTWO 27400013 EX RF,BTZERO 27600013 ST RD,PPISPGN1 STORE NEW ADDRESS OF GEN. CORE 27800013 ST RD,PPIUNTCT STORE ADDRESS OF UNIT COUNTERS 28000013 BR RO RETURN TO LOAD MODULE 28200013 SPACE 2 28400013 ABX1020 LA RF,16(0,RF) ADJUST FOR EOS,BCC, AND CHAIN BYTES 28600013 MVI KEIGHT+3,X'10' 28800013 MVI KFOUR+3,X'0C' ADJUST BCC BY CHAIN TOO 29000013 MVI WBLKCCNT+3,X'10' 29200013 MVC RBSUBRLT(2),KNOP OVERLAY TO MOVE RCD, THEN UPDATE 29400013 MVC RBSUBRLD(2),KNOP BLOCK POINTER 29600013 MVC RBLSTPTR(4),KABXKON1 INITIAL BLOCK 29800013 MVC RBEOS(4),KABXKON2 POINTER 30000013 MVC RBINCR(4),KABXKON INCR. FOR OUTPUT FILE 30200013 B ABX1010 30400013 SPACE 2 30600013 * EXECUTED MOVE INSTRUCTION TO ZERO OUT UNIT COUNTER AREA 30800013 SPACE 1 31000013 BTZERO MVC 1(1,RD),0(RD) 31200013 SPACE 2 31400013 * CONSTANTS USED BY THE PROGRAM 31600013 SPACE 1 31800013 KTWO DC F'2' 32000013 KROUND DC X'FFFFFFFC' 32200013 KNOP DC X'4700' 32400013 DROP RL 32600013 DROP RK 32800013 USING IERRBXD,RL 33000013 KABXKON IC RG,PPIDEPHO+1 INCR. FOR OUTPUT UNIT 33200013 KABXKON1 L RC,WLSTPTRD 33400013 KABXKON2 L RE,WLSTPTRD 33600013 EJECT 33800013 *MODULE NAME *** IERRBX *** USER EXIT E25 34000013 SPACE 3 34200013 IERRBXD DSECT , DUMMY MODULE OF REAL R.P. IERRBX 34400013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 34600013 USING IERRCA,RN ADDR OF PPI LOADED EXTERNALLY 34800013 SPACE 1 35000013 * ENTRY TABLE 35200013 SPACE 1 35400013 IERDB2 B RBEOS FROM MERGE ON NORMAL EOS 35600013 B RBRDRTRN FROM READ MODULE 35800013 B RBWRT FROM WRITE MODULE 36000013 B RBBPSUS1 PRIME ENTRY,BYPASS EXIT RTN 4553 36200018 B RBBRANCH 36400013 SPACE 1 36600013 WLSTPTR DC F'0' INITIALLY LOADED BY A.P. TO OUTPUT 36800013 * BLOCK ENDING ADDRESS + 1. 37000013 WLSTPTRD DC F'0' OUTPUT BLOCK ENDING ADDRESS + 1. 37200013 SPACE 1 37400013 SPACE 1 37600013 * NORMAL MERGE ENTRY. INCR BLOCK CHAR CTR. CHECK IF RCD WILL FIT IN 37800013 * OUTPUT BLOCK. IF NOT, WRITE THE BLOCK BEFORE MOVING THE RCD. 38000013 SPACE 1 38200013 RBBRANCH ST RD,WMRGRCD PARAM 1 TO USER. AD OF RCD IN INPUT 38400013 * BLOCK 38600013 SPACE 1 38800013 * CALL MACRO EXPANSION INSTRUCTIONS TO USER EXIT E25 39000013 SPACE 1 39200013 L RP,PPIX25+4 ADDR OF USER EXIT E25 39400013 LA RB,WMRGRCD 39600013 BALR RO,RP 39800013 SPACE 1 40000013 * RETURN FROM USER 40200013 SPACE 1 40400013 B *+4(RP) 40600013 B RBBPSUSR DO NOTHING 40800013 L RG,PPIDELCT DELETE COUNTER 41000013 LA RG,1(0,RG) INCR DELETE CTR BY 1 41200013 ST RG,PPIDELCT SAVE UPDATED DELETE CTR 41400013 ST RD,WINNER SAVE WINNER ADDR (DEBLK WILL DELETE) 41600013 MVC WRCDLGTH+2(2),0(RD) MOVE RCD LENGTH TO PROPER BOUNDARY 41800013 B RBDEBLCK BR TO DEBLOCK ANOTHER RCD 42000013 RBBPSUS1 LR RB,RD 4553 42100018 SPACE 1 42200013 RBBPSUSR L RG,WBLKCCNT OUTPUT BLOCK CHAR CTR INITIALLY 42400013 * PRESET TO 8 BY A.P. 42600013 MVC WRCDLGTH+2(2),0(RB) MOVE RCD LENGTH TO PROPER BNDRY 4553 42800018 A RG,WRCDLGTH ADD RCD LENGTH TO OUTPUT BLOCK CHAR 43000013 * CTR 43200013 CH RG,PPILAB07+2 GREATER THAN ROUNDED OUTPUT BLOCKING 43400013 BC 2,RBWRTBLK GRTR,BR TO WRITE THE BLOCK FIRST 43600013 RBSAVE ST RG,WBLKCCNT SAVE UPDATED BLOCK CHAR CTR 43800013 ST RD,WINNER SAVE ADDR OF RCD IN INPUT BLOCK 44000013 L RF,WLSTPTR ADDR IN OUTPUT BLOCK TO MOVE RCD 44200013 RBSUBRLT S RF,WRCDLGTH DECR ADDR BY RCD LGTH. FOR TAPE SORT 44400013 * RCDS FILL OUTPUT BLOCK STARTG FROM 44600013 * HI CORE TO LOW. 44800013 ST RF,WOUTRCD PARAM 2 TO USER.ADDR OF RCD IN 45000013 * OUTPUT BLOCK 45200013 SR RG,RG 45400013 RBINCR IC RG,PPIDEPHO+3 INCR. FOR OUTPUT FILE COUNT 45600013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 45800013 L RI,0(RG,RH) LOAD COUNT FOR THIS UNIT 46000013 LA RI,1(RI) INCREMENT BY ONE 46200013 ST RI,0(RG,RH) RESTORE 46400013 LR RE,RB ADDR OF RCD IN INPUT AREA 4553 46600018 L RI,WRCDLGTH LENGTH OF RCD FOR MOVE RTN 46800013 SPACE 1 47000013 * GENERALIZED MOVE RTN USED TO MOVE ANY SIZE DATA RCD FROM ONE DATA 47200013 * AREA TO ANOTHER. REGISTERS ARE USED AS FOLLOWS- 47400013 SPACE 1 47600013 * RE ADDR FROM WHICH THE DATA IS TO BE MOVED 47800013 * RF ADDR TO WHICH THE DATA IS TO BE MOVED 48000013 * RI DATA RCD LENGTH 48200013 SPACE 1 48400013 * IN ADDITION THE ROUTINE USES REGISTERS RG AND RH. 48600013 SPACE 1 48800013 CL RI,KON256 RCD LENGTH TO 256 49000013 BC 12,RBNMV020 LESS THAN OR EQUAL 49200013 SPACE 1 49400013 LA RH,256 SET UP TO MOVE RCD IN SECTIONS OF 49600013 LNR RG,RH 256 BYTES EACH 49800013 RBKMOVE MVC 0(256,RF),0(RE) 50000013 AR RE,RH UPDATE DATA AREA POINTERS BY 256 50200013 AR RF,RH BYTES 50400013 BXLE RI,RG,RBNMV020 TEST FOR REMAINING LENGTH--LE 256 50600013 BC 15,RBKMOVE ANOTHER FULL MOVE OF 256 BYTES NEEDD 50800013 SPACE 2 51000013 KON256 DC F'256' 51200013 KMOVE1 MVC 0(1,RF),0(RE) 51400013 RBNMV020 LR RG,RI MOVE LENGTH LE 256 BYTES 51600013 BCTR RG,0 DECR RG BY ONE 51800013 EX RG,KMOVE1 52000013 SPACE 1 52200013 * END OF GENERALIZED MOVE ROUTINE. 52400013 SPACE 1 52600013 AR RF,RI UPDATE OUTPUT BLOCK RCD PTR BY 52800013 * REMAINING RCD LENGTH 53000013 RBSUBRLD S RF,WRCDLGTH DECREMENT ADDRESS BY RECORD LENGTH 53200013 ST RF,WLSTPTR SAVE UPDATED OUTPUT BLOCK RCD PTR 53400013 B RBDEBLCK BR TO DEBLOCK ANOTHER RCD 53600013 SPACE 2 53800013 * WRITE A BLOCK. THIS RCD CAN'T FIT INTO THIS BLOCK 54000013 SPACE 1 54200013 RBWRTBLK S RG,WRCDLGTH SUBTR LENGTH OF RCD THAT CAN'T FIT 54400013 * FROM OUTPUT BLOCK CHAR COUNT 54600013 ST RB,WRBSAVE STORE MOD RCD ADDR 4553 54700018 RBLSTPTR L RC,WLSTPTR LOAD OUTPUT BLOCK RECORD POINTER 54800013 S RC,KEIGHT EQUALS ADDR OF OUTPUT BLK TO WRITE 55000013 ST RG,WBLKCCNT ALIGN TO WD BOUNDARY 55200013 MVC 0(2,RC),WBLKCCNT+2 STORE BLOK CHAR CTR IN 1ST 2 BYTES 55400013 LR RB,RG ALSO, IN RB FOR WRITE MODULE PARAM 55600013 SPACE 1 55800013 * INTERFACE TO WRITE MODULE 56000013 SPACE 1 56200013 L RL,PPIWRT+4 ADDR OF WRITE MODULE 56400013 B 8(RL) BR TO WRITE MODULE 56600013 SPACE 1 56800013 * WRITE MODULE REENTERS VIA BRANCH TABLE. RC FOR TAPE,HAS AN OUTPUT 57000013 * BLOCK ENDING ADDRESS+1. 57200013 SPACE 1 57400013 RBWRT ST RC,WLSTPTRD SAVE AS CURRENT OUTPUT BLK POINTER 57600013 ST RC,WLSTPTR STORE AS OUTPUT BLK WORK POINTER 57800013 L RG,KEIGHT REINITIALIZE BCC TO 8 OR 16 58000013 A RG,WRCDLGTH ADD LENGTH OF RCD TO BE MOVED TO 58200013 * OUTPUT BLOCK 58400013 L RB,WRBSAVE RELOAD MOD RCD ADDR 4553 58500018 B RBSAVE BR TO MOVE RCD TO OUTPUT BLOCK 58600013 SPACE 2 58800013 * FROM MERGE.NORMAL EOS.PREVIOUS RCD WAS EOS RCD AND IS IN OUTPUT BLK 59000013 * NO NEW RECORDS PASSED TO BLOCK RTN AT THIS TIME. 59200013 SPACE 1 59400013 RBEOS L RE,WLSTPTR 59600013 MVC WLSTPTR,WLSTPTRD RESET OUTPUT BLOCK POINTER 59800013 S RE,KEIGHT DECR OUTPUT BLK PTR BY 8 TO INSERT 60000013 * BLOCK CHAR CNT IN 1ST 2 BYTES 60200013 MVC 0(2,RE),WBLKCCNT+2 STORE BLK CHAR CNT IN OUTPUT BLK 60400013 L RB,WBLKCCNT LOAD BLOCK CHAR CNT FOR WRITE MOD 60600013 MVC WBLKCCNT,KEIGHT REINITIALIZE BLOCK CHAR CTR TO 8 60800013 LR RC,RE LOAD OUTPUT BLOCK PTR FOR WRITE 61000013 LA RE,4 SET INDICATION FOR NON-FINAL EOS 61200013 SPACE 1 61400013 * INTERFACE TO WRITE MODULE FOR NORMAL EOS 61600013 SPACE 1 61800013 L RL,PPIWRT+4 62000013 B 4(RL) BR TO WRITE MODULE 62200013 EJECT 62400013 * DEBLOCK SIDE OF PROGRAM 62600013 SPACE 1 62800013 RBDEBLCK SRL RD,24 SHIFT TO GET AT INCR OF WINNER RCD 63000013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 63200013 L RF,0(RD,RH) LOAD COUNT FOR THIS UNIT 63400013 BCTR RF,0 DECREMENT BY ONE 63600013 ST RF,0(RD,RH) STORE 63800013 L RG,PPISBLCT LOAD ADDR OF INPT BLK CHAR CNT TABLE 64000013 L RH,0(RD,RG) LOAD BLK CHAR CNT OF WINNER'S BLOCK 64200013 S RH,WRCDLGTH SUBTRACT RCD LENGTH OF WINNER 64400013 C RH,KZERO TEST IF BLOCK CHAR CNT IS ZERO 64600013 BC 8,RBREAD YES,BR TO READ ANOTHER BLK INTO 64800013 * INPUT BLK JUST VACATED 65000013 ST RH,0(RD,RG) NO,STORE UPDATED BLOCK CHAR CNT 65200013 L RD,WINNER RESTORE WINNER 65400013 A RD,WRCDLGTH ADDR OF NEXT RCD FROM WINNER FILE 65600013 SPACE 1 65800013 * INTERFACE TO MERGE NETWORK 66000013 SPACE 1 66200013 RBMERGE L RL,PPINETM+4 ADDR OF MERGE MODULE 66400013 B 8(RL) BR TO MERGE MODULE 66600013 SPACE 2 66800013 * FILL EMPTY INPUT BLOCK OF WINNER. RD HAS INCR IN LOW ORDER BYTE 67000013 SPACE 1 67200013 RBREAD L RG,PPIBDSVA ADDR OF INPUT BLK ADDR TABLE 67400013 L RC,0(RD,RG) ADDR OF THE WINNER'S INPUT BLOCK 67600013 SPACE 1 67800013 * INTERFACE TO READ MODULE 68000013 SPACE 1 68200013 L RL,PPIRD+4 ADDR OF READ MODULE 68400013 B 8(RL) BR TO READ MODULE 68600013 SPACE 2 68800013 * READ MODULE RETURNS VIA THIS MODULE BRANCH TABLE. THE REGS CONTAIN 69000013 * THE FOLLOWING.RB - BLOCK CNT,RC - ADDR OF 1ST RCD IN INPUT BLOCK. 69200013 * RD - INCREMENT, RE - ENDING ADDRESS OF BLOCK. 69400013 SPACE 1 69600013 RBRDRTRN L RG,PPISBLCT LOAD ADDR OF BLOCK CNT TABLE 69800013 S RB,KFOUR EQUALS TOTAL BYTES(OF RCDS)IN BLK 70000013 ST RB,0(RD,RG) STORE NEW BLOCK CHAR CNT IN TABLE 70200013 L RG,PPIBDSVA ADDR OF TABLE OF INPUT BLK STRTG 70400013 * ADDRESSES 70600013 ST RE,0(RD,RG) STORE IN INDEXED POSITION IN TABLE 70800013 SLL RD,24 POSITION INCR IN HI BYTE 71000013 AR RD,RC INSERT STRTG ADDR OF 1ST RCD OF BLK 71200013 B RBMERGE BR TO MERGE NETWORK 71400013 SPACE 2 71600013 * LIST OF CONSTANTS USED BY THE MODULE 71800013 SPACE 1 72000013 KZERO DC F'0' ZERO 72200013 KFOUR DC F'4' FOUR 72400013 KEIGHT DC F'8' CONSTANT =8 FOR OSCL., =16 FOR 2314 72600013 SPACE 2 72800013 * LIST OF WORK AREAS 73000013 SPACE 1 73200013 WMRGRCD DC F'0' ADDR OF RCD IN INPUT BLK-USER PARAM1 73400013 WOUTRCD DC F'0' ADDR OF RCD IN OUTPUT BLK-USR PARAM2 73600013 WBLKCCNT DC F'0' OUTPUT BLOCK CHAR CTR INITIALLY 73800013 * PRESET TO 8 BY A.P. 74000013 WRCDLGTH DC F'0' LENGTH OF INPUT RECORD TO BE BLOCKED 74200013 WINNER DC F'0' ADDR OF WINNER RCD IN INPUT BLOCK 74400013 WRBSAVE DC F'0' CURRENT MODIFIED RCD ADDR 4553 74500018 EJECT 74600013 SMPPI 74800013 END 75000013 ./ ADD SSI=01011615,SOURCE=1,NAME=IERABY TITLE 'IERABY - OS/360 SORT/MERGE - 360S-SM023 05/09/66' 00300013 *MODULE NAME *** IERABY *** 00600013 SPACE 2 00900013 *STATUS:CHANGE LEVEL 0 01200013 SPACE 2 01500013 *MODULE FUNCTION: OSCILLATING/2314 SORT BLOCK ASSIGNMENT 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBY. IT IS A 02100013 * SORT PHASE MODULE USED FOR FIXED LENGTH RECORDS LESS THAN 256 BYTES 02400013 * LONG. IT INITIALIZES THE RUNNING PROGRAM AND SETS UP POINTERS TO 02700013 * THE OUTPUT BUFFER. 03000013 SPACE 2 03300013 *USED AS A DSECT IN - N/A 03600013 * 03900013 * 04200013 *LIST OF MACROS USED BY THIS MODULE 04500013 SPACE 1 04800013 * SMPPI 05100013 SPACE 2 05400013 *ENTRY POINTS: 05700013 SPACE 1 06000013 * N/A 06300013 SPACE 2 06600013 *INPUT: - PPI FIELDS REFERENCED 06900013 SPACE 1 07200013 * PPISRTBL 07500013 * PPILAB07 07800013 * PPIRCDL2 08100013 * PPILAB04 08400013 * PPISW1 BIT 55 08700013 SPACE 2 09000013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED - 09300013 SPACE 1 09600013 * NO PPI FIELDS INITIALIZED OR ALTERED 09900013 * CONSTANTS AND CODE IN RUNNING PROGRAM ARE INITIALIZED 10200013 SPACE 2 10500013 *EXTERNAL ROUTINES: 10800013 SPACE 1 11100013 * N/A 11400013 *EXTERNAL PARAMETERS 11700013 SPACE 1 12000013 * PPIBLK-ADDRESS OF RUNNING PROGRAM USED TO ADDRESS DSECT 12300013 SPACE 2 12600013 *EXITS-NORMAL: 12900013 SPACE 1 13200013 * BR RO RETURN TO LOAD MODULE 13500013 SPACE 2 13800013 *EXITS-ERROR: 14100013 SPACE 1 14400013 * N/A 14700013 SPACE 2 15000013 *TABLES/WORK AREAS: 15300013 SPACE 1 15600013 * N/A 15900013 SPACE 2 16200013 *ATTRIBUTES: 16500013 SPACE 1 16800013 * THIS IS A CLASS A MODULE. 17100013 SPACE 2 17400013 *NOTES: 17700013 SPACE 1 18000013 * THIS MODULE IS USED IN THE OSCILLATING OR 2314 SORT PHASE FOR 18300013 * FIXED LENGTH RECORDS LESS THEN OR EQUAL TO 256 BYTES AND NO E15. 18600013 EJECT 18900013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 19200013 SPACE 1 19500013 RA EQU 0 CONTENTS IN-N/A 19800013 * USE-N/A 20100013 * CONTENTS OUT-N/A 20400013 RB EQU 1 CONTENTS IN-N/A 20700013 * USE-N/A 21000013 * CONTENTS OUT-N/A 21300013 RC EQU 2 CONTENTS IN-N/A 21600013 * USE-N/A 21900013 * CONTENTS OUT-N/A 22200013 RD EQU 3 CONTENTS IN-N/A 22500013 * USE-WORK REG 22800013 * CONTENTS OUT-N/A 23100013 RE EQU 4 CONTENTS IN-N/A 23400013 * USE-N/A 23700013 * CONTENTS OUT-N/A 24000013 RF EQU 5 CONTENTS IN-N/A 24300013 * USE-WORK REG 24600013 * CONTENTS OUT-N/A 24900013 RG EQU 6 CONTENTS IN-N/A 25200013 * USE-WORK REG 25500013 * CONTENTS OUT-N/A 25800013 RH EQU 7 CONTENTS IN-N/A 26100013 * USE-N/A 26400013 * CONTENTS OUT-N/A 26700013 RI EQU 8 CONTENTS IN-N/A 27000013 * USE-DSECT BASE REG 27300013 * CONTENTS OUT-N/A 27600013 RJ EQU 9 CONTENTS IN-N/A 27900013 * USE-N/A 28200013 * CONTENTS OUT-N/A 28500013 RK EQU 10 CONTENTS IN-N/A 28800013 * USE-N/A 29100013 * CONTENTS OUT-N/A 29400013 RL EQU 11 CONTENTS IN-N/A 29700013 * USE-MODULE BASE REG 30000013 * CONTENTS OUT-N/A 30300013 RM EQU 12 CONTENTS IN-N/A 30600013 * USE-N/A 30900013 * CONTENTS OUT-N/A 31200013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 31500013 * USE- PPI REFERENCE,REGISTER SAVE 31800013 * AREA 32100013 * CONTENTS OUT- ADDRESS OF PPI 32400013 RO EQU 14 CONTENTS IN-LOAD MODULE ADDRS 32700013 * USE-RETURN REG 33000013 * CONTENTS OUT-LOAD MODULE ADDRS 33300013 RP EQU 15 CONTENTS IN-MODULE ADDRS 33600013 * USE-SET MODULE BASE REG 33900013 * CONTENTS OUT-N/A 34200013 SPACE 2 34500013 *START OF MODULE CODE PROPER: 34800013 SPACE 2 35100013 IERABY CSECT 35400013 USING *,RL 35700013 USING DIERRBY,RI 36000013 USING IERRCA,RN 36300013 IERMBA LR RL,RP 36600013 L RI,PPIBLK+4 MAKE RUNNING PROGRAM ADDRESSABLE 36900013 SPACE 3 37200013 LH RG,PPISRTBL 37500013 STH RG,KBLKCNT SET BLK CNT = SORT BLOCKING 37800013 L RD,PPILAB07 SET RD = BUFFER SIZE 38100013 N RD,KMASK 38400013 ST RD,KBUFSIZ STORE BUFSIZ IN RUNNING PROGRAM 38700013 LH RG,PPIRCDL2 39000013 BCTR RG,0 DECREMENT RCD LENGTH BY 1 39300013 STC RG,RBY1030+1 STORE RCD LENGTH - 1 IN MOVE INSTR 39600013 L RF,PPILAB04 SET RF=ADDRS OF OUTPUT BUFFER 39900013 SPACE 1 40200013 TM PPISW1+6,X'02' TEST FOR 2314 40500013 BC 8,ABY1010 NO- OSCILLATING TECH. 40800013 SPACE 1 41100013 LA RD,12 2314 -ADJUST FOR EOS AND CHAIN 41400013 STC RG,KABYMOD2+1 SET LENGTH FACTOR IN MVC INSTR. 41700013 *OVERLAY INSTRUCTIONS IN RUNNING PROGRAM SO THAT RECORD IS MOVED TO THE 42000013 * OUTPUT BUFFER BEFORE BLOCK POINTER IS INCREMENTED AND SO THAT 42300013 * INITIAL POINTER RATHER THAN BLOCK POINTER IS PASSED TO WRITE 42600013 * ROUTINE AS THE BUFFER ADDRESS. 42900013 SPACE 1 43200013 MVC RBYINCR(4),KABYMOD INCR FROM PPIDEPHO 43500013 STH RD,K4 K4 = 12 FOR 2314 43800013 MVC RBY1055(4),KABYMOD1 INITIAL POINTER 44100013 MVC RBY1105(4),KABYMOD1 44400013 MVC RBY1020(14),KABYMOD2 MVC THEN UPDATE BLK PTR 44700013 SPACE 1 45000013 ABY1010 AR RF,RD CALCULATE BLK PTR 45300013 ST RF,KBLKPTR 45600013 ST RF,KIBLKPTR SET INITIAL PTR 45900013 BR RO RETURN TO LOAD MODULE 46200013 SPACE 2 46500013 DS 0F 46800013 *LIST OF CONSTANTS USED BY MODULE: 47100013 KMASK DC X'00FFFFFF' 47400013 DROP RL 47700013 DROP RI 48000013 USING DIERRBY,RL 48300013 KABYMOD IC RG,PPIDEPHO+1 INCR. FOR OUTPUT FILE 48600013 KABYMOD1 L RC,KIBLKPTR LOAD INITIAL POINTER 48900013 KABYMOD2 MVC 0(1,RC),0(RD) MOVE RCD FROM RSA TO OUTPUT AREA 49200013 AH RC,PPIRCDL2 INCREMENT BLK PTR BY RCD LENGTH 49500013 ST RC,KBLKPTR 49800013 EJECT 50100013 *** IERRBY *** 50400013 *DUMMY RUNNING PROGRAM 50700013 SPACE 2 51000013 DIERRBY DSECT 51300013 *SORT NETWORK PASSES ADDRS OF RCD TO BE BLOCKED IN RD 51600013 IERDB1 B RBY1110 LAST RECORD EOF ENTRY 51900013 B RBY1080 EOS ENTRY 52200013 B RBY1060 ENTRY FROM WRITE - NORMAL 52500013 RBY1010 SR RE,RE ENTRY FROM SORT NETWORK - NORMAL 52800013 * RD CONTAINS ADDRS OF WINNER RCD 53100013 B RBBRANCH 53400013 SPACE 1 53700013 KBLKPTR DS F BLOCK POINTER 54000013 KIBLKPTR DS F INITIAL BLOCK POINTER 54300013 SPACE 1 54600013 RBBRANCH CH RE,KBLKCNT IS BLOCK COUNT = 0 54900013 BC 8,RBY1050 YES, BUFFER IS FULL - TAKE BRANCH 55200013 SPACE 1 55500013 L RC,KBLKPTR NO, DECREMENT BLK PTR BY RCD LENGTH 55800013 SPACE 1 56100013 SPACE 1 56400013 RBY1020 SH RC,PPIRCDL2 56700013 ST RC,KBLKPTR 57000013 RBY1030 MVC 0(1,RC),0(RD) MOVE RCD FROM RSA TO OUTPUT BUFFER 57300013 LH RG,KBLKCNT NO - DECREMENT BLOCK COUNT BY 1 57600013 BCTR RG,0 57900013 STH RG,KBLKCNT 58200013 SPACE 1 58500013 SR RG,RG 58800013 RBYINCR IC RG,PPIDEPHO+3 INCREMENT FOR OUTPUT UNIT 59100013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 59400013 L RI,0(RG,RH) LOAD COUNT FOR THIS UNIT 59700013 LA RI,1(RI) INCREMENT IT BY ONE 60000013 ST RI,0(RG,RH) RESTORE 60300013 SPACE 1 60600013 *THIS MODULE EXIT IS OVERLAID WHEN AN EOS OR EOF IS INDICATED SO THAT 60900013 *IT BRANCHES TO EITHER THE EOS OR EOF PPORTION OF THIS MODULE, I. E. 61200013 *RBY1090 OR RBY1120 61500013 SPACE 1 61800013 RBY1040 L RL,PPIDEB+4 LINK TO DEBLOCK. RD CONTAINS ADDRS 62100013 B 8(RL) OF WINNER RCD 62400013 SPACE 2 62700013 *BUFFER IS FULL. PASS BUFFER ADDRS TO WRITE ROUTINE. 63000013 SPACE 1 63300013 RBY1050 L RB,KBUFSIZ SET RB=NO. BYTES IN BUFFER 63600013 RBY1055 L RC,KBLKPTR LOAD PARAMREG WITH BUFFER ADDRS 63900013 SH RC,K4 DECREMENT BY 4 FOR EOS INDICATION 64200013 ST RD,WSAVRCD SAVE ADDRS OF LAST WINNER RCD 64500013 L RL,PPIWRT+4 LINK TO WRITE 64800013 B 8(RL) 65100013 SPACE 2 65400013 *RETURN FROM WRITE. RC CONTAINS ADDRS OF EMPTY BUFFER 65700013 SPACE 1 66000013 RBY1060 MVC KBLKCNT(2),PPISRTBL RESET BLK CNT TO SORT BLOCKING 66300013 ST RC,KIBLKPTR SAVE INITIAL POINTER 66600013 L RD,WSAVRCD RESTORE ADDRS OF LAST WINNER 66900013 B RBY1020 BLOCK NEXT RECORD 67200013 SPACE 2 67500013 *END OF SEQUENCE. RECORD STILL TO BE PUT IN THIS SEQUENCE 67800013 SPACE 1 68100013 RBY1080 MVC RBY1040(4),KRBYMOD1 MODIFY MODULE EXIT 68400013 B RBY1010 BLOCK LAST RCD OF THIS SEQUENCE 68700013 SPACE 2 69000013 RBY1090 LA RE,4 SET INDICATION FOR NON-FINAL EOS 69300013 RBY1100 MVC RBY1040(4),KRBYMOD2 RESET MODULE EXIT TO LINK TO DEBLCK 69600013 L RB,KBUFSIZ CALCULATE NO. BYTES TO BE WRITTEN 69900013 LH RG,KBLKCNT 70200013 MH RG,PPIRCDL2 BUFSIZ-(BLKCNT * RCDLENGTH) 70500013 SR RB,RG 70800013 SPACE 1 71100013 RBY1105 L RC,KBLKPTR 71400013 SH RC,K4 SET RC = BUFFER ADDRS 71700013 L RF,KIBLKPTR 72000013 ST RF,KBLKPTR 72300013 MVC KBLKCNT(2),PPISRTBL RESET BLK CNT TO SORT BLOCKING 72600013 L RL,PPIWRT+4 LINK TO WRITE ON EOS 72900013 B 4(RL) 73200013 SPACE 2 73500013 *LAST RECORD IS TO BE BLOCKED 73800013 SPACE 1 74100013 RBY1110 MVC RBY1040(4),KRBYMOD3 OVERLAY MODULE EXIT TO BRANCH TO 74400013 * RBY1120 74700013 B RBY1010 BLOCK LAST RCD 75000013 SPACE 2 75300013 *LAST RECORD HAS BEEN BLOCKED 75600013 SPACE 1 75900013 RBY1120 SR RE,RE SET INDICATION FOR FINAL EOS 76200013 B RBY1100 76500013 SPACE 2 76800013 DS 0F 77100013 *LIST OF CONSTANTS USED BY THE MODULE: 77400013 SPACE 1 77700013 KBUFSIZ DS 1F BUFFER SIZE 78000013 KBLKCNT DS 1H BLOCK COUNT 78300013 K4 DC X'0004' CONSTANT =4 FOR OSCL., =12 FOR 2314 78600013 KRBYMOD1 B RBY1090 RETURN TO EOS ROUTINE 78900013 KRBYMOD2 L RL,PPIDEB+4 LINK TO DEBLOCK 79200013 KRBYMOD3 B RBY1120 RETURN TO LAST RCD RTN 79500013 SPACE 2 79800013 *LIST OF WORK AREAS USED BY THE MODULE: 80100013 SPACE 1 80400013 WSAVRCD DS 1F SAVES WINNER ADDRS OF EXIT TO WRITE 80700013 SPACE 2 81000013 EJECT 81300013 SMPPI 81600013 END 81900013 ./ ADD SSI=01011615,SOURCE=1,NAME=IERABZ TITLE 'IERABZ - OS/360 SORT/MERGE - 360-SM023 05/11/66' 00300013 *MODULE NAME *** IERABZ *** 00600013 SPACE 2 00900013 *STATUS: CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION: OSCILLATING/2314 SORT BLOCK ASSIGNMENT 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRBZ. IT IS A 02100013 * SORT PHASE MODULE USED FOR FIXED LENGTH RECORDS GREATER THAN 256 02400013 * BYTES LONG. IT INITIALIZES THE RUNNING PROGRAM AND SETS UP 02700013 * POINTERS TO THE OUTPUT BUFFER. 03000013 SPACE 2 03300013 *USED AS A DSECT IN - N/A 03600013 * 03900013 * 04200013 *MACROS USED - 04500013 SPACE 1 04800013 * SMPPI 05100013 SPACE 2 05400013 *ENTRY POINTS: 05700013 SPACE 1 06000013 * ENTRY IERABZ ENTRY FROM: LOAD MODULE, IERRC9 06300013 * CALLING SEQUENCE- L RP,ASSG 06600013 * BALR RO,RP 06900013 SPACE 2 07200013 *INPUT: PPI FIELDS REFERENCED- 07500013 SPACE 1 07800013 * PPISRTBL 08100013 * PPILAB07 08400013 * PPILAB04 08700013 * PPISW1 BIT 55 09000013 SPACE 2 09300013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- N/A 09600013 SPACE 1 09900013 * CONSTANTS AND CODE IN RUNNING PROGRAM ARE INITIALIZED 10200013 SPACE 2 10500013 *EXTERNAL ROUTINES: 10800013 SPACE 1 11100013 * N/A 11400013 SPACE 2 11700013 *EXTERNAL PARAMETERS: 12000013 SPACE 1 12300013 * PPIBLK - ADDRESS OF RUNNING PROGRAM USED TO ADDRESS DSECT 12600013 SPACE 2 12900013 *EXITS: NORMAL 13200013 SPACE 1 13500013 * BR RO RETURN TO LOAD MODULE-IERRC9 13800013 SPACE 2 14100013 *EXITS: ERROR 14400013 SPACE 1 14700013 * N/A 15000013 * 15300013 * 15600013 * 15900013 SPACE 2 16200013 *TABLES/WORK AREAS: 16500013 SPACE 1 16800013 * N/A 17100013 SPACE 2 17400013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 17700013 SPACE 2 18000013 *NOTES: 18300013 SPACE 1 18600013 * THIS MODULE IS USED FOR FIXED LENGTH RECORDS GREATER THAN 256 BYTES 18900013 * IN THE SORT PHASE OF AN OSCILLATING OR 2314 SORT. 19200013 EJECT 19500013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 19800013 SPACE 1 20100013 RA EQU 0 CONTENTS IN-N/A 20400013 * USE-N/A 20700013 * CONTENTS OUT-N/A 21000013 RB EQU 1 CONTENTS IN/N/A 21300013 * USE-N/A 21600013 * CONTENTS OUT-N/A 21900013 RC EQU 2 CONTENTS IN-N/A 22200013 * USE-N/A 22500013 * CONTENTS OUT-N/A 22800013 RD EQU 3 CONTENTS IN-N/A 23100013 * USE-WORK REGISTER 23400013 * CONTENTS OUT-N/A 23700013 RE EQU 4 CONTENTS IN-N/A 24000013 * USE-N/A 24300013 * CONTENTS OUT-N/A 24600013 RF EQU 5 CONTENTS IN-N/A 24900013 * USE-WORK REGISTER 25200013 * CONTENTS OUT-N/A 25500013 RG EQU 6 CONTENTS IN-N/A 25800013 * USE-N/A 26100013 * CONTENTS OUT-N/A 26400013 RH EQU 7 CONTENTS IN-N/A 26700013 * USE-N/A 27000013 * CONTENTS OUT-N/A 27300013 RI EQU 8 CONTENTS IN-N/A 27600013 * USE-DSECT BASE REGISTER 27900013 * CONTENTS OUT-N/A 28200013 RJ EQU 9 CONTENTS IN-N/A 28500013 * USE-N/A 28800013 * CONTENTS OUT-N/A 29100013 RK EQU 10 CONTENTS IN-N/A 29400013 * USE-N/A 29700013 * CONTENTS OUT-N/A 30000013 RL EQU 11 CONTENTS IN-N/A 30300013 * USE-MODULE BASE REGISTER 30600013 * CONTENTS OUT-N/A 30900013 RM EQU 12 CONTENTS IN-N/A 31200013 * USE-N/A 31500013 * CONTENTS OUT-N/A 31800013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 32100013 * USE- PPI REFERENCE,REGISTER SAVE 32400013 * AREA 32700013 * CONTENTS OUT- ADDRESS OF PPI 33000013 RO EQU 14 CONTENTS IN-LAOD MODULE ADDRESS 33300013 * USE-N/A 33600013 * CONTENTS OUT-LOAD MODULE ADDRESS 33900013 RP EQU 15 CONTENTS IN-MODULE ADDRESS 34200013 * USE-SET MODULE BASE REGISTER 34500013 * CONTENTS OUT-N/A 34800013 SPACE 2 35100013 *START OF MODULE CODE PROPER: 35400013 SPACE 2 35700013 IERABZ CSECT 36000013 USING *,RL 36300013 USING DIERRBZ,RI 36600013 USING IERRCA,RN 36900013 IERMBA LR RL,RP 37200013 L RI,PPIBLK+4 MAKE RUNNING PROGRAM ADDRESSABLE 37500013 SPACE 3 37800013 LH RD,PPISRTBL 38100013 STH RD,KBLKCNT 38400013 L RD,PPILAB07 SET RD = OUTPUT BUFFER SIZE 38700013 N RD,KMASK 39000013 ST RD,KBUFSIZ STORE BUFF SIZE IN RUN PROG. 39300013 L RF,PPILAB04 39600013 TM PPISW1+6,X'02' TEST FOR 2314 39900013 BC 8,ABZ1010 NO- OSCILLATING TECH. 40200013 SPACE 1 40500013 LA RD,12 2314 -ADJUST FOR EOS AND CHAIN 40800013 MVC RBZINCR(4),KABZMOD INCR FROM PPIDEPHO 41100013 STH RD,K4 K4 =12 FOR 2314 41400013 MVC RBZ1045(4),KABZMOD1 INITIAL POINTER 41700013 MVC RBZ1078(4),KABZMOD1 42000013 MVC RBZ1020(18),KABZMOD2 MVC THEN UPDATE BLK PTR 42300013 *OVERLAY INSTRUCTIONS IN RUNNING PROGRAM SO THAT WINNER WILL BE MOVED 42600013 * TO OUTPUT BUFFER BEFORE BLOCK POINTER IS INCREMENTED AND INITIAL 42900013 * POINTER WILL BE PASSED TO WRITE ROUTINE AS BUFFER ADDRESS. 43200013 SPACE 1 43500013 SPACE 1 43800013 ABZ1010 AR RF,RD SET BLK PTR AND INITIAL BLK PTR 44100013 ST RF,KBLKPTR 44400013 ST RF,KIBLKPTR 44700013 BR RO RETURN TO LOAD MODULE 45000013 SPACE 2 45300013 DS 0F 45600013 *LIST OF CONSTANTS USED BY THE MODULE: 45900013 SPACE 1 46200013 KMASK DC X'00FFFFFF' 46500013 DROP RL 46800013 DROP RI 47100013 USING DIERRBZ,RL 47400013 KABZMOD IC RG,PPIDEPHO+1 INCR FOR OUTPUT FILE 47700013 KABZMOD1 L RC,KIBLKPTR INITIAL BUF. PTR. 48000013 KABZMOD2 LR RE,RD 48300013 LR RF,RC MOVE RCD. FROM RSA TO 48600013 L RP,PPIBDSVA+4 48900013 BALR RO,RP OUTPUT AREA 49200013 AH RC,PPIRCDL2 UPDATE BLK. PTR. 49500013 ST RC,KBLKPTR 49800013 EJECT 50100013 *** IERRBZ *** 50400013 SPACE 1 50700013 *DUMMY RUNNING PROGRAM 51000013 SPACE 2 51300013 DIERRBZ DSECT 51600013 USING *,RL 51900013 USING IERRCA,RN 52200013 *SORT NETWORK PASSES ADDRS OF RCD TO BE BLOCKED IN RD 52500013 IERDB1 B RBZ1080 LAST RECORD EOF ENTRY 52800013 B RBZ1060 EOS ENTRY 53100013 B RBZ1050 ENTRY FROM WRITE - NORMAL 53400013 RBZ1010 SR RE,RE ENTRY FROM SORT NETWORK - NORMAL 53700013 B RBBRANCH 54000013 SPACE 1 54300013 KBLKPTR DS F BLOCK POINTER 54600013 KIBLKPTR DS F INITIAL BLOCK POINTER 54900013 SPACE 1 55200013 RBBRANCH CH RE,KBLKCNT IS BLOCK COUNT = 0 55500013 BC 8,RBZ1040 YES, BUFFER IS FULL - TAKE BRANCH 55800013 SPACE 1 56100013 L RC,KBLKPTR NO - DECREMENT BLK PTR BY RCD LENGTH 56400013 SPACE 1 56700013 SPACE 1 57000013 RBZ1020 SH RC,PPIRCDL2 57300013 ST RC,KBLKPTR 57600013 SPACE 2 57900013 *SET UP LINKAGE TO MOVE LIST 58200013 SPACE 1 58500013 LR RE,RD SET RE'ADDRS OF RCD TO BE MOVED 58800013 LR RF,RC SET RF = BUFFER AREA ADDRS 59100013 L RP,PPIBDSVA+4 LINK TO MOVE RTN, MOVE RCD FROM RSA 59400013 BALR RO,RP TO OUTPUT BUFFER 59700013 SPACE 2 60000013 LH RG,KBLKCNT NO - DECREMENT BLOCK COUNT BY 1 60300013 BCTR RG,0 60600013 STH RG,KBLKCNT 60900013 SPACE 1 61200013 SR RG,RG 61500013 RBZINCR IC RG,PPIDEPHO+3 INCR. FOR OUTPUT FILE 61800013 L RH,PPIUNTCT LOAD ADDRESS OF UNIT COUNTERS 62100013 L RI,0(RG,RH) LOAD COUNT FOR THIS UNIT 62400013 LA RI,1(RI) INCREMENT IT BY ONE 62700013 ST RI,0(RG,RH) RESTORE 63000013 SPACE 1 63300013 *THIS MODULE EXIT IS OVERLAID WHEN AN EOS OR EOF IS INDICATED SO THAT 63600013 *IT BRANCHES TO EITHER THE EOS OR EOF PORTION OF THIS MODULE, I. E. 63900013 *RBZ1070 OR RBZ1090 64200013 SPACE 1 64500013 RBZ1030 L RL,PPIDEB+4 LINK TO DEBLOCK,RD CONTAINS ADDR. 64800013 B 8(RL) OF FREE AREA IN RSA 65100013 SPACE 2 65400013 *BUFFER IS FULL, PASS BUFF ADDRS TO WRITE ROUTINE TO BE WRITTEN 65700013 SPACE 1 66000013 RBZ1040 L RB,KBUFSIZ SET RB=NO. BYTES TO BE WRITTEN 66300013 RBZ1045 L RC,KBLKPTR SET RC = BUFFER ADDRS 66600013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 66900013 ST RD,WSAVRCD SAVE ADDRS OF LAST WINNER RCD 67200013 L RL,PPIWRT+4 LINK TO WRITE 67500013 B 8(RL) 67800013 SPACE 2 68100013 *WRITE RETURNS ADDRS OF EMPTY BUFFER TO BLOCK IN RC 68400013 SPACE 1 68700013 RBZ1050 MVC KBLKCNT(2),PPISRTBL RESET BLK CTR TO SORT BLOCKING 69000013 ST RC,KIBLKPTR SAVE INITIAL BLK PTR 69300013 L RD,WSAVRCD RESTORE ADDRS OF LAST WINNER 69600013 B RBZ1020 69900013 SPACE 2 70200013 *END OF SEQUENCE, RECORD STILL TO BE PUT IN THIS SEQUENCE 70500013 SPACE 1 70800013 RBZ1060 MVC RBZ1030(4),KRBZMOD1 MODIFY MODULE EXIT 71100013 B RBZ1010 PROCESS LAST RCD OF THIS SEQUENCE 71400013 SPACE 2 71700013 RBZ1070 LA RE,4 SET INDICATION FOR NON-FINAL EOS 72000013 RBZ1075 MVC RBZ1030(4),KRBZMOD2 RESET MODULE EXIT TO LINK TO DEBLCK 72300013 L RB,KBUFSIZ CALCULATE NO. OF BYTES TO BE 72600013 LH RG,KBLKCNT WRITTEN 72900013 MH RG,PPIRCDL2 73200013 SR RB,RG 73500013 *RB = BUFFER SIZE WHEN FULL - (REMAINING BLK CNT * RCD LENGTH) 73800013 SPACE 1 74100013 RBZ1078 L RC,KBLKPTR SET RC = BUFFER ADDRS 74400013 SH RC,K4 DECR. BY 4 FOR EOS INDICATION 74700013 L RF,KIBLKPTR RESET BLOCK PTR 75000013 ST RF,KBLKPTR 75300013 MVC KBLKCNT(2),PPISRTBL RESET BLK CNT TO SORT BLOCKING 75600013 L RL,PPIWRT+4 LINK TO WRITE ON EOS 75900013 B 4(RL) 76200013 SPACE 2 76500013 *LAST RECORD IS TO BE BLOCKED, EOF 76800013 SPACE 1 77100013 RBZ1080 MVC RBZ1030(4),KRBZMOD3 OVERLAY MODULE EXIT TO RETURN TO 77400013 * EOF, RBZ1090 77700013 B RBZ1010 PROCESS LAST RCD 78000013 SPACE 2 78300013 *LAST RECORD HAS BEEN BLOCKED, WRITE FINAL SEQUENCE 78600013 SPACE 1 78900013 RBZ1090 SR RE,RE SET INDICATOR FOR FINAL EOS 79200013 B RBZ1075 79500013 SPACE 4 79800013 *ADCONS USED BY MODULE 80100013 SPACE 1 80400013 SPACE 2 80700013 *CONSTANTS 81000013 SPACE 1 81300013 KBUFSIZ DS 1F BUFFER SIZE 81600013 KBLKCNT DS 1H BLOCK COUNT 81900013 K4 DC X'0004' CONSTANT =4 FOR OSCL., =12 FOR 2314 82200013 SPACE 2 82500013 *INSTRUCTION CONSTANTS 82800013 SPACE 1 83100013 KRBZMOD1 B RBZ1070 RETURN TO EOS ROUTINE 83400013 KRBZMOD2 L RL,PPIDEB+4 RETURN TO EOS ROUTINE 83700013 KRBZMOD3 B RBZ1090 84000013 SPACE 2 84300013 *WORK AREAS 84600013 SPACE 1 84900013 WSAVRCD DS 1F SAVES WINNER ADDRS ON EXIT TO WRITE 85200013 SPACE 2 85500013 EJECT 85800013 SMPPI 86100013 END 86400013 ./ ADD SSI=02011720,SOURCE=1,NAME=IERADB TITLE ' IERADB - OS/360 SORT/MERGE - 360S-SM023 05/06/66' 00300013 SPACE 2 00600013 *MODULE NAME *** IERADB *** 00900013 SPACE 2 01200013 *STATUS:CHANGE LEVEL 000 01500013 SPACE 2 01800013 *MODULE FUNCTION/OPERATION: PHASE 1 ASSIGNMNT MODULE. F.L. SORT W/O E15 02100013 * THE FUNCTION OF THIS MODULE IS TO BUILD A TABLE OF RSA ADDRESSES 02400013 * WITH THEIR RESPECTIVE AREA BYTE COUNTS IN IERRDB. THE TABLE IS 02700013 * NEEDED BECAUSE RECORD STORAGE AREA MAY NOT BE CONTIGUOUS. THIS 03000013 * MODULE ALSO BUILDS THE INPUT BUFFERS USING THE BUILD MACRO. IT 03300013 * ALSO OBTAINS THE ADDRESS OF THE INPUT DCB AND PUTS IT IN THE 03600013 * RUNNING PROGRAM,IERRDB. 03900013 * IERADB INSERTS THE RECORD LENGTH OF THE FIXED LENGTH RECORD WHICH 04200013 * MUST BE LESS THAN OR EQUAL TO 256 BYTES IN IERRDB MOVE INSTRUCTION. 04500013 SPACE 2 04800013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 05100013 SPACE 1 05400013 * NONE 05700013 SPACE 2 06000013 *LIST OF MACROS USED BY MODULE: 06300013 SPACE 1 06600013 * SMPPI 06900013 * BUILD 07200013 SPACE 2 07500013 *ENTRY POINTS: 07800013 SPACE 1 08100013 * FROM IERRC9 ENTRY FROM:IERRC9 08400013 * CALLING SEQUENCE- 08700013 * LOAD EP=IERADB,DCB=SORTLIB 09000013 * LR RP,RA 09300013 * BALR RO,RP 09600013 SPACE 2 09900013 *INPUT: - PPI FIELDS REFERENCED 10200013 SPACE 1 10500013 * PPIDEB PPISTDCB PPILAB08 10800013 * PPIRCDL1 PPILAB03 11100013 * PPILEXFF PPILAB06 11400013 SPACE 1 11700013 * INFO IS NEEDED TO BUILD THE RSA TABLE IN IERRDB AND TO BUILD THE 12000013 * INPUT BUFFERS. 12300013 SPACE 2 12600013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 12900013 SPACE 1 13200013 * NONE 13500013 SPACE 2 13800013 *EXTERNAL ROUTINES: 14100013 SPACE 1 14400013 * NONE 14700013 SPACE 2 15000013 *EXTERNAL PARAMETERS: 15300013 SPACE 1 15600013 * SEE REGISTERS 15900013 SPACE 2 16200013 *EXITS-NORMAL: 16500013 SPACE 1 16800013 * TO IERRC9 EXIT TO:IERRC9 17100013 * CALLING SEQUENCE- 17400013 * BR RO RETURN 17700013 SPACE 2 18000013 *EXITS-ERROR: 18300013 SPACE 1 18600013 * NONE 18900013 SPACE 2 19200013 *TABLES/WORK AREAS: 19500013 SPACE 1 19800013 * WAREA-WORK AREA 20100013 SPACE 2 20400013 *ATTRIBUTES: THIS IS A CLASS A MODULE 20700013 SPACE 2 21000013 *NOTES: THIS MODULE WILL EXECUTE FOR ANY FIXED LENGTH SORT WITHOUT EXIT 21300013 * E15 AND E16. THE FIXED LENGTH INPUT RCD MUST BE EQUL/L.T. 256 BYTES 21600013 EJECT 21900013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 22200013 SPACE 1 22500013 RA EQU 0 CONTENTS IN- N/A 22800013 * USE- HAS NO. OF BUFFERS AND BUFFER 23100013 * SIZE FOR BUILD MACRO 23400013 * CONTENTS OUT- N/A 23700013 RB EQU 1 CONTENTS IN- N/A 24000013 * USE- ADDR OF INPUT BUFFER POOL FOR 24300013 * BUILD MACRO 24600013 * CONTENTS OUT- N/A 24900013 RC EQU 2 CONTENTS IN- N/A 25200013 * USE- ADDR OF RSA TABLE IN IERRDB 25500013 * CONTENTS OUT- N/A 25800013 RD EQU 3 CONTENTS IN- N/A 26100013 * USE- COUNTER FOR NO. OF RSA AREAS 26400013 * CONTENTS OUT- N/A 26700013 RE EQU 4 CONTENTS IN- N/A 27000013 * USE- WORK REGISTER 27300013 * CONTENTS OUT- N/A 27600013 RF EQU 5 CONTENTS IN- N/A 27900013 * USE- PTR TO THE TABLE OF RSA ADDRS 28200013 * IN PPI 28500013 * CONTENTS OUT- N/A 28800013 RG EQU 6 CONTENTS IN- N/A 29100013 * USE- INDEX REGISTER 29400013 * - WORK REGISTER 29700013 * CONTENTS OUT- N/A 30000013 RH EQU 7 CONTENTS IN- N/A 30300013 * USE- WORK REGISTER 30600013 * CONTENTS OUT- N/A 30900013 RI EQU 8 CONTENTS IN- N/A 31200013 * USE- WORK REGISTER 31500013 * CONTENTS OUT- N/A 31800013 RJ EQU 9 CONTENTS IN- N/A 32100013 * USE- NOT USED 32400013 * CONTENTS OUT- N/A 32700013 RK EQU 10 CONTENTS IN- N/A 33000013 * USE- IERRDB DSECT BASE REGISTER 33300013 * CONTENTS OUT- N/A 33600013 RL EQU 11 CONTENTS IN- N/A 33900013 * USE-MODULE BASE REGISTER 34200013 * CONTENTS OUT- N/A 34500013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 34800013 * USE- NOT USED 35100013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 35400013 RN EQU 13 CONTENTS IN-ADDR OF PPI 35700013 * USE-PPI REFERENCES,REG SAVE AREA 36000013 * CONTENTS OUT-ADDR OF PPI 36300013 RO EQU 14 CONTENTS IN- IERRC9 RETURN ADDR 36600013 * USE- NOT USED 36900013 * CONTENTS OUT- IERRC9 RETURN ADDR 37200013 RP EQU 15 CONTENTS IN- IERADB ENTRY PT 37500013 * USE- ESTABLISH IERADB BASE REGISTER 37800013 * CONTENTS OUT- N/A 38100013 SPACE 2 38400013 *START OF MODULE CODE PROPER: 38700013 SPACE 2 39000013 IERADB CSECT 39300013 USING *,RL THIS MODULE BASE REG 39600013 USING IERRDB,RK 39900013 USING IERRCA,RN 40200013 IERMDA LR RL,RP SET THIS MODULE BASE REGISTER 40500013 L RK,PPIDEB+4 SET IERRDB DSECT BASE REGISTER 40800013 SPACE 2 41100013 *ESTABLISH ALL RECORD STORAGE AREA ADDRESSES AND THEIR RESPECTIVE BYTE 41400013 * COUNTS AND BUILD RSA TABLE IN IERRDB 41700013 SPACE 1 42000013 LA RC,TABLRSA ADDR OF RSA TABLE IN IERRDB 42300013 SR RD,RD 42600013 SR RG,RG 42900013 IC RD,PPILAB08 NO. OF RSA AREAS 43200013 LA RH,4 4 BYTES FOR TREE ADDR 43500013 AH RH,PPILEXFF PLUS SIZE OF ROUNDED EXTRACTED 43800013 * CONTROL FIELDS 44100013 L RF,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH THEIR 44400013 * RESPECTIVE BYTE COUNTS 44700013 ADBRSALP L RE,0(RG,RF) STRTG ADDR OF AN RSA AREA 45000013 AR RE,RH ADDR OF 1ST RCD IN THIS RSA AREA 45300013 ST RE,0(RG,RC) STORE IN IERRDB RSA ADDR TABLE 45600013 L RE,4(RG,RF) BYTE COUNT OF THIS RSA AREA 45900013 ST RE,4(RG,RC) STORE IN IERRDB RSA ADDR TABLE 46200013 LA RG,8(0,RG) UPDATE INDEX PTR 46500013 BCT RD,ADBRSALP DECR RSA CTR. LOOP IF MORE RSA AREAS 46800013 SPACE 1 47100013 *INSERT INPUT DCB ADDR AND RECORD LENGTH IN IERRDB. BUILD INPUT BUFFERS 47400013 SPACE 1 47700013 L RG,PPISTDCB SET INPUT DCB ADDRS IN RUNNING PROG. 48000013 L RE,0(RG) 48300013 ST RE,KADCB 48600013 LH RI,PPIRCDL1 SET RCD LENGTH - 1 IN IN-LINE 48900013 BCTR RI,0 MOVE INSTR IN RUNNING PROG 49200013 STC RI,RDB1030+1 49500013 SPACE 1 49800013 L RB,PPILAB02 ADDR OF INPUT BUFFER POOL ADDR TABLE 50100013 MVC WAREA+2(2),PPILAB03+2 50400013 MVC WAREA+1(1),PPILAB03 50700013 L 0,WAREA SET NO. OF BUFFERS AND BUFFER SIZE 51000013 * IN REG 0 51300013 SPACE 2 51600013 BUILDS (1),(0) BUILD INPUT BUFFERS 51900013 SPACE 2 52200013 SPACE 2 52500013 *INTERFACE TO IERRC9 52800013 SPACE 1 53100013 BR RO RETURN 53400013 SPACE 2 53700013 *LIST OF WORK AREAS: 54000013 SPACE 1 54300013 WAREA DC F'0' 54600013 EJECT 54900013 IERRDB DSECT , DUMMY RUNNING PROGRAM 55200013 IERDD1 B RDB1050 ENTRY FROM SORT NETWORK.G RCDS IN 55500013 * TREE.(ONCE ONLY) 55800013 B RDB1060 ENTRY FROM EOF ROUTINE 56100013 RDB1010 L RH,ADCONPTR NORMAL NETWORK,BLOCK ENTRY. LOAD RSA 56400013 * TABLE PTR. WILL BE B RDB1020 AFTER 56700013 * RSA IS FILLED WITH G+1 RCDS AND 57000013 * BY A BR TO THE NTWK AFTER EOF. 57300013 LM RD,RE,0(RH) RD-START OF RSA RCD. RE- THIS RSA 57600013 * REMAINING BYTE COUNT. 57900013 RDB1020 L RG,KADCB ADDR OF THE INPUT DCB 58200013 GET (RG) 58500013 SPACE 1 58800013 *GET RETURNS ADDR OF RCD IN INPUT BUFFER IN RB. 59100013 SPACE 1 59400013 RDBRTRN S RE,PPIBINSZ SUBTRACT BINSIZE FROM RSA BYTE COUNT 59700013 * WILL BE B RDLOADRC AFTER G+1 RCDS. 60000013 BM RDNEWRSA BR IF MINUS(RCD CAN'T FIT IN THIS 60300013 * RSA) 60600013 RDBOVLAY BC 0,RDBLAST WILL BE A BR AFTER TREE HAS G RCDS. 60900013 SPACE 2 61200013 *MOVE RECORD FROM INPUT BUFFER TO RSA. 61500013 SPACE 1 61800013 RDLOADRC LR RC,RB INPUT RCD ADDR FOR EXTRACT RTN 62100013 RDB1030 MVC 0(1,RD),0(RC) MOVE RCD FROM INPUT BFR TO RSA. 62400013 * LENGTH SET BY A.P. 62700013 SPACE 1 63000013 *UPDATE RECORD COUNTER 63300013 SPACE 1 63600013 L RG,PPICOUNT 63900013 LA RG,1(RG) INCR RCD COUNT BY 1 64200013 ST RG,PPICOUNT 64500013 SPACE 1 64800013 *UPDATE RSA TABLE PARAMETERS 65100013 SPACE 1 65400013 RDB1040 LR RF,RD WILL BE OVLAYED BY BR TO NETWORK 65700013 * AFTER G+1 RCDS 66000013 A RF,PPIBINSZ UPDATE RSA ADDR TO NEXT BIN 66300013 ST RF,0(0,RH) STORE IN RSA TABLE 66600013 ST RE,4(0,RH) STORE THIS RSA REMAINING BYTE COUNT 66900013 SPACE 1 67200013 *INTERFACE WITH SORT NETWORK DURING FILL OF TREE. 67500013 SPACE 1 67800013 L RL,PPINET+4 ADDR OF NETWORK 68100013 B 4(RL) BR TO FILL TREE 68400013 SPACE 2 68700013 *UPDATE POINTER TO NEXT RSA TABLE ENTRY(NEXT RSA AREA) 69000013 SPACE 1 69300013 RDNEWRSA LA RH,8(0,RH) UPDATE PTR 69600013 ST RH,ADCONPTR SAVE UPDATED PTR TO THE TABLE 69900013 LM RD,RE,0(RH) NEW RSA PARAMETERS 70200013 B RDBRTRN BR TO PROCESS THIS INPUT RCD 70500013 SPACE 2 70800013 SPACE 2 71100013 *SORT TREE HAS BEEN FILLED. THE NEXT DEBLOCKED RECORD IS MOVED TO THE 71400013 *NEXT SPACE IN RSA. IN ALL SUBSEQUENT ENTRIES TO THIS MODULE, RD WILL 71700013 *POINT TO THE WINNER RECORD IN RSA. THE DEBLOCKED RECORD MUST BE MOVED 72000013 *TO THE LOCATION INDICATED BY RD. ALSO, THIS MODULE MUST NOW ENTER THE 72300013 *SORT NETWORK AT ITS NORMAL ENTRY POINT. THE FOLLOWING CODE MODIFIES 72600013 *THIS MODULE TO EFFECT THESE NEW REQUIREMENTS. 72900013 SPACE 1 73200013 RDB1050 MVI RDBOVLAY+1,X'F0' MAKE THE INSTR A DIRECT BRANCH 73500013 B RDB1010 73800013 SPACE 2 74100013 RDBLAST MVC RDB1010(4),KMOD1 74400013 MVC RDBRTRN(4),KMOD2 74700013 MVC RDB1040(8),KMOD3 75000013 B RDLOADRC MOVE THIS INPUT RCD TO RSA(G+1 RCD) 75300013 SPACE 2 75600013 *WHEN EOF HAS BEEN REACHED, THERE ARE NO MORE RECORDS TO BE DEBLOCKED 75900013 *BUT THE SORT NETWORK MUST EMPTY ITS TREE. FUTURE ENTRIES TO THIS 76200013 *MODULE DO NO PROCESSING, BUT MERELY EXIT TO THE SORT NETWORK AT ITS 76500013 *EMPTYING ENTRY. THE FOLLOWING CODING MODIFIES THE PRESENT ENTRY POINT 76800013 *TO EFFECT THIS CHANGE AND THEN EXITS TO THE SORT NETWORK AT ITS EOF 77100013 *ENTRY. 77400013 SPACE 1 77700013 RDB1060 MVC RDB1010(8),KMOD4 BR DIRECTLY TO SORT NETWORK 78000013 SPACE 1 78300013 *INTERFACE TO SORT NETWORK ON EOF. 78600013 SPACE 1 78900013 L RL,PPINET+4 ADDR OF SORT NETWORK 79200013 B 8(RL) 79500013 SPACE 2 79800013 *ADCONS USED BY THE MODULE: 80100013 SPACE 1 80400013 ADCONPTR DC A(TABLRSA) 80700013 SPACE 2 81000013 *CONSTANTS USED BY THE MODULE: 81300013 SPACE 1 81600013 KMOD1 B RDB1020 OVERLAY RDB1010 AFTER G+1 RCDS 81900013 KMOD2 B RDLOADRC OVERLAY RDBRTRN AFTER G+1 RCDS 82200013 KMOD3 L RL,PPINET+4 OVERLAY RDB1040 AFTER G+1 RCDS 82500013 B 12(RL) NORMAL BRANCH TO NETWORK 82800013 KMOD4 L RL,PPINET+4 OVERLAY RDB1010 AFTER EOF 83100013 B 16(RL) FLUSH BRANCH TO NTWK 83400013 KADCB DC F'0' INPUT DCB ADDR LOADED BY A.P. 83700013 SPACE 2 84000013 *LIST OF WORK AREAS/TABLES: 84300013 SPACE 1 84600013 TABLRSA DC 10F'0' SPACE AVAILABLE FOR 5 NON-CONTIGUOUS 84900013 * RSA ENTRIES.EACH ENTRY 8 BYTES. 85200013 * 4 BYTES-ADDR IN BIN TO MOVE RCD 85500013 * 4 BYTES-REMAINING BYTE COUNT OF 85800013 * THIS RSA. 86100013 * INITIALIZED BY A.P. 86400013 SPACE 2 86700013 EJECT 87000013 SMPPI 87300013 END 87600013 ./ ADD SSI=03013119,SOURCE=1,NAME=IERADC TITLE ' IERADC - OS/360 SORT/MERGE - 360S-SM023 05/06/66' 00300013 SPACE 2 00600013 *MODULE NAME *** IERADC *** 00900013 SPACE 2 01200013 *STATUS:CHANGE LEVEL 000 01500013 SPACE 2 01800013 *MODULE FUNCTION/OPERATION: PHASE 1 ASSIGNMENT MODULE. F.L SORT W/O E15 02100013 * THE FUNCTION OF THIS MODULE IS TO BUILD A TABLE OF RSA ADDRESSES 02400013 * WITH THEIR RESPECTIVE AREA BYTE COUNTS IN IERRDC. THE TABLE IS 02700013 * NEEDED BECAUSE RECORD STORAGE AREA MAY NOT BE CONTIGUOUS. THIS 03000013 * MODULE ALSO BUILDS THE INPUT BUFFERS USING THE BUILD MACRO. IT 03300013 * ALSO OBTAINS THE ADDRESS OF THE INPUT DCB AND PUTS IT IN THE 03600013 * RUNNING PROGRAM IERRDC. 03900013 SPACE 2 04200013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 04500013 SPACE 1 04800013 * NONE 05100013 SPACE 2 05400013 *LIST OF MACROS USED BY MODULE: 05700013 SPACE 1 06000013 * SMPPI 06300013 * BUILD 06600013 SPACE 2 06900013 *ENTRY POINTS: 07200013 SPACE 1 07500013 * FROM IERRC9 ENTRY FROM:IERRC9 07800013 * CALLING SEQUENCE- 08100013 * LOAD EP=IERADC,DCB=SORTLIB 08400013 * LR RP,RA 08700013 * BALR RO,RP 09000013 SPACE 2 09300013 *INPUT: - PPI FIELDS REFERENCED 09600013 SPACE 1 09900013 * PPIDEB PPILAB08 10200013 * PPILAB03 PPILEXFF 10500013 * PPILAB06 PPISTDCB 10800013 SPACE 1 11100013 * INFO IS NEEDED TO BUILD THE RSA TABLE IN IERRDC AND TO BUILD THE 11400013 * INPUT BUFFERS. 11700013 SPACE 2 12000013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 12300013 SPACE 1 12600013 * NONE 12900013 SPACE 2 13200013 *EXTERNAL ROUTINES: 13500013 SPACE 1 13800013 * NONE 14100013 SPACE 2 14400013 *EXTERNAL PARAMETERS: 14700013 SPACE 1 15000013 * SEE REGISTERS 15300013 SPACE 2 15600013 *EXITS-NORMAL: 15900013 SPACE 1 16200013 * TO IERRC9 EXIT TO: IERRC9 16500013 * CALLING SEQUENCE- 16800013 * BR RO RETURN 17100013 SPACE 2 17400013 *EXITS-ERROR: 17700013 SPACE 1 18000013 * NONE 18300013 SPACE 2 18600013 *TABLES/WORK AREAS: 18900013 SPACE 1 19200013 * WAREA-WORK AREA 19500013 SPACE 2 19800013 *ATTRIBUTES: THIS IS A CLASS A MODULE 20100013 SPACE 2 20400013 *NOTES- THIS MODULE WILL EXECUTE FOR ANY FIXED LENGTH SORT WITHOUT 20700013 * EXITS E15 AND E16. THE INPUT RCD MUST BE GREATER THAN 256 BYTES. 21000013 EJECT 21300013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 21600013 SPACE 1 21900013 RA EQU 0 CONTENTS IN- N/A 22200013 * USE- LOAD TO NO.OF BUFFERS AND 22500013 * BUFFER SIZE FOR BUILD MACRO 22800013 * CONTENTS OUT- N/A 23100013 RB EQU 1 CONTENTS IN- N/A 23400013 * USE- ADDR OF INPUT BUFFER POOL FOR 23700013 * BUILD MACRO 24000013 * CONTENTS OUT- N/A 24300013 RC EQU 2 CONTENTS IN- N/A 24600013 * USE- ADDR OF RSA TABLE IN IERRDC 24900013 * CONTENTS OUT- N/A 25200013 RD EQU 3 CONTENTS IN- N/A 25500013 * USE- COUNTER FOR NO. OF RSA AREAS 25800013 * CONTENTS OUT- N/A 26100013 RE EQU 4 CONTENTS IN- N/A 26400013 * USE- WORK REGISTER 26700013 * CONTENTS OUT- N/A 27000013 RF EQU 5 CONTENTS IN- N/A 27300013 * USE- PTR TO THE TABLE OF RSA ADDRS 27600013 * IN PPI 27900013 * CONTENTS OUT- N/A 28200013 RG EQU 6 CONTENTS IN- N/A 28500013 * USE- INDEX REGISTER 28800013 * - WORK REGISTER 29100013 * CONTENTS OUT- N/A 29400013 RH EQU 7 CONTENTS IN- N/A 29700013 * USE- WORK REGISTER 30000013 * CONTENTS OUT- N/A 30300013 RI EQU 8 CONTENTS IN- N/A 30600013 * USE- WORK REGISTER 30900013 * CONTENTS OUT- N/A 31200013 RJ EQU 9 CONTENTS IN- N/A 31500013 * USE- NOT USED 31800013 * CONTENTS OUT- N/A 32100013 RK EQU 10 CONTENTS IN- N/A 32400013 * USE- IERRDC DSECT BASE REGISTER 32700013 * CONTENTS OUT- N/A 33000013 RL EQU 11 CONTENTS IN- N/A 33300013 * USE-MODULE BASE REGISTER 33600013 * CONTENTS OUT- N/A 33900013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 34200013 * USE- NOT USED 34500013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 34800013 RN EQU 13 CONTENTS IN-ADDR OF PPI 35100013 * USE-PPI REFERENCES,REG SAVE AREA 35400013 * CONTENTS OUT-ADDR OF PPI 35700013 RO EQU 14 CONTENTS IN- IERRC9 RETURN ADDR 36000013 * USE- NOT USED 36300013 * CONTENTS OUT- IERRC9 RETURN ADDR 36600013 RP EQU 15 CONTENTS IN- IERADC ENTRY PT 36900013 * USE- ESTABLISH IERADC BASE REGISTER 37200013 * CONTENTS OUT- N/A 37500013 SPACE 2 37800013 *START OF MODULE CODE PROPER: 38100013 SPACE 2 38400013 IERADC CSECT 38700013 * 582000 A24562 38800019 USING *,RL THIS MODULE BASE REGISTER 39000013 USING IERRDC,RK BASE REG FOR R.P. DSECT 39300013 USING IERRCA,RN PPI BASE REG 39600013 IERMDA LR RL,RP SET THIS MODULE BASE REGISTER 39900013 L RK,PPIDEB+4 SET IERRDC DSECT BASE REGISTER 40200013 SPACE 2 40500013 *ESTABLISH ALL RECORD STORAGE AREA ADDRESSES AND THEIR RESPECTIVE BYTE 40800013 * COUNTS AND BUILD RSA TABLE IN IERRDB. 41100013 SPACE 1 41400013 LA RC,TABLRSA ADDR OF RSA TABLE IN IERRDC 41700013 SR RD,RD 42000013 SR RG,RG 42300013 IC RD,PPILAB08 NO. OF RSA AREAS 42600013 LA RH,4 4 BYTES FOR TREE ADDRESS 42900013 AH RH,PPILEXFF PLUS SIZE OF ROUNDED EXTRACTED 43200013 * CONTROL FIELDS 43500013 L RF,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH THEIR 43800013 * RESPECTIVE BYTE COUNTS 44100013 ADCRSALP L RE,0(RG,RF) STARTING ADDR OF AN RSA AREA 44400013 AR RE,RH EQLS ADDR OF 1ST RCD IN THE RSA AREA 44700013 ST RE,0(RG,RC) STORE IN IERRDC RSA ADDR TABLE 45000013 L RE,4(RG,RF) BYTE COUNT OF THIS RSA AREA 45300013 ST RE,4(RG,RC) STORE IN IERRDC RSA ADDR TABLE 45600013 LA RG,8(0,RG) UPDATE INDEX REG 45900013 BCT RD,ADCRSALP DECR RSA CTR, LOOP IF MORE RSA AREAS 46200013 SPACE 1 46500013 *INSERT INPUT DCB ADDR IN IERRDC. BUILD INPUT BUFFERS. 46800013 SPACE 1 47100013 L RG,PPISTDCB SET INPUT DCB ADDRS IN RUN PROG 47400013 L RE,0(RG) 47700013 ST RE,KADCB 48000013 SPACE 1 48300013 L RB,PPILAB02 ADDR OF INPUT BUFFER POOL ADDR TABLE 48600013 MVC WAREA+2(2),PPILAB03+2 48900013 MVC WAREA+1(1),PPILAB03 49200013 L 0,WAREA SET NO. OF BUFFERS AND BUFFER SIZE 49500013 * IN REG 0 49800013 SPACE 2 50100013 BUILDS (1),(0) BUILD INPUT BUFFERS 50400013 SPACE 1 50700013 SPACE 1 51000013 *INTERFACE TO IERRC9 51300013 SPACE 1 51600013 BR RO RETURN 51900013 SPACE 2 52200013 *LIST OF WORK AREAS: 52500013 SPACE 1 52800013 WAREA DC F'0' 53100013 EJECT 53400013 IERRDC DSECT , DUMMY RUNNING PROGRAM 53700013 USING *,RL THIS MODULE BASE REGISTER 54000013 USING IERRCA,RN 54300013 IERDD1 B RDC1050 ENTRY FROM SORT NETWORK. G RECORDS 54600013 * ARE IN THE TREE(ONCE ONLY) 54900013 B RDC1060 ENTRY FROM EOF ROUTINE 55200013 SPACE 2 55500013 *NORMAL ENTRY FROM NETWORK WHILE FILLING TREE, ENTRY FROM ALGORITHM ON 55800013 * OUTPUT EOS, NORMAL ENTRY FROM BLOCK WHILE RUNNING. 56100013 SPACE 1 56400013 RDC1010 L RH,ADCONPTR LOAD RSA TABLE POINTER. THIS INSTR 56700013 * WILL BE OVLAYED BY B RDB1020 AFTER 57000013 * RSA IS FILLED WITH G+1 RCDS AND 57300013 * BY A BR TO THE NTWK AFTER EOF. 57600013 L RD,0(RH) ADDR OF AREA IN RSA FOR INPUT RCD 57900013 L RI,4(RH) REMAINING BYTE COUNT OF RSA A24562 58200019 RDC1020 L RG,KADCB ADDR OF THE INPUT DCB 58500013 GET (RG) 58800013 SPACE 1 59100013 *GET RETURNS ADDR OF RCD IN INPUT BUFFER IN RB. 59400013 SPACE 1 59700013 RDCRTRN S RI,PPIBINSZ SUBTRACT BINSIZE FROM RSA BYTE COUNT 60000013 * THIS WILL BE OVLAYED BY B RDLOADRC 60300013 * AFTER G+1 RCDS 60600013 BM RDNEWRSA BR IF MINUS-RCD CANT FIT IN THIS RSA 60900013 RDCOVLAY BC 0,RDCLAST WILL BE A BR AFTER TREE HAS G RCDS. 61200013 SPACE 2 61500013 *LINK TO MOVE LIST WHICH MOVES THE RECORD FROM THE INPUT BUFFER TO RSA. 61800013 *INPUT BUFFER RCD ADDR IN RE. RSA RCD ADDR IN RF 62100013 SPACE 1 62400013 RDLOADRF LR RF,RD ADDR IN RSA TO MOVE INPUT RCD 62700013 LR RE,RB INPUT RCD ADDR 63000013 L RP,PPIBDSVA+4 ADDR OF MOVE LIST 63300013 BALR RO,RP 63600013 SPACE 2 63900013 *UPDATE RECORD COUNTER. LOAD RC IN CASE WE HAVE EXTRACT ROUTINE 64200013 SPACE 1 64500013 LR RC,RB ADDR OF RCD IN INPUT BUFFER 64800013 L RG,PPICOUNT 65100013 LA RG,1(RG) INCR RCD COUNT BY 1 65400013 ST RG,PPICOUNT 65700013 SPACE 2 66000013 *UPDATE RSA TABLE PARAMETERS 66300013 SPACE 1 66600013 RDC1040 LR RF,RD ADDR OF RCD IN RSA. WILL BE OVLAYED 66900013 * BY BR TO NETWORK AFTER G+1 RCDS. 67200013 A RF,PPIBINSZ UPDATE RSA ADDR TO NEXT BIN 67500013 ST RF,0(0,RH) STORE IN RSA TABLE 67800013 ST RI,4(0,RH) STORE THIS RSA REMAINING BYTE COUNT 68100013 SPACE 1 68400013 *INTERFACE WITH SORT NETWORK DURING FILL OF TREE. 68700013 SPACE 1 69000013 L RL,PPINET+4 ADDR OF NETWORK 69300013 B 4(RL) BR TO FILL TREE 69600013 SPACE 2 69900013 *UPDATE POINTER TO NEXT ENTRY IN RSA TABLE(EQUALS NEXT RSA AREA) 70200013 SPACE 1 70500013 RDNEWRSA LA RH,8(0,RH) UPDATE PTR 70800013 ST RH,ADCONPTR SAVE UPDATED PTR 71100013 L RD,0(RH) NEW RSA RCD ADDR 71400013 L RI,4(RH) COUNT OF THIS NEW RSA 71700013 B RDCRTRN BR TO PROCESS THE INPUT RCD 72000013 SPACE 2 72300013 SPACE 2 72600013 *SORT TREE HAS BEEN FILLED. IN FUTURE ENTRIES TO THIS MODULE, RD WILL 72900013 *POINT TO THE WINNER RECORD IN RSA. THE NEW RECORD WHICH HAS BEEN 73200013 *DEBLOCKED MUST BE MOVED TO THE LOCATION IN RSA INDICATED BY RD. ALSO, 73500013 *THIS MODULE MUST NOW ENTER THE SORT NETWORK AT 12(RL). THE 73800013 *FOLLOWING CODE MODIFIES THIS MODULE TO EFFECT THESE NEW REQUIREMENTS. 74100013 SPACE 1 74400013 RDC1050 MVI RDCOVLAY+1,X'F0' MAKE THE INSTR A DIRECT BRANCH 74700013 B RDC1010 BR TO PROCESS THE G+1 RCD 75000013 SPACE 2 75300013 RDCLAST MVC RDC1010(4),KMOD1 75600013 MVC RDCRTRN(4),KMOD2 75900013 MVC RDC1040(8),KMOD3 76200013 B RDLOADRF BR TO MOVE G+1 RCD TO RSA 76500013 SPACE 2 76800013 *WHEN EOF HAS BEEN REACHED, THERE ARE NO MORE RECORDS TO BE DEBLOCKED 77100013 *BUT THE SORT NETWORK MUST EMPTY ITS TREE. FUTURE ENTRIES TO THIS 77400013 *MODULE DO NO PROCESSING, BUT MERELY EXIT TO THE SORT NETWORK AT 77700013 *16(RL). THE FOLLOWING CODING MODIFIES THE PRESENT ENTRY POINT TO 78000013 *EFFECT THIS CHANGE AND THEN EXITS TO THE SORT NETWORK AT 8(RL), THE 78300013 *EOF ENTRY. 78600013 SPACE 1 78900013 RDC1060 MVC RDC1010(8),KMOD4 BR DIRECTLY TO SORT NETWORK 79200013 SPACE 2 79500013 *INTERFACE TO SORT NETWORK ON EOF. 79800013 SPACE 1 80100013 L RL,PPINET+4 ADDR OF SORT NETWORK 80400013 B 8(RL) 80700013 SPACE 2 81000013 *ADCONS USED BY THE MODULE: 81300013 SPACE 1 81600013 ADCONPTR DC A(TABLRSA) 81900013 SPACE 2 82200013 *CONSTANTS USED BY THE MODULE: 82500013 SPACE 1 82800013 KMOD1 B RDC1020 OVERLAY RDC1010 AFTER G+1 RCDS 83100013 KMOD2 B RDLOADRF OVERLAY RDCRTRN AFTER G+1 RCDS 83400013 KMOD3 L RL,PPINET+4 OVERLAY RDC1040 AFTER G+1 RCDS 83700013 B 12(RL) NORMAL BR TO THE NETWORK 84000013 KMOD4 L RL,PPINET+4 OVERLAY RDC1010 AFTER INPUT EOF. 84300013 B 16(RL) FLUSH BRANCH TO NETWORK 84600013 KADCB DC F'0' INPUT DCB ADDR LOADED BY A.P. 84900013 SPACE 2 85200013 *LIST OF WORK AREAS/TABLES: 85500013 SPACE 1 85800013 TABLRSA DC 10F'0' SPACE AVAILABLE FOR 5 NON-CONTIGUOUS 86100013 * RSA ENTRIES.EACH ENTRY 8 BYTES. 86400013 * 4 BYTES-ADDR IN BIN TO MOVE RCD 86700013 * 4 BYTES-REMAINING BYTE COUNT OF 87000013 * THIS RSA. 87300013 * THIS TABLE INITIALIZED BY IERADD 87600013 EJECT 87900013 SMPPI 88200013 END 88500013 ./ ADD SSI=03011616,SOURCE=1,NAME=IERADD TITLE ' IERADD - OS/360 SORT/MERGE - 360S-SM023 05/08/66' 00200013 SPACE 2 00400013 *MODULE NAME *** IERADD *** 00600013 SPACE 2 00800013 *STATUS:CHANGE LEVEL 000 01000013 SPACE 2 01200013 *MODULE FUNCTION/OPERATION: PHASE 1 ASSGNMT MOD. F.L. W/E15 AND/OR E16 01400013 * THE FUNCTION OF THIS MODULE IS TO INITIALIZE A RECORD STORAGE AREA 01600013 * TABLE IN IERRDD. THIS TABLE WOULD CONSIST OF UP TO 5 ENTRIES FOR 01800013 * 5 NON-CONTIGUOUS RSA'S. THIS MODULE BUILDS THE INPUT BUFFER(S) 02000013 * IT ALSO CHECKS TO SEE WHETHER WE ARE ATTACHED,WHETHER E15 AND E16 02200013 * ARE ACTIVATED AND OVERLAYS IERRDD IN APPROPRIATE PLACES. IT ALSO 02400013 * PASSES IERRDD THE STARTING ADDRESS OF THE INPUT DCB. 02600013 SPACE 2 02800013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 03000013 SPACE 1 03200013 * NONE 03400013 SPACE 2 03600013 *LIST OF MACROS USED BY MODULE: 03800013 SPACE 1 04000013 * SMPPI 04200013 * BUILD 04400013 SPACE 2 04600013 *ENTRY POINTS: 04800013 SPACE 1 05000013 * FROM IERRC9 ENTRY FROM:IERRC9 05200013 * CALLING SEQUENCE- 05400013 * LOAD EP=IERADD,DCB=SORTLIB 05600013 * LR RP,RA 05800013 * BALR RO,RP 06000013 SPACE 2 06200013 *INPUT: - PPI FIELDS REFERENCED 06400013 SPACE 1 06600013 * PPIDEB PPILAB08 PPINMAX 06800013 * PPILAB03 PPILEXFF PPIATP1E 07000013 * PPILAB06 PPIMODEX PPISTDCB 07200013 SPACE 1 07400013 * INFO IS NEEDED TO BUILD RSA TABLE IN IERRDD,TO BUILD THE INPUT 07600013 * BUFFER(S),TO SEE WHAT USER EXITS ARE ACTIVATED 07800013 SPACE 2 08000013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 08200013 SPACE 1 08400013 * NONE 08600013 SPACE 2 08800013 *EXTERNAL ROUTINES: 09000013 SPACE 1 09200013 * NONE 09400013 SPACE 2 09600013 *EXTERNAL PARAMETERS: 09800013 SPACE 1 10000013 * SEE REGISTERS 10200013 SPACE 2 10400013 *EXITS-NORMAL: 10600013 SPACE 1 10800013 * TO IERRC9 EXIT TO:IERRC9 11000013 * CALLING SEQUENCE- 11200013 * BR RO RETURN 11400013 SPACE 2 11600013 *EXITS-ERROR: 11800013 SPACE 1 12000013 * NONE 12200013 SPACE 2 12400013 *TABLES/WORK AREAS: 12600013 SPACE 1 12800013 * WAREA-WORK AREA 13000013 SPACE 2 13200013 *ATTRIBUTES: THIS IS A CLASS A MODULE 13400013 SPACE 2 13600013 *NOTES:THIS MODULE WILL EXECUTE FOR ANY FIXED LENGTH SORT HAVING 13800013 * USER EXITS E15 AND/OR E16, OR ATTACHED 14000013 EJECT 14200013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 14400013 SPACE 1 14600013 RA EQU 0 CONTENTS IN- N/A 14800013 * USE- NO. OF BUFFERS AND BUFFER SIZE 15000013 * FOR BUILD MACRO 15200013 * CONTENTS OUT- N/A 15400013 RB EQU 1 CONTENTS IN- N/A 15600013 * USE- ADDR OF INPUT BUFFER POOL FOR 15800013 * BUILD MACRO 16000013 * CONTENTS OUT- N/A 16200013 RC EQU 2 CONTENTS IN- N/A 16400013 * USE- ADDR OF RSA TABLE IN IERRDC 16600013 * CONTENTS OUT- N/A 16800013 RD EQU 3 CONTENTS IN- N/A 17000013 * USE- COUNTER FOR NO. OF RSA AREAS 17200013 * CONTENTS OUT- N/A 17400013 RE EQU 4 CONTENTS IN- N/A 17600013 * USE- WORK REGISTER 17800013 * CONTENTS OUT- N/A 18000013 RF EQU 5 CONTENTS IN- N/A 18200013 * USE- ADDR OF RSA TABLE IN PPI 18400013 * CONTENTS OUT- N/A 18600013 RG EQU 6 CONTENTS IN- N/A 18800013 * USE- INDEX REGISTER 19000013 * CONTENTS OUT- N/A 19200013 RH EQU 7 CONTENTS IN- N/A 19400013 * USE- WORK REGISTER 19600013 * CONTENTS OUT- N/A 19800013 RI EQU 8 CONTENTS IN- N/A 20000013 * USE- NOT USED 20200013 * CONTENTS OUT- N/A 20400013 RJ EQU 9 CONTENTS IN- N/A 20600013 * USE- NOT USED 20800013 * CONTENTS OUT- N/A 21000013 RK EQU 10 CONTENTS IN-N/A 21200013 * USE- IERRDD DSECT BASE REGISTER 21400013 * CONTENTS OUT- N/A 21600013 RL EQU 11 CONTENTS IN- N/A 21800013 * USE-MODULE BASE REGISTER 22000013 * CONTENTS OUT- N/A 22200013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 22400013 * USE- NOT USED 22600013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 22800013 RN EQU 13 CONTENTS IN-ADDR OF PPI 23000013 * USE-PPI REFERENCES,REG SAVE AREA 23200013 * CONTENTS OUT-ADDR OF PPI 23400013 RO EQU 14 CONTENTS IN- IERRC9 RETURN ADDR 23600013 * USE- NOT USED 23800013 * CONTENTS OUT- IERRC9 RETURN ADDR 24000013 RP EQU 15 CONTENTS IN- IERADD ENTRY PT 24200013 * USE- ESTABLISH IERADD BASE REGISTER 24400013 * CONTENTS OUT- N/A 24600013 SPACE 2 24800013 *START OF MODULE CODE PROPER: 25000013 SPACE 2 25200013 IERADD CSECT 25400013 USING *,RL THIS MODULE BASE REGISTER 25600013 USING IERRDD,RK BASE REG FOR R.P. DSECT 25800013 USING IERRCA,RN PPI BASE REG 26000013 IERMDA LR RL,RP 26200013 L RK,PPIDEB+4 26400013 SPACE 2 26600013 *ESTABLISH ALL RECORD STORAGE AREA ADDRESSES AND THEIR RESPECTIVE BYTE 26800013 * COUNTS AND BUILD RSA TABLE IN IERRDD. 27000013 SPACE 1 27200013 LA RC,TABLRSA ADDR OF RSA TABLE IN IERRDD. 27400013 SR RD,RD 27600013 SR RG,RG 27800013 IC RD,PPILAB08 NO. OF RSA AREAS 28000013 LA RH,4 4 BYTES FOR TREE ADDRESS 28200013 AH RH,PPILEXFF PLUS SIZE OF ROUNDED EXTRACTED 28400013 * CONTROL FIELDS 28600013 L RF,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH THEIR 28800013 * RESPECTIVE BYTE COUNTS 29000013 ADDRSALP L RE,0(RG,RF) STARTING ADDR OF AN RSA AREA 29200013 AR RE,RH EQLS ADDR OF 1ST RCD IN THE RSA AREA 29400013 ST RE,0(RG,RC) STORE IN IERRDD RSA ADDR TABLE 29600013 L RE,4(RG,RF) BYTE COUNT OF THIS RSA AREA 29800013 ST RE,4(RG,RC) STORE IN IERRDD RSA ADDR TABLE 30000013 LA RG,8(0,RG) UPDATE INDEX REG 30200013 BCT RD,ADDRSALP DECR RSA CTR, LOOP IF MORE RSA AREAS 30400013 SPACE 1 30600013 CLC PPIATP1E,KZERO TEST IF ATTACHED EXIT 30800013 BC 7,ADBYPSB YES, BYPASS BUILD MACRO 31000013 SPACE 1 31200013 * SET UP AND BUILD THE INPUT BUFFER(S) 31400013 SPACE 1 31600013 L RB,PPILAB02 ADDR OF INPUT BUFFER POOL ADDR TABLE 31800013 MVC WAREA+2(2),PPILAB03+2 SIZE OF INPUT BFR(S) 32000013 MVC WAREA+1(1),PPILAB03 NO. OF INPUT BFR(S) 32200013 L 0,WAREA NO. AND SIZE OF BFR(S) IN BYTES 32400013 SPACE 1 32600013 BUILDS (1),(0) BUILD INPUT BUFFER(S) 32800013 SPACE 1 33000013 * CALCULATE ADDR OF DCB AND STORE IN R.P. 33200013 SPACE 1 33400013 ADBYPSB L RE,PPISTDCB POINTER TO LIST OF DCB ADDRESSES 33600013 MVC WDCB,0(RE) STORE DCB ADDR IN R.P. 33800013 SPACE 1 34000013 TM PPIMODEX,X'20' TEST IF NMAX EXIT ACTIVATED 34200013 BC 1,ADSTONMX YES,BR TO STORE NMAX IN R.P. 34400013 MVC RDTSTNMX(4),K3 OVERLAY NMAX TEST,INSERT RTN OF R.P. 34600013 MVC RDOVLAY4(4),K4 OVERLAY NMAX TEST,DO NOTHG,ETC R.P. 34800013 ADTSTATT CLC PPIATP1E,KZERO TEST IF ATTACHED EXIT 35000013 BC 7,ADATTEXT YES, BR TO ATTACH EXIT RTN 35200013 TM PPIMODEX,X'40' TEST IF ANY USER RCD MODIFICATIONS 35400013 BC 1,ADENDMOD YES, BR TO LINK TO NEXT RTN 35600013 MVC RDUSREXT,RDOVLAY4 OVERLAY USER EXIT E15 WITH A BRANCH 35800013 * TO DO NOTHING RTN IN R.P. 36000013 MVI WUSREOF,X'01' SET USER EXIT E15 EOF SWITCH 36200013 SPACE 1 36400013 *INTERFACE TO IERRC9 36600013 SPACE 1 36800013 ADENDMOD BR RO RETURN 37000013 SPACE 2 37200013 ADATTEXT MVC PPIX15+4(4),PPIATP1E R.P. EXIT E15 NOW LINKS TO ATTACH 37400013 * RTN 37600013 MVI WSYSEOF,X'01' TURN ON SYSTEM EOF SWITCH 37800013 MVC RDTSTISW(4),K5 OVLAY INSERT SWITCH TEST IN R.P. 38000013 B ADENDMOD BR TO LINK TO NEXT RTN 38200013 SPACE 2 38400013 ADSTONMX L RE,PPINMAX LOAD NMAX 38600013 LA RE,1(0,RE) EQUALS NMAX + 1 (TO ALLOW BCT INSTR 38800013 * IN R.P. TO DECR NMAX CTR) 39000013 ST RE,PPINMAX 39200013 B ADTSTATT BR TO TEST IF ATTACHED 39400013 SPACE 1 39600013 SPACE 2 39800013 * LIST OF CONSTANTS USED BY THE MODULE 40000013 KZERO DC F'0' 40200013 SPACE 1 40400013 SPACE 2 40600013 * LIST OF WORK AREAS 40800013 WAREA DC F'0' 41000013 EJECT 41200013 IERRDD DSECT , DSECT OF IERRDD 41400013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 41600013 USING IERRCA,RN PUT RN IN USING TABLE WITH PPI ADDR 41800013 USING IERRMA,RO MESSAGE MODULE ADDR 42000013 SPACE 1 42200013 * ENTER BRANCH TABLE FROM REPLACEMENT SORT,0(RL).FROM READ MOD, 4(RL). 42400013 * OR FROM REPLACEMENT SORT(INITIALLY TO FILL TREE), ALGORITHM(AT THE 42600013 * END OF A SEQUENCE), BLOCK MODULE(AFTER FILLING TREE), 8(RL). 42800013 IERDD1 B RDOVLAYF FROM REPL SORT,FINISHD FILLING TREE 43000013 B RDSETSW FROM READ MOD(GET,ON EOF) 43200013 * FROM REPLACEMT SORT BLOCK MOD,OR ALGORITHM 43400013 SPACE 1 43600013 RDNORMAL ST RD,WINNER ADDR OF A FREE AREA IN RSA-LAST WNR 43800013 RDLDCTRS STM RJ,RK,WRJ SAVE TRANSPARENT REGS 44000013 LM RG,RI,PPICOUNT RESTORE COUNTERS 44200013 L RK,WDCB RESTORE DCB ADDRESS 44400013 L RJ,PPINMAX RESTORE NMAX 44600013 LTR RJ,RJ CHECK FOR 0 OR NMAX 44800013 BC 2,RDTSTISW IF NMAX PLUS CONTINUE 45000013 LA RJ,1 NMAX MUST BE 1 45200013 RDTSTISW TM WINSRTSW,X'01' TST INSERT SW. WILL BE OVLAYED BY 45400013 * A.P. IF ATTACHED,OR BY R.P. ON 45600013 * SYSTEM EOF,WITH B RDUSREXT 45800013 BC 1,RDUSREXT ON, BR TO USER EXIT 46000013 RDGET GET (RK) UPDATE ADDR IN INPUT AREA(REG RB) 46200013 * REG RK HAS DCB ADDR 46400013 LA RG,1(0,RG) INCR RCD CTR BY ONE 46600013 ST RB,WINPTRCD SAVE ADDR OF RCD THATS IN INPUT BLK 46800013 SPACE 1 47000013 * USER MOD EXIT E15 USING CALL MACRO EXPANSION INSTRUCTIONS. 47200013 * PASS ADDR OF PARAMETER LIST(ADDR OF INPUT RCD) IN REGISTER RB 47400013 SPACE 1 47600013 RDUSREXT LA RB,WINPTRCD ADDR OF PARAMETER LIST. IF E15 NOT 47800013 * ACTIVATED, OR IF ACTIVATED AND HIT 48000013 * USER EOF,THIS INSTR WILL BE OVLAYD 48200013 * BY B RDALSHNO 48400013 L RP,PPIX15+4 ADDR OF USER EXIT E15. IF ATTACHED 48600013 * A.P. WILL LOAD PPIX15 WITH ADDR IN 48800013 * PPIATP1E 49000013 BALR RO,RP BR TO USER 49200013 SPACE 1 49400013 * USER RETURNS TO MODULE VIA RETURNREG AND PROPER DISPLACEMENTS. USER 49600013 * PASSES ADDR OF RECORD TO BE INSERTED OR ADDR OF WORK AREA IF HE 49800013 * ALTERS,LENGTHENS,OR SHORTENS A RCD IN REG RB. 50000013 SPACE 1 50200013 B *+4(15) 50400013 RDOVLAY4 B RDALSHNO ALTER,LENGTHN,SHORTN,DO NOTHING 50600013 * WILL BE OVERLAYED BY K4 IF,WHEN 50800013 * REACH NMAX IT IS IGNORED, OR BY 51000013 * A.P. WITH K4 IF EXIT NOT ACTIVE 51200013 B RDDELETE DELETE A RCD 51400013 B RDUSREOF USER END OF FILE 51600013 SPACE 1 51800013 * INSERT A RECORD 52000013 SPACE 1 52200013 RDTSTNMX BCT RJ,RDISWON DECR NMAX CTR BY ONE AND TEST TO 52400013 * SEE IF REACHED NMAX 52600013 * WILL BE OVERLAYED BY K3 IF, WHEN 52800013 * REACH NMAX IT IS IGNORED, OR BY 53000013 * A.P. WITH K3 IF EXIT NOT ACTIVE 53200013 B RDWSW1ON YES,BR TO NMAX USER EXIT E16,SW ON 53400013 SPACE 2 53600013 * SYSTEM END OF FILE ROUTINE 53800013 SPACE 1 54000013 RDSETSW OI WSYSEOF,X'01' SET SYSTEM EOF SWITCH 54200013 SR RB,RB CLEAR INPUT RCD PARAM REG 54400013 MVC RDTSTISW,K5 TO BYPASS GOING TO GET AFTER SYS EOF 54600013 TM WUSREOF,X'01' TEST IF USER EOF SWITCH ON 54800013 BC 1,RDCNTSRT YES,BR TO EOF FLUSH RTN 55000013 B RDUSREXT-4 NO, BR TO USER 55200013 SPACE 2 55400013 * USER END OF FILE ROUTINE 55600013 SPACE 1 55800013 RDUSREOF OI WUSREOF,X'01' SET USER EOF SWITCH 56000013 MVC RDUSREXT,RDOVLAY4 OVLAY USER EXIT-BYPASS EXIT E15 56200013 TM WSYSEOF,X'01' TEST IF SYSTEM EOF SWITCH ON 56400013 BC 1,RDCNTSRT YES,BR TO EOF FLUSH RTN 56600013 L RB,WINPTRCD RESTORE ADDR OF RCD IN INPUT BLK 56800013 B RDALSHNO BR TO SORT THIS RCD 57000013 SPACE 2 57200013 RDISWON OI WINSRTSW,X'01' TURN INSERT SWITCH ON 57400013 LA RI,1(0,RI) INCR INSERT CTR BY ONE 57600013 RDSTM STM RG,RI,PPICOUNT SAVE COUNTERS 57800013 ST RJ,PPINMAX SAVE NMAX CTR 58000013 SPACE 1 58200013 * INITALIZE AND BR TO MOVE RTN TO MOVE NEXT INPUT RCD TO RSA 58400013 SPACE 1 58600013 RDOVLAY5 B RDDLDRSA BR TO GET ADDR IN RSA TO MOVE RCD 58800013 * WILL BE OVLAYED BY L RF,WINNER 59000013 * AFTER G+1 RCDS 59200013 RDDLDRE LR RE,RB ADDR OF RCD IN INPUT BUFFER OR FROM 59400013 * USER'S WORK AREA 59600013 L RP,PPIBDSVA+4 ADDR OF MOVE RTN IN GENERATED CORE 59800013 BALR RO,RP BR TO MOVE RTN.MOVE RCD TO RSA 60000013 RDOVLAY6 B RDFILLTR BR TO SORT NETWORK FILLING TREE RTN 60200013 * WILL BE OVLAYED BY NOP AFTER 60400013 * TREE IS INITIALLY FILLED 60600013 SPACE 2 60800013 * NORMAL EXIT TO SORT NETWORK AFTER PREVIOUS INSTR IS OVERLAYED BY NOP 61000013 SPACE 1 61200013 LR RC,RB ADDR OF RCD IN INPUT BUFFER 61400013 L RD,WINNER 61600013 L RL,PPINET+4 ADDR OF SORT NETWORK 61800013 B 12(RL) BR TO SORT NETWORK NORMAL RTN 62000013 SPACE 2 62200013 * EXIT TO SORT NETWORK WHILE FILLING TREE 62400013 SPACE 1 62600013 RDFILLTR LR RC,RB ADDR OF RCD IN INPUT BUFFER 62800013 A RD,PPIBINSZ UPDATE TO NEXT BIN IN THIS RSA 63000013 ST RD,0(0,RK) SAVE IN RSA TABLE 63200013 S RD,PPIBINSZ RESTORE FOR NETWORK. ADDR OF THIS 63400013 * RCD IN RSA 63600013 L RL,PPINET+4 ADDR OF NETWORK 63800013 B 4(RL) BR TO SORT NETWORK FILL TREE RTN 64000013 SPACE 2 64200013 SPACE 2 64400013 * FINISHED FILLING TREE RTN -ONE TIME RTN 64600013 SPACE 1 64800013 RDOVLAYF NI RDOVLAY6+1,X'00' NOP THE BR INSTR TO THE FILLING EXIT 65000013 MVI RDDOVLAY+1,X'F0' OVLAY INSTR IN RSA TABLE ROUTINE 65200013 B RDLDCTRS BR TO GET G+1 RECORD. 65400013 SPACE 2 65600013 *RSA TABLE ROUTINE USED DURING FILLING OF TREE. ENTER HERE ONLY THROUGH 65800013 * G+1 RECORDS. 66000013 SPACE 1 66200013 RDDLDRSA L RK,ADCONPTR RSA TABLE PTR 66400013 RDDRTRN LM RD,RE,0(RK) RD=ADDR IN THIS RSA,RE=REMAINING 66600013 * BYTE COUNT OF THIS RSA. 66800013 S RE,PPIBINSZ SUBTR SIZE OF THIS RCD 67000013 BM RDNEWRSA BR IF MINUS-RCD CANT FIT IN THIS 67200013 RDDOVLAY BC 0,RDDLAST WILL BE A BR AFTER RSA HAS G RCDS 67400013 SPACE 2 67600013 ST RE,4(0,RK) SAVE REMAING BYTE COUNT OF THIS RSA 67800013 LR RF,RD ADDR IN RSA TO MOVE THE RCD 68000013 B RDDLDRE BR TO MOVE RCD TO RSA 68200013 SPACE 2 68400013 RDNEWRSA LA RK,8(0,RK) UPDATE RSA TABLE PTR TO NEXT RSA 68600013 * ENTRY(NEXT NON-CONTIGUOUS RSA) 68800013 ST RK,ADCONPTR SAVE UPDATED PTR 69000013 B RDDRTRN BR TO USE THIS RSA 69200013 SPACE 2 69400013 *WE ARE GOING TO PROCESS THE G+1 RECORD. 69600013 SPACE 1 69800013 RDDLAST ST RD,WINNER ADDR IN RSA TO MOVE RCD 70000013 MVC RDOVLAY5(4),K1 OVLAY BRANCH INSTR TO RSA TABLE RTN 70200013 B RDOVLAY5 BR TO MOVE G+1 RCD TO RSA. 70400013 SPACE 2 70600013 * FROM USER,ON NMAX RETURN,TO SORT CURRENT NO OF RCDS ONLY 70800013 SPACE 1 71000013 RDSETPPI OI PPISW1+3,X'02' TURN ESTIMATED FILE SWITCH ON IN PPI 71200013 TM WSYSEOF,X'01' WAS SYSTEM EOF REACHED 71400013 BC 1,RDCNTSRT YES,BR AROUND NEXT INSTRS-FLUSH TREE 71600013 BCTR RG,0 DECR PPICOUNT BY ONE 71800013 SPACE 1 72000013 * FROM GET ON END OF FILE 72200013 RDCNTSRT MVC RDNORMAL,K2 OVERLAY DEBLOCK MODULE 72400013 STM RG,RI,PPICOUNT SAVE COUNTERS 72600013 L RL,PPINET+4 ADDR OF NTWK 72800013 B 8(RL) BR TO NTWK TO EMPTY TREE 73000013 SPACE 2 73200013 RDEMPTYT L RL,PPINET+4 ADDR OF NTWK 73400013 B 16(RL) BR TO SORT TO CONTINUE EMPTYING TREE 73600013 SPACE 2 73800013 * WRITE MESSAGE NMAX EXCEEDED 74000013 SPACE 1 74200013 RDWSW1ON OI WSW1,X'01' TURN SWITCH 1 ON 74400013 RDMSGS L RD,PPIRMA+4 ADDR OF MESSAGE MODULE 74600013 LR RE,RB SAVE ADDR OF NMAX+1 RCD 74800013 LM RA,RB,MSGP1A04 NAME AND LENGTH OF MESSAGE 75000013 L RP,PPIADSSC LOAD PRINT RTN ADDR 75200013 BAL RO,12(0,RP) BR TO PRINT RTN 75400013 SPACE 1 75600013 * USER EXIT E16 -SORT CAPACITY, NMAX, HAS BEEN REACHED 75800013 * CALL MACRO INSTRUCTION EXPANSION 76000013 SPACE 1 76200013 LR RB,RE RESTORE ADDR OF NMAX+1 RCD 76400013 L RP,PPIX16+4 ADDR OF NMAX EXIT 76600013 BALR RO,RP BR TO USER 76800013 SPACE 2 77000013 * USER RETURNS TO MODULE VIA RETURNREG AND PROPER DISPLACEMENTS. 77200013 SPACE 1 77400013 B *+4(15) 77600013 B RDSETPPI SORT CURRENT NO OF RCDS ONLY 77800013 B RDIGNORE IGNORE NMAX AND CONTINUE TO SORT 78000013 SPACE 1 78200013 * ABORT THE JOB. SET UP ABNORMAL END INDICATION FOR SORT SYSTEM CONTROL 78400013 SPACE 1 78600013 L RP,PPIADSSC 78800013 BAL RO,16(0,RP) BR TO SORT SYSTEM CONTROL 79000013 SPACE 1 79200013 * IGNORE NMAX. OVERLAY NMAX TEST WITH A BYPASS BRANCH INSTR. 79400013 SPACE 1 79600013 RDIGNORE MVC RDTSTNMX(4),K3 OVERLAY NMAX TEST,INSERT RTN 79800013 CLC RDUSREXT,RDOVLAY4 HAS USER EXIT CODE BEEN OVERLAID? 80000013 BNE *+10 IF NOT, BRANCH AROUND NEXT INSTRUC 80200013 MVC RDUSREXT,K4 CHANGE OVERLAID INSTRUCTION 80400013 MVC RDOVLAY4(4),K4 OVERLAY NMAX TEST,DO NOTHG,ALTER RTN 80600013 TM WSW1,X'01' TEST SWITCH 1 80800013 BC 1,RDISWON ON,BR TO TURN INSERT SWITCH ON 81000013 B RDISWOFF BR TO TURN INSERT SWITCH OFF 81200013 SPACE 2 81400013 * DO NOTHING, ALTER, LENGTHEN, SHORTEN A RCD. ADDR OF INPUT RCD IN RB. 81600013 SPACE 1 81800013 RDALSHNO BCT RJ,RDISWOFF DECR NMAX CTR BY ONE AND TST TO SEE 82000013 * IF REACHED NMAX 82200013 B RDMSGS YES, BR TO NMAX USER EXIT E16 82400013 SPACE 2 82600013 RDISWOFF NI WINSRTSW,X'00' TURN OFF INSERT SWITCH 82800013 B RDSTM BR TO LOAD ADDR OF FREE AREA IN RSA 83000013 SPACE 2 83200013 * DELETE A RECORD 83400013 SPACE 1 83600013 RDDELETE NI WINSRTSW,X'00' TURN OFF INSERT SWITCH 83800013 LA RH,1(0,RH) INCR DELETE CTR BY ONE 84000013 B RDGET BR TO GET ANOTHER RECORD 84200013 SPACE 1 84400013 * END OF CODING --- ADCONS NEXT PAGE 84600013 EJECT 84800013 * LIST OF ADCONS USED BY THE MODULE 85000013 SPACE 1 85200013 ADCONPTR DC A(TABLRSA) ADDR OF RSA TABLE 85400013 * LIST OF CONSTANTS USED BY THE MODULE 85600013 SPACE 1 85800013 K1 L RF,WINNER OVERLAY WHEN FINISHED FILLING TREE 86000013 K2 B RDEMPTYT OVERLAY TO EMPTYTREE ON GET EOF 86200013 K3 B RDISWON BYPASS NMAX TEST IN INSERT RTN 86400013 K4 B RDISWOFF BYPASS NMAX TEST IN DO NOTHG,ETC RTN 86600013 K5 B RDUSREXT OVERLAY INSERT SW TEST BY A.P. IF 86800013 * ATTACHED 87000013 SPACE 2 87200013 * LIST OF WORK AREAS 87400013 SPACE 1 87600013 WSW1 DC X'00' SWITCH 1 IN INSERT RTN 87800013 WINSRTSW DC X'00' INSERT SWITCH 88000013 WUSREOF DC X'00' USER END OF FILE SW. SET BY A.P. IF 88200013 * EXIT E15 IS INACTIVE. 88400013 WSYSEOF DC X'00' SYSTEM END OF FILE SWITCH 88600013 WINNER DC F'0' SORT WINNER RCD ADDR 88800013 WDCB DC F'0' CONTAINS ADDR OF DCB FOR INPUT FILE 89000013 * LOADED BY ASSIGNMENT ROUTINE 89200013 WRJ DC 2F'0' SAVE TRANPARENT REGS 89400013 WINPTRCD DC F'0' ADDR OF RCD IN INPUT AREA 89600013 TABLRSA DC 10F'0' SPACE AVAILABLE FOR 5 NON-CONTIGUOUS 89800013 * RSA ENTRIES.EACH ENTRY 8 BYTES. 90000013 * 4 BYTES- ADDR IN BIN TO MOVE RCD 90200013 * 4 BYTES- REMAINING BYTE COUNT OF 90400013 * THIS RSA. 90600013 * THIS TABLE INITIALIZED BY IERADD 90800013 EJECT 91000013 * MODULE NAME ***IERRMA*** 91200013 * 91400013 * THIS MODULE CONTAINS ALL OF THE MESSAGES THAT ARE REQUIRED FOR 91600013 * PHASE 1 RUNNING PROGRAM. 91800013 SPACE 1 92000013 IERRMA DSECT 92200013 COPY RMAMAIN 92400013 EJECT 92600013 SMPPI 92800013 END IERADD 93000013 ./ ADD SSI=02012863,NAME=IERADE,SOURCE=0 TITLE ' IERADE - OS/360 SORT/MERGE - 360S-SM023 05/08/66' 00200013 SPACE 2 00400013 *MODULE NAME *** IERADE *** 00600013 SPACE 2 00800013 *STATUS:CHANGE LEVEL 000 01000013 SPACE 2 01200013 *MODULE FUNCTION/OPERATION: PHASE 1 ASSIGNMT MODULE. V.L W/E15 &/OR E16 01400013 * THE FUNCTION OF THIS MODULE IS TO CALCULATE THE NUMBER OF BINS IN 01600013 * UP TO 5 NON-CONTIGUOUS RECORD STORAGE AREAS AND CHAIN ALL THESE 01800013 * BINS TOGETHER. IT PUTS THE ADDRESS OF THE FIRST BIN IN THE FIRST 02000013 * RSA IN AVAIL(PPIBDSVA+4). INPUT BUFFERS ARE SET UP VIA THE BUILD 02200013 * MACRO. EXTRACT SIZE + 4 IS CALCULATED AND STORED IN THE RUNNING 02400013 * PROGRAM. EXITS E15 AND E16 ARE TESTED AND A TEST IS MADE TO SEE IF 02600013 * SORT HAS BEEN ATTACHED. AS A RESULT OF THESE TESTS PROPER OVERLAYS 02800013 * WILL BE MADE AND NMAX+1 MAY BE STORED IN RUNNING PROGRAM,IERRDE. 03000013 SPACE 1 03200013 * THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A PARTICULAR 03400013 * INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER SET. 03600013 SPACE 2 03800013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 04000013 SPACE 1 04200013 * NONE 04400013 SPACE 2 04600013 *LIST OF MACROS USED BY MODULE: 04800013 SPACE 1 05000013 * SMPPI 05200013 * BUILD 05400013 SPACE 2 05600013 *ENTRY POINTS: 05800013 SPACE 1 06000013 * FROM IERRC9 ENTRY FROM:IERRC9 06200013 * CALLING SEQUENCE- 06400013 * LOAD EP=IERADD,DCB=SORTLIB 06600013 * LR RP,RA 06800013 * BALR RO,RP 07000013 SPACE 2 07200013 *INPUT: - PPI FIELDS REFERENCED 07400013 SPACE 1 07600013 * PPINMAX PPILAB03 PPIMODEX 07800013 * PPIBINSZ PPILAB06 PPILEXFF 08000013 * PPIATPIE PPILAB08 08200013 SPACE 1 08400013 * ADDRESSES FOR BUFFERS AND TABLES,INFO FOR USER EXITS AND FOR THE 08600013 * RSA CHAINING ROUTINE AND FOR THE BUILD MACRO 08800013 SPACE 2 09000013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 09200013 SPACE 1 09400013 * PPIBDSVA 09600013 SPACE 1 09800013 * INITIALIZE START OF RSA(AVAIL) AND TOTAL NUMBER OF BINS IN ALL THE 10000013 * RSA'S. 10200013 SPACE 2 10400013 *EXTERNAL ROUTINES: 10600013 SPACE 1 10800013 * NONE 11000013 SPACE 2 11200013 *EXTERNAL PARAMETERS: 11400013 SPACE 1 11600013 * SEE REGISTERS 11800013 SPACE 2 12000013 *EXITS-NORMAL: 12200013 SPACE 1 12400013 * TO IERRC9 EXIT TO:IERRC9 12600013 * CALLING SEQUENCE- 12800013 * BR RO RETURN 13000013 SPACE 2 13200013 *EXITS-ERROR: 13400013 SPACE 1 13600013 * NONE 13800013 SPACE 2 14000013 *TABLES/WORK AREAS: 14200013 SPACE 1 14400013 * WCOMBINE-WORK AREA 14600013 SPACE 2 14800013 *ATTRIBUTES: THIS IS A CLASS A MODULE 15000013 SPACE 2 15200013 *NOTES: THIS MODULE WILL EXECUTE FOR ANY VARIABLE LENGTH SORT HAVING 15400013 * USER EXITS E15 AND/OR E16, OR ATTACHED 15600013 EJECT 15800013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 16000013 SPACE 1 16200013 RA EQU 0 CONTENTS IN-N/A 16400013 * USE-NO. OF BUFFERS AND BUFFER SIZE 16600013 * FOR BUILD MACRO 16800013 * CONTENTS OUT-N/A 17000013 RB EQU 1 CONTENTS IN-N/A 17200013 * USE-ADDR OF INPUT BUFFER POOL FOR 17400013 * BUILD MACRO. 17600013 * CONTENTS OUT-N/A 17800013 RC EQU 2 CONTENTS IN-N/A 18000013 * USE-NOT USED 18200013 * CONTENTS OUT-N/A 18400013 RD EQU 3 CONTENTS IN-N/A 18600013 * USE-NO. OF RSA AREAS -RSA TABLE CALC 18800013 * CONTENTS OUT-N/A 19000013 RE EQU 4 CONTENTS IN-N/A 19200013 * USE-WORK REGISTER 19400013 * CONTENTS OUT-N/A 19600013 RF EQU 5 CONTENTS IN-N/A 19800013 * USE-NO. OF BYTES COUNTER IN 1 RSA 20000013 * CONTENTS OUT-N/A 20200013 RG EQU 6 CONTENTS IN-N/A 20400013 * USE-CURRENT BIN ADDR IN AN RSA-USED 20600013 * IN RSA TABLE CALC. 20800013 * CONTENTS OUT- N/A 21000013 RH EQU 7 CONTENTS IN-N/A 21200013 * USE-PTR TO RSA TABLE IN PPI-UPDATE 21400013 * FOR EACH RSA. 21600013 * CONTENTS OUT- N/A 21800013 RI EQU 8 CONTENTS IN- N/A 22000013 * USE- GENERAL WORK REGISTER 22200013 * CONTENTS OUT-N/A 22400013 RJ EQU 9 CONTENTS IN- N/A 22600013 * USE-NOT USED 22800013 * CONTENTS OUT-N/A 23000013 RK EQU 10 CONTENTS IN- N/A 23200013 * USE-IERRDE DSECT BASE REGISTER 23400013 * CONTENTS OUT-N/A 23600013 RL EQU 11 CONTENTS IN-N/A 23800013 * USE-MODULE BASE REGISTER 24000013 * CONTENTS OUT-N/A 24200013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 24400013 * USE-NOT USED 24600013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 24800013 RN EQU 13 CONTENTS IN-ADDR OF PPI 25000013 * USE-PPI REFERENCES,REG SAVE AREA 25200013 * CONTENTS OUT-ADDR OF PPI 25400013 RO EQU 14 CONTENTS IN-IERRC9 RETURN ADDR 25600013 * USE-NOT USED 25800013 * CONTENTS OUT-IERRC9 RETURN ADDR 26000013 RP EQU 15 CONTENTS IN-IERADE ENTRY PT 26200013 * USE-ESTABLISH IERADE BASE REG 26400013 * CONTENTS OUT-N/A 26600013 SPACE 2 26800013 *START OF MODULE CODE PROPER: 27000013 SPACE 2 27200013 IERADE CSECT 27400013 * A35520 27500021 USING *,RL THIS MODULE BASE REGISTER 27600013 USING IERRDE,RK IERRDE DSECT BASE REGISTER 27800013 USING IERRCA,RN PPI ADDR 28000013 IERMDA LR RL,RP ESTABLISH THIS MODULE BASE REGISTER 28200013 L RK,PPIDEB+4 ADDR OF IERRDE CSECT 28400013 SPACE 2 28600013 *CHAIN ALL BINS TOGETHER BY PUTTING IN EACH BIN THE ADDR OF THE NEXT 28800013 * AVAILABLE BIN. SAVE THE ADDRESS OF THE 1ST AVAILABLE BIN IN 29000013 * PPIBDSVA+4,AND THE TOTAL NO. OF AVAILABLE BINS IN PPIBDSVA+8. 29200013 SPACE 1 29400013 SR RD,RD 29600013 IC RD,PPILAB08 NO. OF RSA AREAS 29800013 L RH,PPILAB08 PTR TO RSA TABLE IN PPI 30000013 L RG,0(0,RH) ADDR OF THIS RSA AREA BIN 30200013 ST RG,PPIBDSVA+4 SAVE THIS ADDR IN AVAIL(FOR IERRDE) 30400013 ADELOOPO L RF,4(0,RH) NO. OF BYTES IN THIS RSA AREA 30600013 C RF,PPIBINSZ IS RSA < BINSIZE ? A35520 30660021 BL ADELOOPJ IF YES BRANCH A35520 30720021 LA RI,ADELOOPI LOAD RETURN REG FOR THIS LOOP CALC 30800013 SR RE,RE 31000013 D RE,PPIBINSZ RE=NO.OF BINS IN THIS RSA AREA 31200013 L RE,PPIBDSVA+8 TOTAL NO.OF BINS IN ALL RSA'S SO FAR 31400013 AR RE,RF UPDATE BIN COUNT 31600013 ST RE,PPIBDSVA+8 SAVE UPDATED BIN COUNT 31800013 ADELOOPI BCT RF,ADECHAIN DECR NO. OF BINS CTR FOR THIS RSA. 32000013 * BR IF MORE BINS IN THIS RSA. 32200013 ADELOOPJ BCT RD,ADNXTRSA DECR NO. OF RSA'S CTR. BR IF A35520 32400021 * RSA'S. THE LAST BIN IN LAST RSA 32600013 * HAS NO CHAIN ADDR 32800013 A RF,PPIATP1E ARE WE ATTACHED 33000013 BC 7,ADENOBLD YES-DON'T BUILD BUFFERS 33200013 MVC WCOMBINE+1(1),PPILAB03 33400013 MVC WCOMBINE+2(2),PPILAB03+2 33600013 L RA,WCOMBINE POSITION NO. AND SIZE OF BUFFERS 33800013 L RB,PPILAB02 ADDR OF INPUT BUFFER POOL ADDR TABLE 34000013 BUILDS (1),(0) 34200013 SPACE 2 34400013 ADENOBLD LH RE,PPILEXFF GET EXTRACT SIZE 34600013 A RE,KFOUR 34800013 STH RE,EXPLFOUR STORE EXTRACT SIZE + 4 35000013 TM PPIMODEX,X'20' TEST IF NMAX EXIT ACTIVATED 35200013 BC 1,ADESTNM GO STORE NMAX IN R.P.-IT'S ACTIVE 35400013 MVC RDEMAXCK(4),K2 OVERLAY NMAX TEST IN INSERT LEG 35600013 MVC RDEDONO(4),K3 OVERLAY NMAX TEST IN ALTER LEG 35800013 ADETATT CLC PPIATP1E,KZERO TEST IF ATTACHED 36000013 BC 7,ADEATACH IT IS ATTACHED 36200013 TM PPIMODEX,X'40' TEST FOR USER RCD MOD EXIT 36400013 BC 1,ADEEXIT BRANCH TO EXIT 36600013 MVC RDEUEXIT(4),K4 OVERLAY USER EXIT 15 WITH A BRANCH 36800013 MVC RDEMSG(4),K6 37000013 MVI WUSREOF,X'00' TURN ON USER EOF SWITCH 37200013 MVI RDEISWON,X'58' CHANGE INSTRUCTION TO L RB,ADRHOLD 37400013 ADEEXIT L RE,PPISTDCB ADDR DCB TABLE A26453 37440019 L RE,0(RE) A26453 37480019 ST RE,KAWORK+4 INIT. DCB IN R.P. A26453 37520019 TM PPIMODEX+2,X'02' VRE IN? A26453 37560019 BZ ADERETUR NO... A26453 37600019 L RE,PPIGETMN YES... A26453 37640019 L RE,12(RE) GET ADDRESS OF VRE WORK A26453 37680019 ST RE,KAWORK FROM GETMN AND INIT. R.P. A26453 37720019 ADERETUR BR RO RETURN TO IERRC9 A26453 37760019 SPACE 2 37800013 ADESTNM L RE,PPINMAX LOAD NMAX 38000013 LA RE,1(0,RE) PLUS 1 (FOR USING BCT INSTRUCTION) 38200013 ST RE,PPINMAX 38400013 B ADETATT GO TEST FOR ATTACHED 38600013 SPACE 2 38800013 ADEATACH MVC PPIX15+4(4),PPIATP1E E15 NOW IS ATTACHED 39000013 MVI WINPEOF,X'00' TURN ON SYSTEM EOF SWITCH 39200013 MVC RDENORM(4),K5 OVERLAY INSRT SW TEST-BR ARND GET 39400013 B ADEEXIT BRANCH TO EXIT 39600013 SPACE 2 39800013 ADNXTRSA LA RI,ADEREAL RESET RETURN REG FOR THIS LOOP 40000013 SPACE 2 40200013 *INSERT CHAIN ADDR IN EACH BIN OF EACH RSA EXCEPT THE LAST BIN OF THE 40400013 * LAST RSA. 40600013 SPACE 1 40800013 ADECHAIN A RG,PPIBINSZ ADDR OF THIS BIN + BIN SIZE 41000013 LR RE,RG SAVE ADDR OF THE NEXT BIN 41200013 S RE,KFOUR PTS TO AREA IN PREVIOUS BIN TO PUT 41400013 * THE CHAIN ADDR OF NEXT BIN(IN RG) 41600013 ST RG,0(0,RE) PREVIOUS BIN NOW CHAINED TO NEXT BIN 41800013 BR RI BR TO ADELOOPI ON ALL BINS EXCEPT 42000013 * THE LAST BIN IN EACH RSA OTHERWISE 42200013 * BR TO ADEREAL ON THIS LAST BIN 42400013 SPACE 2 42600013 *OVERLAY LAST BIN CHAIN ADDR OF THIS RSA WITH PROPER ADDRESS.(1ST BIN 42800013 * ADDR OF NEXT RSA) 43000013 SPACE 1 43200013 ADEREAL LA RH,8(0,RH) UPDATE PPI RSA TABLE PTR TO NEXT 43400013 * RSA ENTRY 43600013 L RG,0(0,RH) ADDR OF 1ST BIN IN NEXT RSA 43800013 ST RG,0(0,RE) STORE AS CHAIN ADDR IN LAST BIN OF 44000013 * PREVIOUS RSA. 44200013 B ADELOOPO BR TO CHAIN BINS OF THIS RSA 44400013 SPACE 2 44600013 *LIST OF CONSTANTS: 44800013 SPACE 1 45000013 KFOUR DC F'4' CONSTANT 4 45200013 KZERO DC F'0' CONSTANT 0 45400013 SPACE 2 45600013 *LIST OF WORK AREAS/TABLES: 45800013 SPACE 1 46000013 WCOMBINE DC F'0' WORK AREA 46200013 EJECT 46400013 IERRDE DSECT 46600013 USING *,RL THIS MODULE BASE REG 46800013 USING IERRCA,RN ADDR OF PPI 47000013 USING IERRMA,RO MESSAGE MODULE ADR 47200013 IERDD1 B RDEOLAY GO TO OVERLAY EXITS 47400013 B RDEEOF GO TO EOF ROUTINE 47600013 RDENTER CLI NOFITSW,X'01' CHECK NO FIT SWITCH 47800013 BL RDENORM NO FIT SWITCH OFF 48000013 BH RDESPEC NO. OF BINS WAS=0 48200013 SR RE,RE 48400013 A RE,PPIBDSVA+8 48600013 BZ RDEBINZ BIN COUNT STILL=0 48800013 L RA,WSAVE 49000013 L RE,WSAVE+4 RELOAD REGS TO CONTINUE MOVE 49200013 L RC,WSAVE+8 LOC FOR CHAIN ADR-USED AFTER PARTIAL 49400013 L RD,PPIBDSVA+4 ADR OF NEXT AVAIL BIN 49600013 ST RD,0(0,RC) INSERT CHAIN ADDRESS 49800013 LA RB,8(0) INDICATE DEBLOCK WITH NOFIT PREVIOUS 50000013 L RF,PPIBDSVA+4 LOAD ADR OF NEXT BIN IN RSA 50200013 RDEMOVE L RP,PPIBDSVA+12 LOAD ADR OF MOVE ROUTINE 50400013 BALR RO,RP BRANCH TO MOVE ROUTINE 50600013 B RDENOTF RECORD DIDN'T FIT 50800013 SPACE 51000013 * RECORD FIT ROUTINE 51200013 SPACE 51400013 CLI NOFITSW,X'01' CHECK NO FIT SWITCH 51600013 BC 7,RDEUSUAL LAST MOVE WAS NOT A NO FIT 51800013 L RD,WSAVAIL GET RSA STARTING ADR OF RECORD 52000013 SR RC,RC 52200013 ST RC,WSAVAIL ZERO OUT WSAVAIL 52400013 B RDEUSUAL+4 RD ALREADY LOADED 52600013 RDEUSUAL L RD,PPIBDSVA+4 BEGIN ADR OF RCD JUST MOVED 52800013 AH RD,EXPLFOUR ADD EXT SIZE & 4 53000013 L RC,ADRHOLDB LOAD BUFFER ADDRESS 53200013 L RE,PPIBDSVA+8 53400013 SR RE,RB 53600013 ST RE,PPIBDSVA+8 UPDATE BIN COUNT 53800013 L RE,0(0,RF) 54000013 ST RE,PPIBDSVA+4 UPDATE AVAIL 54200013 NI NOFITSW,X'00' TURN OFF NO FIT SWITCH 54400013 L RL,PPINET+4 54600013 RDEFIT B 4(0,RL) EXIT TO SORT ON RECORD FIT CONDITION 54800013 SPACE 55000013 * RECORD NO FIT ROUTINE 55200013 SPACE 55400013 RDENOTF ST RA,WSAVE 55600013 STM RE,RF,WSAVE+4 SAVE INFO FOR NEXT MOVE 55800013 SR RD,RD 56000013 ST RD,PPIBDSVA+8 BINS AVAIL=0 56200013 OI NOFITSW,X'01' SET NOFITSW=01 56400013 A RD,WSAVAIL 56600013 BC 7,RDEBINZ MORE THAN ONE NO FIT ON SAME RECORD 56800013 L RD,PPIBDSVA+4 57000013 ST RD,WSAVAIL SAVE RSA ADR OF START OF RECORD 57200013 RDEBINZ L RL,PPINET+4 57400013 B 24(0,RL) EXIT TO SORT ON RECORD NO FIT 57600013 RDESPEC SR RE,RE 57800013 A RE,PPIBDSVA+8 CHECK BIN COUNT 58000013 BZ RDEBINZ BIN COUNT STILL ZERO 58200013 NI NOFITSW,X'00' ZERO NOFITSW-BIN COUNT NO LONGER 0 58400013 L RE,ADRHOLDA RELOAD BUFFER ADDRESS 58600013 RDEPTB L RF,PPIBDSVA+4 58800013 AH RF,EXPLFOUR ADD EXT SIZE & 4 TO AVAIL ADR 59000013 ST RE,ADRHOLDB SAVE BUFFER ADDRESS 59200013 SR RB,RB INDICATE DEBLOCK TO MOVE ROUTINE 59400013 B RDEMOVE CONTINUE PREP FOR MOVE 59600013 RDENORM CLI INSERTSW,X'00' 59800013 BH RDEISWON 60000013 RDEGET LM RA,RB,KAWORK DCB ADDR AND/OR VRE WORK ADDR A26453 60200019 GET (1),(0) GET RECORD GL OR GM A26453 60500019 L RJ,PPICOUNT 60800013 LA RJ,1(0,RJ) 61000013 ST RJ,PPICOUNT ADD 1 TO RECORD COUNT 61200013 ST RB,ADRHOLD 61400013 RDEISWON LA RB,ADRHOLD SET UP PARAMETER FOR USER MOD 61600013 * WILL BE L RB,ADRHOLD ON USER EOF 61800013 L RJ,PPINMAX RESTORE NMAX REG 62000013 LTR RJ,RJ TEST FOR 0 OR NMAX 62200013 BC 2,RDEUEXIT IF NMAX PLUS EXIT 62400013 LA RJ,1 NMAX MUST BE AT LEAST 1 62600013 SPACE 62800013 * USER MOD EXIT E15 USING CALL MACRO EXPANSION INSTRUCTIONS. 63000013 * ADDRESS OF INPUT RECORD PASSED IN RB 63200013 SPACE 63400013 RDEUEXIT L RP,PPIX15+4 OVERLAYED IF THIS EXIT NOT ACTIVATED 63600013 * OR IF USER EOF REACHED. 63800013 BALR RO,RP BRANCH TO USER 64000013 SPACE 64200013 * USER RETURNS VIA RO WITH PROPER DISPLACEMENT IN RP. HE ALSO PASSES, 64400013 * IN REG RB, THE ADR OF THE RECORD TO BE INSERTED OR THE ADR OF THE 64600013 * WORK AREA IF THE USER HAS ALTERED THE RECORD. 64800013 SPACE 65000013 B *+4(15) 65200013 B RDEDONO ALTER OR DO NOTHING 65400013 B RDELETE DELETE A RECORD 65600013 B RDEUEOF USER END OF FILE 65800013 SPACE 66000013 * INSERT A RECORD 66200013 SPACE 66400013 RDEMAXCK BCT RJ,RDEINSRT CHECK FOR NMAX AND DECREMENT 66600013 B RDEMSG NMAX RCHD-GO TO OUTPUT MESS AND E16 66800013 RDEINSRT OI INSERTSW,X'01' SET INSERT SWITCH 67000013 L RF,PPIINSCT 67200013 LA RF,1(0,RF) 67400013 ST RF,PPIINSCT ADD 1 TO INSERT COUNT 67600013 RDETSTBC LR RE,RB SET UP BUFF ADR FOR MOVE 67800013 ST RJ,PPINMAX SAVE NMAX REG 68000013 SR RF,RF 68200013 A RF,PPIBDSVA+8 TEST BIN COUNT 68400013 BC 7,RDEPTB BRANCH ON BIN COUNT NOT EQUAL 0 68600013 ST RE,ADRHOLDA SAVE RCD ADR UNTIL BIN IS AVAILABLE 68800013 OI NOFITSW,X'03' SET NO FIT SWITCH = 11 69000013 B RDEBINZ GO TO NO FIT EXIT 69200013 RDEDONO BCT RJ,RDENOTM CHECK FOR NMAX AND DECREMENT 69400013 B RDEMSG NMAX RCHD-GO TO OUTPUT MESS AND E16 69600013 RDENOTM NI INSERTSW,X'00' ZERO INSERT SWITCH 69800013 B RDETSTBC GO CHECK BIN COUNT 70000013 RDELETE NI INSERTSW,X'00' ZERO INSERT SWITCH 70200013 L RF,PPIDELCT 70400013 LA RF,1(0,RF) 70600013 ST RF,PPIDELCT ADD 1 TO DELETE COUNT 70800013 B RDEGET GO GET ANOTHER RECORD 71000013 RDEMSG STH RP,WINSALT SAVE INSERT-ALTER CONDITION 71200013 L RO,PPIRMA MESSAGE MODULE ADDR 71400013 LR RE,RB SAVE BUFF ADR 71600013 LM RA,RB,MSGP1A04 71800013 L RP,PPIADSSC LOAD PRINT RTN ADR 72000013 BAL RO,12(0,RP) BR TO PRINT RTN 72200013 SPACE 72400013 * USER EXIT E16-SORT CAPACITY, NMAX, HAS BEEN REACHED 72600013 * CALL MACRO INSTRUCTION EXPANSION 72800013 SPACE 73000013 LR RB,RE RESTORE BUFF ADR 73200013 L RP,PPIX16+4 NMAX EXIT ADDR 73400013 BALR RO,RP BRANCH TO USER 73600013 SPACE 73800013 * USER RETURNS TO MODULE VIA RO WITH PROPER DISPLACEMENT IN RP 74000013 SPACE 74200013 B *+4(15) 74400013 B RDSETPPI SORT CURRENT NO OF RCDS ONLY 74600013 B RDEIGNOR IGNORE NMAX-CONTINUE SORT 74800013 SPACE 75000013 * ABORT THE JOB 75200013 SPACE 75400013 L RP,PPIADSSC 75600013 BAL RO,16(0,RP) EXIT TO SORT SYSTEM CONTROL 75800013 RDESRTCR MVC RDENTER(4),K1 OVERLAY ENTRANCE 76000013 SPACE 2 76200013 *INTERFACE TO NETWORK 76400013 SPACE 1 76600013 L RL,PPINET+4 ADDR OF NETWORK 76800013 B 8(0,RL) BR TO SORT NTWK TO STRT EMPTY TREE 77000013 SPACE 2 77200013 RDEMPTYT L RL,PPINET+4 ADDR OF NETWORK 77400013 B 16(0,RL) BRANCH TO SORT TO CONT. EMPTY TREE 77600013 SPACE 77800013 * FROM USER,ON NMAX RETURN,TO SORT CURRENT NO OF RCDS ONLY 78000013 SPACE 1 78200013 RDSETPPI OI PPISW1+3,X'02' TURN ESTIMATED FILE SWITCH ON IN PPI 78400013 CLI WINPEOF,X'00' WAS SYSTEM INPUT EOF REACHED 78600013 BC 8,RDESRTCR YES,DO NOT DECR PPICOUNT-FLUSH TREE 78800013 L RE,PPICOUNT RCD IN INPUT BFR WILL NOT BE SORTED 79000013 BCTR RE,0 DECR PPICOUNT BY ONE 79200013 ST RE,PPICOUNT RESTORE PPICOUNT 79400013 B RDESRTCR BR TO FLUSH TREE 79600013 SPACE 1 79800013 * IGNORE NMAX-OVERLAY NMAX TEST WITH A BRANCH 80000013 SPACE 80200013 RDEIGNOR MVC RDEMAXCK(4),K2 OVERLAY NMAX CK IN INSERT LEG 80400013 MVC RDEDONO(4),K3 OVERLAY NMAX CK IN ALTER LEG 80600013 SR RF,RF 80800013 AH RF,WINSALT 81000013 BZ RDENOTM RESUME WITH INPUT RECORD 81200013 B RDEINSRT RESUME WITH INSERT RECORD 81400013 RDEOLAY LA RE,12(0) 81600013 STC RE,RDEFIT+3 OVERLAY FILLING-FIT EXIT 81800013 LA RE,28(0) 82000013 STC RE,RDESPEC-1 OVERLAY FILLING-NO FIT EXIT 82200013 B RDENTER BRANCH TO NORMAL ENTRANCE 82400013 RDEUEOF CLI WINPEOF,X'00' HAVE WE REACHED INPUT EOF 82600013 BE RDESRTCR YES-GO EMPTY TREE 82800013 SR RF,RF 83000013 STC RF,WUSREOF INDICATE USER EOF 83200013 MVC RDEUEXIT(4),K4 OVERLAY AFTER USER EOF 83400013 MVC RDEMSG,K6 83600013 L RB,ADRHOLD RESTORE ADDR OF RCD IN INPUT BLK 83800013 MVI RDEISWON,X'58' CHANGE LA INSTRUCTION TO L 84000013 B RDENOTM BRANCH TO MOVE INPUT RECORD 84200013 RDEEOF CLI WUSREOF,X'00' HAS USER REACHED EOF 84400013 BE RDESRTCR GO OVERLAY ENTRANCE 84600013 SR RF,RF 84800013 STC RF,WINPEOF INDICATE INPUT EOF 85000013 MVC RDEGET(4),K5 OVERLAY AFTER INPUT EOF 85200013 SR RB,RB 85400013 ST RB,ADRHOLD INPUT EOF INDICATION TO USER 85600013 B RDEISWON GO TO SET UP FOR BRANCH TO USER 85800013 SPACE 2 86000013 *LIST OF WORK AREAS/TABLES: 86200013 SPACE 1 86400013 NOFITSW DC X'00' 86600013 INSERTSW DC X'00' 86800013 EXPLFOUR DC H'0' 87000013 WSAVE DC 3F'0' FOR MOVE RTN 87200013 ADRHOLD DC F'0' FOR BUFFER ADR 87400013 ADRHOLDA DC F'0' RECORD ADR WHEN BIN COUNT=0 87600013 ADRHOLDB DC F'0' RECORD ADR FOR MOVE RTN AND SORT RTN 87800013 WUSREOF DC X'01' USER EOF SWITCH 88000013 WINPEOF DC X'01' INPUT EOF SWITCH 88200013 WINSALT DC H'0' INSERT-ALTER SWITCH 88400013 WSAVAIL DC F'0' SAVE AREA FOR RSA RECORD ADDRESS 88600013 SPACE 2 88800013 *LIST OF CONSTANTS: 89000013 K1 B RDEMPTYT OVERLAY TO EMPTY TREE 89200013 K2 B RDEINSRT OVERLAY IN INSERT LEG 89400013 K3 B RDENOTM OVERLAY IN ALTER LEG 89600013 K4 B RDEDONO OVERLAY AFTER USER EOF 89800013 K5 B RDEISWON OVLY AFTER INPUT E O F 90000013 K6 BC 0,0 90200013 KAWORK DC 2F'0' FOR DCB AND VRE WORK ADDRS A26453 90300019 EJECT 90400013 * MODULE NAME ***IERRMA*** 90600013 * 90800013 * THIS MODULE CONTAINS ALL OF THE MESSAGES THAT ARE REQUIRED FOR 91000013 * PHASE 1 RUNNING PROGRAM. 91200013 SPACE 1 91400013 IERRMA DSECT 91600013 * 91800013 COPY RMAMAIN 92000013 EJECT 92200013 SMPPI 92400013 END 92600013 ./ ADD SSI=03010351,SOURCE=1,NAME=IERADG TITLE ' IERADG - OS/360 SORT/MERGE - 360S-SM023 05/08/66' 00300013 SPACE 2 00600013 *MODULE NAME *** IERADG *** 00900013 SPACE 2 01200013 *STATUS:CHANGE LEVEL 000 01500013 SPACE 2 01800013 *MODULE FUNCTION/OPERATION: PHASE 1 ASSIGNMENT MODULE. V.L.NO PH1 EXITS 02100013 * THE FUNCTION OF THIS MODULE IS TO CALCULATE THE NUMBER OF BINS IN 02400013 * UP TO 5 NON-CONTIGUOUS RECORD STORAGE AREAS AND CHAIN ALL THESE 02700013 * BINS TOGETHER. IT PUTS THE ADDRESS OF THE FIRST BIN IN THE FIRST 03000013 * RSA IN AVAIL(PPIBDSVA+4). INPUT BUFFERS ARE SET UP VIA THE BUILD 03300013 * MACRO. EXTRACT SIZE+4 IS CALCULATED AND STORED IN THE RUNNING 03600013 * PROGRAM,IERRDG. 03900013 SPACE 1 04200013 * THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A PARTICULAR 04500013 * INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER SET. 04800013 SPACE 2 05100013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 05400013 SPACE 1 05700013 * NONE 06000013 SPACE 2 06300013 *LIST OF MACROS USED BY MODULE: 06600013 SPACE 1 06900013 * SMPPI 07200013 * BUILD 07500013 SPACE 2 07800013 *ENTRY POINTS: 08100013 SPACE 1 08400013 * FROM IERRC9 ENTRY FROM:IERRC9 08700013 * CALLING SEQUENCE- 09000013 * LOAD EP=IERADG,DCB=SORTLIB 09300013 * LR RP,RA 09600013 * BALR RO,RP 09900013 SPACE 2 10200013 *INPUT: - PPI FIELDS REFERENCED 10500013 SPACE 1 10800013 * PPIBINSZ PPILAB08 11100013 * PPILAB03 PPILEXFF 11400013 * PPILAB06 11700013 SPACE 1 12000013 * ADDRESSES FOR BUFFERS AND TABLES,FOR THE RSA CHAINING ROUTINE, AND 12300013 * FOR THE BUILD MACRO 12600013 SPACE 2 12900013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 13200013 SPACE 1 13500013 * PPIBDSVA 13800013 SPACE 1 14100013 * INITIALIZE START OF RSA(AVAIL) AND TOTAL NUMBER OF BINS IN ALL THE 14400013 * RSA'S 14700013 SPACE 2 15000013 *EXTERNAL ROUTINES: 15300013 SPACE 1 15600013 * NONE 15900013 SPACE 2 16200013 *EXTERNAL PARAMETERS: 16500013 SPACE 1 16800013 * SEE REGISTERS 17100013 SPACE 2 17400013 *EXITS-NORMAL: 17700013 SPACE 1 18000013 * TO IERRC9 EXIT TO:IERRC9 18300013 * CALLING SEQUENCE- 18600013 * BR RO RETURN 18900013 SPACE 2 19200013 *EXITS-ERROR: 19500013 SPACE 1 19800013 * NONE 20100013 SPACE 2 20400013 *TABLES/WORK AREAS: 20700013 SPACE 1 21000013 * WCOMBINE-WORK AREA 21300013 SPACE 2 21600013 *ATTRIBUTES: THIS IS A CLASS A MODULE 21900013 SPACE 2 22200013 *NOTES: THIS MODULE WILL EXECUTE FOR ANY VARIABLE LENGTH SORT HAVING 22500013 * NO PHASE 1 USER EXITS 22800013 EJECT 23100013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 23400013 SPACE 1 23700013 RA EQU 0 CONTENTS IN-N/A 24000013 * USE-NO. OF BUFFERS AND BUFFER SIZE 24300013 * FOR BUILD MACRO 24600013 * CONTENTS OUT-N/A 24900013 RB EQU 1 CONTENTS IN-N/A 25200013 * USE-ADDR OF INPUT BUFFER POOL FOR 25500013 * BUILD MACRO. 25800013 * CONTENTS OUT-N/A 26100013 RC EQU 2 CONTENTS IN-N/A 26400013 * USE-NOT USED 26700013 * CONTENTS OUT-N/A 27000013 RD EQU 3 CONTENTS IN-N/A 27300013 * USE-NO. OF RSA AREAS-RSA TABLE CALC 27600013 * CONTENTS OUT-N/A 27900013 RE EQU 4 CONTENTS IN-N/A 28200013 * USE-WORK REGISTER 28500013 * CONTENTS OUT-N/A 28800013 RF EQU 5 CONTENTS IN-N/A 29100013 * USE-NO. OF BYTES COUNTER IN 1 RSA 29400013 * CONTENTS OUT-N/A 29700013 RG EQU 6 CONTENTS IN-N/A 30000013 * USE-CURRENT BIN ADDRESS IN A RSA- 30300013 * USED IN RSA TABLE CALC. 30600013 * CONTENTS OUT-N/A 30900013 RH EQU 7 CONTENTS IN- N/A 31200013 * USE- GENERAL WORK REGISTER 31500013 * CONTENTS OUT-N/A 31800013 RI EQU 8 CONTENTS IN- N/A 32100013 * USE- NOT USED 32400013 * CONTENTS OUT- N/A 32700013 RJ EQU 9 CONTENTS IN- N/A 33000013 * USE- NOT USED 33300013 * CONTENTS OUT- N/A 33600013 RK EQU 10 CONTENTS IN- N/A 33900013 * USE-IERRDG BASE REGISTER 34200013 * CONTENTS OUT-N/A 34500013 RL EQU 11 CONTENTS IN-N/A 34800013 * USE-MODULE BASE REGISTER 35100013 * CONTENTS OUT-N/A 35400013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 35700013 * USE-NOT USED 36000013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 36300013 RN EQU 13 CONTENTS IN-ADDR OF PPI 36600013 * USE-PPI REFERENCES,REG SAVE AREA 36900013 * CONTENTS OUT-ADDR OF PPI 37200013 RO EQU 14 CONTENTS IN-IERRC9 RETURN ADDR 37500013 * USE-NOT USED 37800013 * CONTENTS OUT-IERRC9 RETURN ADDR 38100013 RP EQU 15 CONTENTS IN-IERADG ENTRY PT 38400013 * USE-ESTABLISH THIS MOD BASE REGISTER 38700013 * CONTENTS OUT-N/A 39000013 SPACE 2 39300013 *START OF MODULE CODE PROPER: 39600013 SPACE 2 39900013 IERADG CSECT 40200013 USING *,RL THIS MODULE BASE REGISTER 40500013 USING IERRDG,RK IERRDG DSECT BASE REGISTER 40800013 USING IERRCA,RN PPI ADDR 41100013 IERMDA LR RL,RP ESTABLISH THIS MODULE BASE REGISTER 41400013 L RK,PPIDEB+4 ADDR OF IERRDG CSECT 41700013 SPACE 2 42000013 *CHAIN ALL BINS TOGETHER BY PUTTING IN EACH BIN THE ADDR OF THE NEXT 42300013 * AVAILABLE BIN. SAVE THE ADDRESS OF THE 1ST AVAILABLE BIN IN 42600013 * PPIBDSVA+4,AND THE TOTAL NO. OF AVAILABLE BINS IN PPIBDSVA+8. 42900013 SPACE 1 43200013 SR RD,RD 43500013 IC RD,PPILAB08 NO. OF RSA AREAS 43800013 L RH,PPILAB08 PTR TO RSA TABLE IN PPI 44100013 L RG,0(0,RH) ADDR OF THIS RSA AREA BIN 44400013 ST RG,PPIBDSVA+4 SAVE THIS ADDR IN AVAIL(FOR IERRDG) 44700013 ADELOOPO L RF,4(0,RH) NO. OF BYTES IN THIS RSA AREA 45000013 LA RI,ADELOOPI LOAD RETURN REG FOR THIS LOOP CALC 45300013 SR RE,RE 45600013 D RE,PPIBINSZ RF=NO. OF BINS IN THIS RSA AREA 45900013 L RE,PPIBDSVA+8 TOTAL NO.OF BINS IN ALL RSA'S SO FAR 46200013 AR RE,RF UPDATE BIN COUNT 46500013 ST RE,PPIBDSVA+8 SAVE UPDATED BIN COUNT 46800013 ADELOOPI BCT RF,ADECHAIN DECR NO. OF BINS CTR FOR THIS RSA. 47100013 * BR IF MORE BINS IN THIS RSA. 47400013 BCT RD,ADNXTRSA DECR NO. OF RSA'S CTR. BR IF MORE 47700013 * RSA,S.THE LAST BIN IN THE LAST RSA 48000013 * HAS NO CHAIN ADDR 48300013 MVC WCOMBINE+1(1),PPILAB03 48600013 MVC WCOMBINE+2(2),PPILAB03+2 48900013 L RA,WCOMBINE POSITION NO. AND SIZE OF BUFFERS 49200013 L RB,PPILAB02 ADDR OF INPUT BUFFER POOL ADDR TABLE 49500013 BUILDS (1),(0) BUILD THE INPUT BUFFER(S) 49800013 SPACE 2 50100013 LH RE,PPILEXFF GET EXTRACT SIZE 50400013 A RE,KFOUR 50700013 STH RE,EXPLFOUR STORE EXTRACT SIZE + 4 51000013 L RE,PPISTDCB DCB ADDRESS A26453 51030019 L RE,0(RE) A26453 51060019 ST RE,KAWORK+4 STORE IN R.P.WORK AREA A26453 51090019 TM PPIMODEX+2,X'02' VRE IN? A26453 51120019 BZ ADGRETUR NO... A26453 51150019 L RE,PPIGETMN ADDR OF GETMAIN TABLE OF ADDR A26453 51180019 L RE,12(RE) FETCH ADDR OF VRE WORK AREA A26453 51210019 ST RE,KAWORK STORE IN R.P. WORK AREA A26453 51240019 ADGRETUR BR RO RETURN TO IERRC9 A26453 51270019 BR RO RETURN TO IERRC9 51300013 SPACE 2 51600013 ADNXTRSA LA RI,ADEREAL RESET RETURN REG FOR THIS LOOP 51900013 SPACE 2 52200013 *INSERT CHAIN ADDR IN EACH BIN OF EACH RSA EXCEPT THE LAST BIN OF THE 52500013 * LAST RSA. 52800013 SPACE 1 53100013 ADECHAIN A RG,PPIBINSZ ADDR OF THIS BIN + BIN SIZE 53400013 LR RE,RG SAVE ADDR OF THE NEXT BIN 53700013 S RE,KFOUR PTS TO AREA IN PREVIOUS BIN TO PUT 54000013 * THE CHAIN ADDR OF NEXT BIN(IN RG) 54300013 ST RG,0(0,RE) PREVIOUS BIN NOW CHAINED TO NEXT BIN 54600013 BR RI BR TO ADELOOPI ON ALL BINS EXCEPT 54900013 * THE LAST BIN IN EACH RSA OTHERWISE 55200013 * BR TO ADEREAL ON THIS LAST BIN 55500013 SPACE 2 55800013 *OVERLAY LAST BIN CHAIN ADDR OF THIS RSA WITH PROPER ADDRESS.(1ST BIN 56100013 * ADDR OF NEXT RSA) 56400013 SPACE 1 56700013 ADEREAL LA RH,8(0,RH) UPDATE PPI RSA TABLE PTR TO NEXT 57000013 * RSA ENTRY 57300013 L RG,0(0,RH) ADDR OF 1ST BIN IN NEXT RSA 57600013 ST RG,0(0,RE) STORE AS CHAIN ADDR IN LAST BIN OF 57900013 * PREVIOUS RSA. 58200013 B ADELOOPO BR TO CHAIN BINS OF THIS RSA 58500013 SPACE 2 58800013 *LIST OF CONSTANTS: 59100013 SPACE 1 59400013 KFOUR DC F'4' CONSTANT 4 59700013 SPACE 2 60000013 *LIST OF WORK AREAS/TABLES: 60300013 SPACE 1 60600013 WCOMBINE DC F'0' WORK AREA 60900013 EJECT 61200013 IERRDG DSECT 61500013 USING *,RL THIS MODULE BASE REG 61800013 USING IERRCA,RN ADDR OF PPI 62100013 IERDD1 B RDGOLAY GO TO OVERLAY EXITS 62400013 B RDGEOF GO TO EOF ROUTINE 62700013 RDGBEGIN CLI NOFITSW,X'01' CHECK NO FIT SWITCH 63000013 BL RDGNORM NO FIT SWITCH OFF 63300013 BH RDGSPEC NO. OF BINS=0 DURING FILL 63600013 SR RE,RE 63900013 A RE,PPIBDSVA+8 64200013 BZ RDGNOFIT 64500013 L RA,WSAVE 64800013 L RE,WSAVE+4 65100013 L RC,WSAVE+8 LOC FOR CHAIN ADR-USED AFTER PARTIAL 65400013 L RD,PPIBDSVA+4 ADR OF NEXT AVAIL BIN 65700013 ST RD,0(RC) INSERT CHAIN ADDRESS 66000013 L RB,KEIGHT INDICATE DEBLOCK WITH NOFIT PREV 66300013 RDGBINS L RF,PPIBDSVA+4 LOAD ADR OF NEXT BIN IN RSA 66600013 L RP,PPIBDSVA+12 LOAD ADR OF MOVE ROUTINE 66900013 BALR RO,RP BRANCH TO MOVE ROUTINE 67200013 B RDGNOTF RECORD DIDN'T FIT 67500013 SPACE 67800013 * RECORD FIT ROUTINE 68100013 SPACE 68400013 CLI NOFITSW,X'01' CHECK NO FIT SWITCH 68700013 BC 7,RDGUSUAL LAST MOVE WAS NOT A NO FIT 69000013 L RD,WSAVAIL GET RSA STARTING ADR OF RECORD 69300013 SR RC,RC 69600013 ST RC,WSAVAIL ZERO OUT WSAVAIL 69900013 B RDGUSUAL+4 RD ALREADY LOADED 70200013 RDGUSUAL L RD,PPIBDSVA+4 BEGIN ADR OF RECORD JUST MOVED 70500013 AH RD,EXPLFOUR ADD EXT SIZE + 4 70800013 L RC,ADRHOLD LOAD BUFFER ADDRESS 71100013 L RE,PPIBDSVA+8 71400013 SR RE,RB 71700013 ST RE,PPIBDSVA+8 UPDATE BIN COUNT 72000013 L RE,0(RF) 72300013 ST RE,PPIBDSVA+4 UPDATE AVAIL 72600013 NI NOFITSW,X'00' TURN OFF NO FIT SWITCH 72900013 L RL,PPINET+4 73200013 RDGFIT B 4(RL) EXIT TO SORT ON RECORD FIT CONDITION 73500013 SPACE 73800013 * RECORD NOFIT ROUTINE 74100013 SPACE 74400013 RDGNOTF ST RA,WSAVE 74700013 STM RE,RF,WSAVE+4 SAVE INFO FOR NEXT MOVE 75000013 SR RD,RD 75300013 ST RD,PPIBDSVA+8 BINS AVAIL=0 75600013 OI NOFITSW,X'01' 75900013 A RD,WSAVAIL 76200013 BC 7,RDGNOFIT SECOND NOFIT ON SAME RECORD 76500013 L RD,PPIBDSVA+4 76800013 ST RD,WSAVAIL SAVE RSA ADR OF START OF RECORD 77100013 RDGNOFIT L RL,PPINET+4 77400013 B 24(RL) EXIT TO SORT ON RECORD NO FIT 77700013 RDGNORM LM RA,RB,KAWORK DCB ADDRESS AND/OR VRE WORK A26453 78100019 GET (1),(0) A26453 78500019 RDGGOT ST RB,ADRHOLD SAVE ADDRESS OF RECORD 78900013 L RE,PPICOUNT 79200013 LA RE,1(RE) 79500013 ST RE,PPICOUNT ADD ONE TO RECORD COUNT 79800013 LR RE,RB SET UP BUFFER ADDRESS FOR MOVE RTN 80100013 SR RB,RB INDICATE DEBLOCK TO MOVE ROUTINE 80400013 SR RD,RD 80700013 A RD,PPIBDSVA+8 81000013 BC 7,RDGMOVE BRANCH UNLESS BIN COUNT=0 81300013 OI NOFITSW,X'03' 81600013 B RDGNOFIT SPECIAL NO FIT CONDITION 81900013 SPACE 82200013 * OVERLAY EXITS TO REPLACEMENT - CHANGE FROM FILLING TO NORMAL 82500013 SPACE 82800013 RDGOLAY LA RE,12(0) 83100013 STC RE,RDGFIT+3 OVERLAY EXIT TO SORT-RECORD FIT 83400013 LA RE,28(0) 83700013 STC RE,RDGNORM-1 OVERLAY EXIT TO SORT-RECORD NO FIT 84000013 B RDGBEGIN BRANCH TO NORMAL ENTRY 84300013 SPACE 84600013 * EOF - SET UP UNCONDITIONAL RETURN TO REPLACEMENT FOR FUTURE USE 84900013 SPACE 85200013 RDGEOF MVC RDGBEGIN(4),RDGFIT-4 85500013 MVC RDGBEGIN+4(4),KBRANCH OVERLAY ENTRY WITH UNCOND EXIT 85800013 L RL,PPINET+4 86100013 B 8(RL) ONE TIME EXIT AT EOF 86400013 RDGSPEC SR RE,RE 86700013 A RE,PPIBDSVA+8 87000013 BZ RDGNOFIT 87300013 NI NOFITSW,X'00' ZERO NOFITSW - SPEC CONDITION 87600013 SR RB,RB INDICATE DEBLOCK TO MOVE 87900013 L RE,ADRHOLD LOAD BUFFER ADR 88200013 RDGMOVE L RF,PPIBDSVA+4 88500013 AH RF,EXPLFOUR ADD EXT SIZE + 4 TO AVAIL ADR 88800013 B RDGBINS+4 CONTINUE PREP FOR MOVE 89100013 SPACE 2 89400013 *LIST OF CONSTANTS: 89700013 SPACE 1 90000013 KBRANCH B 16(RL) 90300013 NOFITSW DC X'00' 90600013 ADRHOLD DC F'0' 90900013 KEIGHT DC F'8' 91200013 WSAVE DC 3F'0' 91500013 WSAVAIL DC F'0' SAVE AREA FOR RSA RECORD ADR 91800013 EXPLFOUR DC H'0' EXTRACT SIZE + 4 92100013 KAWORK DC 2F'0' FOR DCB AND/OR VRE WORK ADDR A26453 92200019 SMPPI 92400013 END 92700013 ./ ADD SSI=02011720,SOURCE=1,NAME=IERADH TITLE 'IERADH O/S 360 SORT/MERGE 360S-SM-023 3/1/65' 00300013 *MODULE NAME *** IERADH *** 00600013 SPACE 2 00900013 *STATUS:CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: PHASE 3 DEBLOCK ASSIGNMENT MODULE -FIXED 01800013 * THIS MODULE IS A FINAL PHASE ASSIGNMENT ROUTINE FOR FIXED 02100013 * LENGTH RECORDS. THE MODULE DOES ALL THE INITIALIZING NECESSARY 02400013 * FOR IERRDH, THE DEBLOCK RUNNING PROGRAM, IN THE FINAL MERGE. 02700013 * 03000013 * THE MODULE USES REGISTERS RE-RJ,RL, AND RN-RP. 03300013 SPACE 2 03600013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 03900013 * 04200013 * N/A 04500013 * 04800013 *MACROS USED: SMPPI 05100013 SPACE 2 05400013 *ENTRY POINTS: 05700013 SPACE 1 06000013 * CSECT NAME -IERADH ENTRY FROM IERRC9 VIA 06300013 * LOAD EP=IERADH,DCB=SORTLIB 06600013 * LR RP,RA 06900013 * BALR RO,RP 07200013 SPACE 2 07500013 *INPUT: -PPI FIELDS REFERENCED- 07800013 SPACE 1 08100013 * PPIBDSVA PPISBLCT 08400013 * PPILAB03 PPISPGN1 08700013 * PPIMRGMX PPISRTBL 09000013 * PPIPDWA PPISW1 09300013 * PPIRCDL2 09600013 SPACE 2 09900013 *OUTPUT: -PPI FIELDS INITIALIZED OR ALTERED- 10200013 SPACE 1 10500013 * PPIBDSVA 10800013 * PPISPGN1 11100013 SPACE 2 11400013 *EXTERNAL ROUTINES: NONE 11700013 SPACE 2 12000013 *EXTERNAL PARAMETERS: 12300013 SPACE 1 12600013 * PPIPDWA -MERGE PRIME AREA- CONTAINS 1ST. RECORDS TO BE MERGED 12900013 SPACE 2 13200013 *EXITS-NORMAL: 13500013 SPACE 1 13800013 * IERRC9 RETURN TO LOAD ROUTINE VIA REG. RO 14100013 SPACE 2 14400013 *EXITS-ERROR: NONE 14700013 SPACE 2 15000013 *TABLES/WORK AREAS: NONE 15300013 SPACE 2 15600013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 15900013 SPACE 2 16200013 *NOTES: THIS MODULE IS USED ONLY FOR FIXED LENGTH RECORDS. 16500013 EJECT 16800013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 17100013 SPACE 1 17400013 RA EQU 0 CONTENTS IN- N/A 17700013 * 18000013 * USE- NOT USED 18300013 * 18600013 * CONTENTS OUT- N/A 18900013 * 19200013 RB EQU 1 CONTENTS IN- N/A 19500013 * 19800013 * USE- NOT USED 20100013 * 20400013 * CONTENTS OUT- N/A 20700013 * 21000013 RC EQU 2 CONTENTS IN- N/A 21300013 * 21600013 * USE- NOT USED 21900013 * 22200013 * CONTENTS OUT- N/A 22500013 * 22800013 RD EQU 3 CONTENTS IN- N/A 23100013 * 23400013 * USE- NOT USED 23700013 * 24000013 * CONTENTS OUT- N/A 24300013 * 24600013 RE EQU 4 CONTENTS IN- N/A 24900013 * 25200013 * USE- WORK REGISTER 25500013 * 25800013 * CONTENTS OUT- N/A 26100013 * 26400013 RF EQU 5 CONTENTS IN- N/A 26700013 * 27000013 * USE- WORK REGISTER 27300013 * 27600013 * CONTENTS OUT- N/A 27900013 * 28200013 RG EQU 6 CONTENTS IN- N/A 28500013 * 28800013 * USE- WORK REGISTER 29100013 * 29400013 * CONTENTS OUT- N/A 29700013 * 30000013 RH EQU 7 CONTENTS IN- N/A 30300013 * 30600013 * USE- WORK REGISTER 30900013 * 31200013 * CONTENTS OUT- N/A 31500013 * 31800013 RI EQU 8 CONTENTS IN- N/A 32100013 * 32400013 * USE- WORK REGISTER 32700013 * 33000013 * CONTENTS OUT- N/A 33300013 * 33600013 RJ EQU 9 CONTENTS IN- N/A 33900013 * 34200013 * USE- WORK REGISTER 34500013 * 34800013 * CONTENTS OUT- N/A 35100013 * 35400013 RK EQU 10 CONTENTS IN- N/A 35700013 * 36000013 * USE- NOT USED 36300013 * 36600013 * CONTENTS OUT- N/A 36900013 * 37200013 RL EQU 11 CONTENTS IN- N/A 37500013 * 37800013 * USE- PROGRAM BASE 38100013 * 38400013 * CONTENTS OUT- PROGRAM BASE 38700013 * 39000013 RM EQU 12 CONTENTS IN- N/A 39300013 * 39600013 * USE- NOT USED 39900013 * 40200013 * CONTENTS OUT- N/A 40500013 * 40800013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 41100013 * USE- PPI REFERENCE,REGISTER SAVE 41400013 * AREA 41700013 * CONTENTS OUT- ADDRESS OF PPI 42000013 RO EQU 14 CONTENTS IN- RETURN ADDR. TO IERRC9 42300013 * 42600013 * USE- WORK REGISTER 42900013 * 43200013 * CONTENTS OUT- RETURN ADDR. TO -RC9 43500013 * 43800013 RP EQU 15 CONTENTS IN- PROGRAM REGISTER 44100013 * 44400013 * USE- WORK REGISTER 44700013 * 45000013 * CONTENTS OUT- N/A 45300013 * 45600013 SPACE 2 45900013 *START OF MODULE CODE PROPER: 46200013 SPACE 2 46500013 IERADH CSECT 46800013 USING *,RL 47100013 USING IERRCA,RN 47400013 USING IERRDH,RO 47700013 * 48000013 IERMD34 LR RL,RP 48300013 L RE,PPIRCDCT CHECK FOR 48600013 LTR RE,RE ZERO FILE 48900013 BCR 8,RO RETURN TO IERRC9 49200013 ST RO,KSAVC9 SAVE RETURN REGISTER 49500013 L RO,PPIDEB+4 RUNNING DEBLOCK ADDRESS 49800013 L RE,PPISPGN1 ADDR. OF GENERATED CORE 50100013 TM PPISPGN1+3,X'03' MAKE SURE TABLES START ON FULL WORD 50400013 BC 8,ADHDA020 BOUNDARIES 50700013 LA RE,3(0,RE) 51000013 N RE,KMASK 51300013 S RE,KFOUR 51600013 ADHDA020 SR RF,RF 51900013 IC RF,PPIBDSVA CALCUATE SIZE OF TABLE DEBLAREA 52200013 SLL RF,2 AND SET ASIDE THE AREA 52500013 LA RF,4(0,RF) 52800013 SR RE,RF IN GENERATED CORE 53100013 ST RE,IERDBLSV DEBLAREA- TABLE OF INPUT 53400013 ST RE,PPISPGN1 BUFFERS 53700013 MVC PPIBDSVA+1(3),PPISPGN1+1 54000013 * USED TO INTERFACE 54300013 * WITH READ 54600013 L RG,PPISBLCT ADDRESS OF BLOCK COUNTS 54900013 LH RJ,PPIMRGMX MERGE ORDER 55200013 LA RF,PPIPDWA ADDRESS OF PRIME AREA 55500013 SR RI,RI 55800013 TM PPISW1+1,X'40' IS IT TAPE? 56100013 BC 1,ADHTP045 BRANCH IF YES 56400013 SPACE 1 56700013 TM PPISW1+6,X'02' CHECK FOR 2314 57000013 BC 8,ADHDK030 NO, 2311/2301 AS DEVICE 57300013 SPACE 1 57600013 MVI KFOUR+3,X'0C' ADJUST FOR CHAIN BYTES IN BUFFER TOO 57900013 * = EOS(4 BYTES) +CHAIN(8 BYTES) 58200013 * NO ADDRESS ADJUSTMENTS ARE NEEDED AS ARE FOR READ BACKWARDS ON 58500013 *TAPE. 58800013 * 59100013 ADHDK030 IC RI,0(0,RF) DEVICE IS DISK 59400013 L RH,0(0,RF) MOVE ENTRY IN PRIME AREA TO 59700013 S RH,KFOUR (EOS INDICATOR'S 4 BYTES) 60000013 ST RH,0(RI,RE) DEBLAREA INDEXED BY INCR. STARTING 60300013 * BUFFER ADDR IS ADDR IN PRIME 60600013 BCT RJ,ADHLP040 AREA 60900013 SPACE 1 61200013 L RO,KSAVC9 RETURN 61500013 BR RO TO IERRC9 61800013 * 62100013 * 62400013 * 62700013 ADHLP040 LA RF,4(0,RF) UPDATE PRIME AREA POINTER 63000013 BC 15,ADHDK030 63300013 SPACE 1 63600013 ADHTP045 TM PPISW1+6,X'40' IS READ FORWARD SWITCH ON 63900013 BNO ADHTP050 BRANCH IF NOT 64200013 B ADHDK030 GO USE DISK ROUTINE (READ FORWARD) 64500013 SPACE 2 64800013 ADHTP050 IC RI,0(0,RF) INCR 65100013 L RH,0(RI,RG) BLOCK COUNT 65400013 MH RH,PPIRCDL2 SORT RCD. LENGTH*BLOCK COUNT 65700013 LH RP,PPISRTBL 66000013 MH RP,PPIRCDL2 INCLUDE EOS 4 BYTES AND 66300013 LA RP,4(0,RP) 66600013 LH RO,PPILAB03+2 66900013 SR RO,RP POSSIBLE BOUNDARY ROUND-OFF BYTES 67200013 AR RH,RO 67500013 BCTR RH,0 BLOCK CHAR.CNT. -1 67800013 A RH,0(0,RF) 68100013 ST RH,0(RI,RE) STARTING ADDR. OF BUFFER FOR READ 68400013 BCT RJ,ADHLP060 BACKWARDS(TAPE ONLY) 68700013 SPACE 1 69000013 L RO,KSAVC9 RETURN 69300013 BR RO TO IERRC9 69600013 SPACE 2 69900013 ADHLP060 LA RF,4(0,RF) UPDATE PRIME AREA POINTER 70200013 BC 15,ADHTP050 70500013 * 70800013 * 71100013 * 71400013 *LIST OF CONSTANTS USED BY THE MODULE: 71700013 SPACE 2 72000013 KSAVC9 DC F'0' 72300013 KFOUR DC A(4) CONSTANT =4 FOR TAPE AND 2311/2301 72600013 * =12 FOR 2314 72900013 KMASK DC X'FFFFFFFC' 73200013 EJECT 73500013 *RUNNING PROGRAM-IERRDH 73800013 * 74100013 * 74400013 ***IERRDH*** 74700013 * 75000013 * THIS MODULE HANDLES FIXED LENGTH RECORDS BY WAY OF THE IOCS EXCP 75300013 *MACRO. THE MODULE DEBLOCKS THE INPUT BUFFERS, AND THEN IT PASSES AN 75600013 *INPUT RECORD ADDRESS TO THE MERGE NETWORK. THE ROUTINE INTERFACES 75900013 *WITH THE READ MODULE WHEN THE INPUT BUFFER IS EMPTY(IE.ALL THE RECORDS 76200013 *IN THE BUFFER HAVE BEEN PASSED TO THE MERGE NETWORK FOR PROCESSING). 76500013 *THE CLASSIFICATION CODE IS A. 76800013 * 77100013 IERRDH DSECT 77400013 USING *,RL 77700013 USING IERRCA,RN PPIA DSECT 78000013 IERDD BC 15,RDHDB020 ENTRY POINT FOR READ 78300013 LR RG,RD ENTRY POINT FOR BLOCK RTN. 78600013 SRL RD,24 OBTAIN INCR 78900013 L RE,PPISBLCT 79200013 L RF,0(RE,RD) LOAD APPROPRIATE BLOCK COUNT 79500013 S RF,KONE DECREMENT BLOCK COUNT BY ONE 79800013 BC 12,RDHDB010 IF BUFFER EMPTY 80100013 ST RF,0(RE,RD) SAVE ADJUSTED BLOCK COUNT 80400013 LR RD,RG RESTORE RD 80700013 AH RD,PPIRCDL2 OBTAIN NEW INPUT RECORD'S ADDRESS 81000013 L RL,PPINET+4 RETURN AN INPUT RECORD TO THE 81300013 BC 15,8(0,RL) MERGE NETWORK. 81600013 * 81900013 * 82200013 RDHDB010 L RG,IERDBLSV 82500013 L RC,0(RG,RD) LOAD APPROPRIATE BUFFER'S STARTING 82800013 * ADDRESS. 83100013 *LINK TO THE READ ROUTINE 83400013 L RL,PPIRD+4 83700013 BC 15,4(0,RL) OBTAIN FULL INPUT BUFFER FROM THE 84000013 * READ ROUTINE 84300013 RDHDB020 L RF,PPISBLCT 84600013 ST RB,0(RF,RD) STORE NEW BUFFER'S BLOCK COUNT IN 84900013 * ITS APPROPRIATE POSITION VIA INCR 85200013 LR RP,RD 85500013 SLL RD,24 REPOSITION INCR 85800013 AR RD,RC 86100013 *STORE STARTING ADDR. OF BUFFER IN ITS APPROPRIATE POSITION 86400013 * VIA INCR. 86700013 * 87000013 ST RE,0(RG,RP) 87300013 L RL,PPINET+4 PASS RECORD ADDRESS TO MERGE NETWORK 87600013 BC 15,8(0,RL) AND RETURN CONTROLL TO THE MERGE 87900013 * 88200013 * 88500013 IERDBLSV DS 1F ADDRESS OF DEBLAREA 88800013 KONE DC A(1) 89100013 EJECT 89400013 SMPPI 89700013 END 90000013 ./ ADD SSI=02011613,SOURCE=1,NAME=IERADI TITLE 'IERADI - OS/360 SORT/MERGE - 360-SM-023 04/12/65' 00300013 *MODULE NAME:*** IERADI *** 00600013 SPACE 2 00900013 *STATUS: CHANGE LEVEL 000 01200013 SPACE 2 01500013 *MODULE FUNCTION/OPERATION: 01800013 * THIS MODULE IS AN ASSIGNMENT ROUTINE FOR MODULE IERRDI. IT IS 02100013 * USED IN THE FINAL MERGE PHASE FOR VARIABLE LENGTH RECORDS. IT 02400013 * BUILDS A TABLE OF INPUT BUFFER ADDRESSES IN GENERATED CORE TO BE 02700013 * USED BY IERRDI IN COMMUNICATING WITH THE READ ROUTINE. 03000013 SPACE 2 03300013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 03600013 * 03900013 * N/A 04200013 * 04500013 *MACRO'S USED: 04800013 SPACE 1 05100013 * SMPPI 05400013 SPACE 2 05700013 *ENTRY POINTS: 06000013 SPACE 1 06300013 * ENTRY IERADI ENTRY FROM:IERRC9 06600013 * CALLING SEQUENCE- L RP,ASSG 06900013 * BALR RO,RP 07200013 SPACE 2 07500013 *INPUT: PPI FIELDS REFERENCED- 07800013 SPACE 1 08100013 * PPISPGN1 PPISW1 08400013 * PPIBDSVA 08700013 * PPIPDWA 09000013 * PPIMRGMX 09300013 * PPISBLCT 09600013 SPACE 2 09900013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 10200013 SPACE 1 10500013 * PPISPGN1-UPDATED TO LAST BYTE USED 10800013 * PPIBDSVA+1-SET TO ADDRS OF BUFFER TABLE (IN GEN. CORE) 11100013 * SPACE 1 11400013 * BUILDS BUFFER ADDRESS TABLE IN GEN. CORE. IT CONTAINS ADDRESS OF 11700013 * EACH INPUT BUFFER IN ORDER ACCORDING TO DCB INCREMENT. 12000013 SPACE 2 12300013 *EXTERNAL ROUTINES: 12600013 SPACE 1 12900013 * N/A 13200013 SPACE 2 13500013 *EXTERNAL PARAMETERS: 13800013 SPACE 1 14100013 * PPIDEB-RUNNING PROGRAM ADDRESS FOR DSECT 14400013 SPACE 2 14700013 *EXITS: NORMAL 15000013 SPACE 1 15300013 * EOJ/OPEN OUTPUT RTN-DSPL=4 TO OPEN OUTPUT 15600013 SPACE 2 15900013 *EXITS: ERROR 16200013 SPACE 1 16500013 * N/A 16800013 SPACE 2 17100013 *TABLES/WORK AREAS: 17400013 SPACE 1 17700013 * N/A 18000013 SPACE 2 18300013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 18600013 SPACE 2 18900013 *NOTES: 19200013 SPACE 1 19500013 * THIS MODULE IS USED IN THE FINAL MERGE PHASE FOR VARIABLE LENGTH 19800013 * RECORDS. 20100013 EJECT 20400013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 20700013 SPACE 1 21000013 RA EQU 0 CONTENTS IN-N/A 21300013 * USE-N/A 21600013 * CONTENTS OUT-N/A 21900013 RB EQU 1 CONTENTS IN-N/A 22200013 * USE-N/A 22500013 * CONTENTS OUT-N/A 22800013 RC EQU 2 CONTENTS IN-N/A 23100013 * USE-N/A 23400013 * CONTENTS OUT-N/A 23700013 RD EQU 3 CONTENTS IN-N/A 24000013 * USE-WORK REGISTER 24300013 * CONTENTS OUT-N/A 24600013 RE EQU 4 CONTENTS IN-N/A 24900013 * USE-WORK REGISTER 25200013 * CONTENTS OUT-N/A 25500013 RF EQU 5 CONTENTS IN-N/A 25800013 * USE-WORK REGISTER 26100013 * CONTENTS OUT-N/A 26400013 RG EQU 6 CONTENTS IN-N/A 26700013 * USE-WORK REGISTER 27000013 * CONTENTS OUT-N/A 27300013 RH EQU 7 CONTENTS IN-N/A 27600013 * USE-WORK REGISTER 27900013 * CONTENTS OUT-N/A 28200013 RI EQU 8 CONTENTS IN-N/A 28500013 * USE-WORK REGISTER 28800013 * CONTENTS OUT-N/A 29100013 RJ EQU 9 CONTENTS IN-N/A 29400013 * USE-BASE REGISTER FOR DSECT 29700013 * CONTENTS OUT-N/A 30000013 RK EQU 10 CONTENTS IN-N/A 30300013 * USE-N/A 30600013 * CONTENTS OUT-N/A 30900013 RL EQU 11 CONTENTS IN-N/A 31200013 * USE-MODULE BASE REG 31500013 * CONTENTS OUT-ADDRS OF EOJ RTN 31800013 RM EQU 12 CONTENTS IN-N/A 32100013 * USE-N/A 32400013 * CONTENTS OUT-N/A 32700013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 33000013 * USE- PPI REFERENCE,REGISTER SAVE 33300013 * AREA 33600013 * CONTENTS OUT- ADDRESS OF PPI 33900013 RO EQU 14 CONTENTS IN N/A 34200013 * USE-N/A 34500013 * CONTENTS OUT-N/A 34800013 RP EQU 15 CONTENTS IN-MODULE ADDRS 35100013 * USE-SET MODULE BASE REG 35400013 * CONTENTS OUT-N/A 35700013 SPACE 2 36000013 *START OF MODULE CODE PROPER: 36300013 SPACE 2 36600013 IERADI CSECT 36900013 USING *,RL 37200013 USING DIERRDI,RJ 37500013 USING IERRCA,RN 37800013 IERMD34 LR RL,RP 38100013 L RE,PPIRCDCT CHECK FOR 38400013 LTR RE,RE ZERO FILE 38700013 BCR 8,RO RETURN TO IERRC9 39000013 L RJ,PPIDEB+4 39300013 SPACE 1 39600013 *CALCULATE NUMBER OF BYTES NEEDED FOR BUFFER ADDRESS TABLE AND BUILD 39900013 *TABLE IN GENERATED CORE 40200013 SPACE 1 40500013 L RE,PPISPGN1 ACCESS ADDRS OF GENERATED CORE 40800013 N RE,KMASK ALIGN TO FULL WORD BOUNDARY 41100013 SR RF,RF 41400013 IC RF,PPIBDSVA ACCESS NO. OF WORK UNITS 41700013 SLL RF,2 MULTIPLY BY 4 42000013 LA RF,4(RF) ADD 4 42300013 SR RE,RF 42600013 ST RE,PPISPGN1 UPDATE ADDRS OF GENERATED CORE 42900013 MVC PPIBDSVA+1(3),PPISPGN1+1 SET TABLE ADDRS IN PPI 43200013 LA RF,PPIPDWA SET RF=PRIME AREA ADDRS 43500013 LH RD,PPIMRGMX SET RD = MERGE ORDER 43800013 L RG,PPISBLCT SET RG=ADDRS OF BLOCK COUNT TABLE 44100013 * BLOCK COUNTS INCLUDE BCC BUT NOT 44400013 * EOS INDICATION 44700013 SR RI,RI 45000013 TM PPISW1+1,X'40' IS IT TAPE? 45300013 BC 8,ADI34030 BRANCH IF NO 45600013 TM PPISW1+6,X'40' IS READ FORWARD SWITCH ON 45900013 BO ADI34030 IF YES-GO USE DISK ROUTINE (RD FWD) 46200013 SPACE 2 46500013 *BUILD TABLE FOR TAPE - ADDRESSES MUST POINT TO LAST BYTE OF BUFFER 46800013 SPACE 1 47100013 ADI34010 IC RI,0(0,RF) SET RI # INCREMENT 47400013 L RH,0(RI,RG) SET RH=APPROPRIATE BLOCK COUNT 47700013 SH RH,KA4 DECREMENT BLOCK COUNT BY 4 FOR BCC 48000013 ST RH,0(RI,RG) 48300013 A RH,0(0,RF) ADD BLK CNT TO BUFFER PTR 48600013 BCTR RH,0 DECREMENT BY 1, RH NOW POINTS TO 48900013 * LAST BYTE IN BUFFER 49200013 ST RH,0(RI,RE) STORE BUFFER ADDRS IN TABLE 49500013 BCT RD,ADI34020 DECR MRG ORDER BY 1, DOES IT = 0 49800013 * NO-TAKE BRANCH 50100013 BR RO RETURN TO IERRC9 50400013 SPACE 2 50700013 ADI34020 LA RF,4(RF) INCR. RF TO NXT ENTRY IN PRIME AREA 51000013 B ADI34010 BUILD NEXT TABLE ENTRY 51300013 SPACE 4 51600013 *BUILD TABLE FOR DISK - ADDRESSES MUST POINT TO FIRST BYTE OF BUFFER 51900013 SPACE 1 52200013 ADI34030 TM PPISW1+6,X'02' CHECK FOR 2314 52500013 BC 8,ADI34035 NO, 2311/2301 52800013 SPACE 1 53100013 MVI KA4+1,X'0C' WANT BLCNT - BCC - CHAIN FOR 2314 53400013 MVI K4+1,X'0C' 53700013 MVI K8+1,X'10' ADJUST FOR CHAIN BYTES IN BUFFER TOO 54000013 * =EOS(4) + BCC(4) + CHAIN(8) 54300013 ADI34035 IC RI,0(0,RF) SET RI= INCREMENT 54600013 L RH,0(RI,RG) DECREMENT BLOCK COUNT BY 4 FOR BCC 54900013 SH RH,KA4 55200013 ST RH,0(RI,RG) 55500013 L RH,0(0,RF) SET RH = RECORD ADDRS 55800013 SH RH,K8 DECR BY 8 FOR BCC AND EOS INDICATION 56100013 ST RH,0(RI,RE) STORE BUFFER ADDRS IN TABLE 56400013 BCT RD,ADI34040 DECR MRG ORDER BY 1, DOES IT = 0 56700013 * NO - TAKE BRANCH 57000013 BR RO RETURN TO IERRC9 57300013 SPACE 2 57600013 ADI34040 LA RF,4(RF) INCR. RF TO NXT ENTRY IN PRIME AREA 57900013 B ADI34035 BUILD NEXT TABLE ENTRY 58200013 SPACE 2 58500013 DS 0F 58800013 *LIST OF CONSTANTS USED BY MODULE: 59100013 SPACE 1 59400013 KMASK DC X'FFFFFFFC' 59700013 KA4 DC X'0004' 60000013 K8 DC X'0008' CONSTANT =8 FOR TAPE AND 2311/2301 60300013 * =16 FOR 2314 60600013 EJECT 60900013 *** IERRDI *** 61200013 SPACE 2 61500013 *DUMMY RUNNING PROGRAM 61800013 SPACE 2 62100013 DIERRDI DSECT 62400013 IERDD34 B RDI34020 ENTRY FROM READ 62700013 LR RE,RD ENTRY FROM BLOCK, SAVE WINNER 63000013 MVC KRECLEN(2),0(RE) PUT RCD LENGTH IN KRECLEN 63300013 SRL RD,24 ACCESS INCREMENT 63600013 L RH,PPISBLCT ACCESS BLOCK COUNT FOR THIS BUFFER 63900013 L RG,0(RD,RH) 64200013 SH RG,KRECLEN DECREMENT BY RECORD LENGTH 64500013 SR RF,RF 64800013 CR RG,RF IS BLOCK COUNT = 0 65100013 BC 12,RDI34010 YES - TAKE BRANCH 65400013 SPACE 1 65700013 ST RG,0(RD,RH) NO - SAVE NEW BLOCK COUNT 66000013 LR RD,RE RESTORE WINNER 66300013 AH RD,KRECLEN INCREMENT TO GET NEXT RECORD 66600013 L RL,PPINET+4 66900013 B 8(0,RL) EXIT TO MERGE 67200013 SPACE 4 67500013 *BUFFER IS EMPTY - LINK TO READ ROUTINE TO GET NEW BUFFER 67800013 SPACE 1 68100013 *READ ROUTINE REQUIRES INCREMENT IN RD AND BUFFER ADDRS (FOR READING) 68400013 *IN RC 68700013 SPACE 2 69000013 RDI34010 L RH,PPIBDSVA ACCESS BUFFER TABLE ADDRS 69300013 L RC,0(RD,RH) SET RC = BUFFER ADDRS 69600013 L RL,PPIRD+4 EXIT TO READ 69900013 B 4(0,RL) 70200013 SPACE 2 70500013 *RETURN FROM READ ROUTINE 70800013 * RB = BLOCK COUNT (INCLUDES BCC BUT NOT EOS INDICATION) 71100013 * RC = BUFFER ADDRESS FOR DEBLOCK (POINTS TO BCC) 71400013 * RD = INCREMENT 71700013 * RE = BUFFER ADDRESS FOR READING 72000013 SPACE 1 72300013 RDI34020 SH RB,K4 DECREMENT BLOCK COUNT BY 4 FOR BCC 72600013 L RH,PPISBLCT STORE NEW BLOCK COUNT IN BLOCK COUNT 72900013 ST RB,0(RD,RH) TABLE 73200013 L RG,PPIBDSVA STORE NEW BUFFER ADDRS IN 73500013 ST RE,0(RD,RG) BUFFER TABLE 73800013 SLL RD,24 REPLACE INCREMENT 74100013 AR RD,RC ADD INCR TO NEXT RCD FOR MERGE 74400013 L RL,PPINET+4 EXIT TO MERGE 74700013 B 8(0,RL) 75000013 SPACE 2 75300013 *CONSTANTS 75600013 SPACE 1 75900013 KRECLEN DS 1H USED AS TEMP STORAGE FOR RCD LENGTH 76200013 K4 DC X'0004' 76500013 EJECT 76800013 SMPPI 77100013 END 77400013 ./ ADD SSI=02011613,SOURCE=1,NAME=IERADJ TITLE ' IERADJ - OS/360 SORT/MERGE - 360S-SM023 05/08/66' 00400013 SPACE 2 00800013 *MODULE NAME *** IERADJ *** 01200013 SPACE 2 01600013 *STATUS:CHANGE LEVEL 000 02000013 SPACE 2 02400013 *MODULE FUNCTION/OPERATION: PHASE 3(MERGE ONLY)ASSGNMT MOD. F.L. 02800013 * THE FUNCTION OF THIS MODULE IS TO PRIME THE INPUT BUFFERS 03200013 * AND PUT THE ADDRESS OF THE FIRST RECORD IN EACH PRIMARY INPUT 03600013 * BUFFER IN THE PRIME AREA IN PPI FOR THE MERGE NETWORK. AN INCREMENT 04000013 * IS PLACED IN THE HIGH ORDER BYTE OF EACH RECORD ADDRESS TO INDICATE 04400013 * WHICH INPUT DATA SET THE RECORD CAME FROM. THE INCREMENT IS 4,8,12, 04800013 * 16....N WHERE N IS 4 TIMES THE NUMBER OF INPUT DATA SETS. 05200013 SPACE 1 05600013 * ON ANY INPUT END OF FILE, QSAM BRANCHES DIRECTLY TO IERRGF VIA 06000013 * DCBEODAD. SO THAT IERRGF MAY BRANCH BACK TO THIS MODULE, THIS 06400013 * MODULE INSERTS ITS ADDR(IERADJ)IN PPIPSVA 06800013 SPACE 1 07200013 * THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A PARTICULAR 07600013 * INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER SET. 08000013 SPACE 2 08400013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 08800013 SPACE 1 09200013 * NONE 09600013 SPACE 2 10000013 *LIST OF MACROS USED BY MODULE: 10400013 SPACE 1 10800013 * SMPPI 11200013 * GET 11600013 SPACE 2 12000013 *ENTRY POINTS: 12400013 SPACE 1 12800013 * FROM IERRC9 ENTRY FROM:IERRC9 13200013 * CALLING SEQUENCE- 13600013 * LOAD EP=IERADJ,DCB=SORTLIB 14000013 * LR RP,RA 14400013 * BALR RO,RP 14800013 * FROM END OF INPUT FILE RTN ENTRY FROM:IERRGF 15200013 * CALLING SEQUENCE- 15600013 * L RL,PPIPSVA 16000013 * B 8(RL) 16400013 * FROM GET ENTRY FROM:QSAM GET 16800013 * CALLING SEQUENCE- 17200013 * BR RO RETURN 17600013 SPACE 2 18000013 *INPUT: - PPI FIELDS REFERENCED 18400013 SPACE 1 18800013 * PPIMODEX PPIEOF 19200013 * PPISTDCB 19600013 * PPIPDWA 20000013 SPACE 1 20400013 * TEST IF USER MOD SWITCH ON IN PPI, OBTAIN STARTING ADDR OF INPUT 20800013 * DCBS,WORK AREA IN PPI FOR INPUT RCD ADDR TABLE FOR MERGE NTWK. 21200013 SPACE 2 21600013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 22000013 SPACE 1 22400013 * PPIPSVA 22800013 * PPISW1 23200013 * PPIMRGMX 23600013 SPACE 1 24000013 * SAVE THIS MOD ENTRY PT, SET PPI SWITCH TO INDICATE R.P., RESET 24400013 * MRGMX,IF NEEDED,TO CORRECT INPUT MERGE ORDER 24800013 SPACE 2 25200013 *EXTERNAL ROUTINES: 25600013 SPACE 1 26000013 * NONE 26400013 SPACE 2 26800013 *EXTERNAL PARAMETERS: 27200013 SPACE 1 27600013 * SEE REGISTERS 28000013 SPACE 2 28400013 *EXITS-NORMAL: 28800013 SPACE 1 29200013 * TO GET EXIT TO:QSAM GET 29600013 * CALLING SEQUENCE- 30000013 * GET(RF) RF=ADDR INPT DCB 30400013 * 30800013 * TO IERRC9 RETURN ON REGISTER RO 31200013 SPACE 2 31600013 *EXITS-ERROR: 32000013 SPACE 1 32400013 * NONE 32800013 SPACE 2 33200013 *TABLES/WORK AREAS: 33600013 SPACE 1 34000013 * PPIPDWA-TABLE OF INPUT RECORD ADDRESSES IN PPI 34400013 SPACE 2 34800013 *ATTRIBUTES: THIS IS A CLASS A MODULE 35200013 SPACE 2 35600013 *NOTES: THIS MODULE WILL EXECUTE FOR ANY FIXED LENGTH MERGE ONLY. 36000013 EJECT 36400013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 36800013 SPACE 1 37200013 RA EQU 0 CONTENTS IN-N/A 37600013 * USE-NOT USED 38000013 * CONTENTS OUT-N/A 38400013 RB EQU 1 CONTENTS IN-N/A 38800013 * USE-GET TO DEBLK(ADDR OF 1ST RCD IN 39200013 * THE INPUT BFR) 39600013 * CONTENTS OUT-N/A 40000013 RC EQU 2 CONTENTS IN-N/A 40400013 * USE-NOT USED 40800013 * CONTENTS OUT-N/A 41200013 RD EQU 3 CONTENTS IN-N/A 41600013 * USE-WORK REGISTER 42000013 * CONTENTS OUT-N/A 42400013 RE EQU 4 CONTENTS IN-N/A 42800013 * USE-MERGE ORDER STEP DOWN CTR 43200013 * CONTENTS OUT-N/A 43600013 RF EQU 5 CONTENTS IN-N/A 44000013 * USE-DEBLK TO GET (ADDR OF AN INPUT 44400013 * DCB) 44800013 * CONTENTS OUT-N/A 45200013 RG EQU 6 CONTENTS IN-N/A 45600013 * USE-ADDR OF PRIME AREA IN PPI(TO 46000013 * BUILD THE RCD ADDR TABLE) 46400013 * CONTENTS OUT- N/A 46800013 RH EQU 7 CONTENTS IN-N/A 47200013 * USE-STEP PTR FOR THE INPUT DCB ADDRS 47600013 * CONTENTS OUT- N/A 48000013 RI EQU 8 CONTENTS IN- N/A 48400013 * USE-FILE INCREMENT 48800013 * CONTENTS OUT- N/A 49200013 RJ EQU 9 CONTENTS IN- N/A 49600013 * USE-ADDR OF IERRDJ DSECT 50000013 * CONTENTS OUT- N/A 50400013 RK EQU 10 CONTENTS IN- N/A 50800013 * USE- NOT USED 51200013 * CONTENTS OUT-N/A 51600013 RL EQU 11 CONTENTS IN-N/A 52000013 * USE-MODULE BASE REGISTER,ENTRY PT 52400013 * TO IERRGF 52800013 * CONTENTS OUT-N/A 53200013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 53600013 * USE-NOT USED 54000013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 54400013 RN EQU 13 CONTENTS IN-ADDR OF PPI 54800013 * USE-PPI REFERENCES,REG SAVE AREA 55200013 * CONTENTS OUT-ADDR OF PPI 55600013 RO EQU 14 CONTENTS IN-IERRC9 RETURN REG 56000013 * USE-GET TO DEBLK(RETURN REG) 56400013 * CONTENTS OUT-IERRC9 RETURN REG 56800013 RP EQU 15 CONTENTS IN-THIS MODULE ENTRY PT 57200013 * USE-ESTABLISH THIS MOD BASE REGISTER 57600013 * -DEBLK TO GET(ADDR OF GET RTN) 58000013 * -EOF TO DEBLK(ADDR OF IERADJ) 58400013 * CONTENTS OUT-N/A 58800013 SPACE 2 59200013 *START OF MODULE CODE PROPER: 59600013 SPACE 2 60000013 IERADJ CSECT 60400013 USING *,RL THIS MODULE BASE REG 60800013 USING IERRDJ,RJ IERRDJ DSECT BASE REG 61200013 USING IERRCA,RN PPI BASE REG 61600013 IERMD34 LR RL,RP 62000013 B ADJ4030 NORMAL ENTRY 62400013 SPACE 3 62800013 L RJ,PPIDEB+4 ADDR OF IERRDJ 63200013 SPACE 1 63600013 *EOF REACHED ON GET - INDICATES NO RECORDS IN THAT FILE 64000013 SPACE 1 64400013 LH RD,PPIMRGMX DECREMENT MERGE ORDER BY 1 64800013 SH RD,K1 65200013 STC RD,PPIMRGMX+1 65600013 BC 12,ADJ4010 IS MERGE ORDER ZERO, YES-TAKE BRANCH 66000013 SPACE 1 66400013 BCT RE,ADJ4070 NO, DECREMENT COUNTER AND BRANCH TO 66800013 * PRIME NEXT AREA 67200013 B ADJ4050 IF COUNTER = 0, BRANCH TO END OF MOD 67600013 SPACE 2 68000013 *ZERO INPUT FILES 68400013 SPACE 1 68800013 ADJ4010 L RO,WROSAV RETURN TO 69200013 BR RO IERRC9 69600013 SPACE 2 70000013 *NORMAL ENTRY TO MODULE 70400013 SPACE 1 70800013 ADJ4030 NI IERMD34+3,X'0F' NOP NORMAL ENTRY 71200013 ST RL,PPIPSVA SAVE THIS MODULE BASE FOR END OF 71600013 * FILE RTN 72000013 ST RO,WROSAV SAVE RETURN TO IERRC9 72400013 L RJ,PPIDEB+4 LOAD IERRDJ DSECT BASE REG 72800013 L RH,PPISTDCB SET DCB TABLR ADDRS IN RUNNING PROG. 73200013 ST RH,KADCBTAB 73600013 L RI,KINCR INITIALIZE INCR 74000013 LH RE,PPIMRGMX SET RE = MAX MERGE ORDER 74400013 LA RG,PPIPDWA SET RG=PRIME AREA ADDRS 74800013 ADJ4040 LA RH,4(RH) INCR RH TO NEXT DCB ADDRS IN DCBTAB 75200013 L RF,0(RH) SET RF=ADDRS OF NEXT DCB 75600013 SPACE 2 76000013 *GET RETURNS NEW RECORD ADDRESS IN RB 76400013 GET (RF) 76800013 SPACE 1 77200013 AR RB,RI ADD INCREMENT TO H.O.BYTE OF NEW RCD 77600013 ST RB,0(RG) STORE RCD ADDRS IN PRIME AREA 78000013 BCT RE,ADJ4060 DECREMENT MERGE ORDER BY 1, DOES IT 78400013 * = 0, NO-TAKE BRANCH 78800013 ADJ4050 OI PPISW1+3,X'01' SET SW TO INDICATE RUNNING PROGRAM 79200013 L RO,WROSAV RETURN TO IERRC9 79600013 BR RO 80000013 SPACE 2 80400013 ADJ4060 LA RG,4(RG) INCREMENT PRIME AREA POINTER 80800013 ADJ4070 A RI,KINCR ADD 4 TO INCR 81200013 B ADJ4040 81600013 SPACE 2 82000013 *LIST OF CONSTANTS: 82400013 SPACE 1 82800013 DS 0F 83200013 KINCR DC X'04000000' 83600013 K1 DC X'0001' 84000013 SPACE 2 84400013 *LIST OF WORK AREAS 84800013 SPACE 1 85200013 WROSAV DC F'0' 85600013 EJECT 86000013 IERRDJ DSECT 86400013 IERDD34 B * DUMMY ENTRY, NOT USED IN THIS MODULE 86800013 L RG,KADCBTAB SET RG=ADDRS OF DCB TABLE 87200013 SRL RD,24 ACCESS INCREMENT 87600013 L RF,0(RD,RG) SET RF=ADDRESS OF APPROPRIATE DCB 88000013 GET (RF) 88400013 SPACE 1 88800013 *GET RETURNS ADDRESS OF NEW RECORD IN RB 89200013 SLL RD,24 SET WINNER ADDRESS IN RD AND PLACE 89600013 AR RD,RB INCREMENT IN HIGH ORDER BYTE 90000013 L RL,PPINET+4 ADDR OF MERGE NTWK 90400013 B 8(RL) 90800013 SPACE 2 91200013 *CONSTANTS 91600013 SPACE 1 92000013 KADCBTAB DS 1F ADDRS OF DCB TABLE 92400013 EJECT 92800013 SMPPI 93200013 END 93600013 ./ ADD SSI=02011613,SOURCE=1,NAME=IERADL TITLE ' IERADL - OS/360 SORT/MERGE - 360S-SM-023 03/12/65 ' 00200013 *MODULE NAME:***IERADL *** 00400013 SPACE 2 00600013 *STATUS: CHANGE LEVEL 000 00800013 SPACE 2 01000013 *MODULE FUNCTION/OPERATION: THIS ASSIGNMENT MODULE ALLOCATES AREA IN 01200013 * GENERATED CORE TO ALLOW THE R.P. TO INSERT ADDRESSES OF INPUT 01400013 * BUFFERS IN PROPER POISTIONS IN THE TABLE. THIS MODULE TESTS WHETHER 01600013 * TAPE OR DISK SORT AND OVERLAYS THE R.P.INSTRUCTIONS WHERE NECESSARY 01800013 * THE ASSIGNMENT PROGRAM UTILIZES THE DISK SORT ROUTINE FOR THE FOR- 02000013 * -WARD BLOCK TAPE SORT. 02200013 SPACE 1 02400013 * THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A PARTICULAR 02600013 * INTERNAL REPRESNTATION OF THE EXTERNAL CHARACTER SET. 02800013 * 03000013 * 03200013 * 03400013 * 03600013 * 03800013 * 04000013 * 04200013 * 04400013 * 04600013 * 04800013 SPACE 2 05000013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 05200013 * 05400013 * N/A 05600013 * 05800013 *MACROS USED' 06000013 SPACE 1 06200013 * SMPPI 06400013 SPACE 2 06600013 *ENTRY POINTS: 06800013 SPACE 1 07000013 * ENTRY ENTRY FROM:IERRC9 07200013 * CALLING SEQUENCE-BALR RO,RP 07400013 * 07600013 * 07800013 * 08000013 * 08200013 SPACE 2 08400013 *INPUT: PPI FIELDS REFERENCED- 08600013 SPACE 1 08800013 * PPISPGN1 09000013 * 09200013 * 09400013 * 09600013 * 09800013 SPACE 2 10000013 *OUTPUT: PPI FIELDS INITIALIZED OR ALTERED- 10200013 SPACE 1 10400013 * PPIBDSVA PPISRTBL 10600013 * PPIRCDL2 PPILABO3 10800013 * PPISPGN1+3 PPISWI (BIT 10) 11000013 * 11200013 SPACE 2 11400013 *EXTERNAL ROUTINES: 11600013 SPACE 1 11800013 * N/A 12000013 * 12200013 SPACE 2 12400013 *EXTERNAL PARAMETERS: 12600013 SPACE 1 12800013 * IERRDLD DUMMY MODULE 13000013 * IERRCA DUMMY PPI MODULE 13200013 * 13400013 * 13600013 *EXITS: NORMAL 13800013 SPACE 1 14000013 * 14200013 * EXIT TO:IERRC9 14400013 * CALLING SEQUENCE-BR RO 14600013 * 14800013 SPACE 2 15000013 *EXITS: ERROR 15200013 SPACE 1 15400013 * N/A 15600013 * 15800013 SPACE 2 16000013 *TABLES/WORK AREAS: 16200013 SPACE 1 16400013 * PPIBDSVA NUMBER OF WORK UNITS 16600013 * 16800013 SPACE 2 17000013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 17200013 SPACE 2 17400013 *NOTES: 17600013 SPACE 1 17800013 * NONE 18000013 SPACE 2 18200013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 18400013 SPACE 1 18600013 RA EQU 0 CONTENTS IN-N/A 18800013 * 19000013 * USE- N/A 19200013 * 19400013 * CONTENTS OUT-N/A 19600013 * 19800013 RB EQU 1 CONTENTS IN-N/A 20000013 * 20200013 * USE-N/A 20400013 * 20600013 * CONTENTS OUT-N/A 20800013 * 21000013 RC EQU 2 CONTENTS IN-N/A 21200013 * 21400013 * USE-N/A 21600013 * 21800013 * CONTENTS OUT-N/A 22000013 * 22200013 RD EQU 3 CONTENTS IN-N/A 22400013 * 22600013 * USE-N/A 22800013 * 23000013 * CONTENTS OUT-N/A 23200013 * 23400013 RE EQU 4 CONTENTS IN-N/A 23600013 * 23800013 * USE-WORK REGESTER 24000013 * 24200013 * CONTENTS OUT-N/A 24400013 * 24600013 RF EQU 5 CONTENTS IN-N/A 24800013 * 25000013 * USE-N/A 25200013 * 25400013 * CONTENTS OUT-N/A 25600013 * 25800013 RG EQU 6 CONTENTS IN-N/A 26000013 * 26200013 * USE-N/A 26400013 * 26600013 * CONTENTS OUT-N/A 26800013 * 27000013 RH EQU 7 CONTENTS IN-N/A 27200013 * 27400013 * USE-WORK REGESTER 27600013 * 27800013 * CONTENTS OUT-N/A 28000013 * 28200013 RI EQU 8 CONTENTS IN-N/A 28400013 * 28600013 * USE-N/A 28800013 * 29000013 * CONTENTS OUT-N/A 29200013 * 29400013 RJ EQU 9 CONTENTS IN-N/A 29600013 * 29800013 * USE-N/A 30000013 * 30200013 * CONTENTS OUT-N/A 30400013 * 30600013 RK EQU 10 CONTENTS IN-N/A 30800013 * 31000013 * USE-ADDR OF REAL R.P. 31200013 * 31400013 * CONTENTS OUT-N/A 31600013 * 31800013 RL EQU 11 CONTENTS IN-N/A 32000013 * 32200013 * USE- PROGRAM BASE REGESTER 32400013 * 32600013 * CONTENTS OUT-N/A 32800013 * 33000013 RM EQU 12 CONTENTS IN-N/A 33200013 * 33400013 * USE-N/A 33600013 * 33800013 * CONTENTS OUT-N/A 34000013 * 34200013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 34400013 * USE- PPI REFERENCE,REGISTER SAVE 34600013 * AREA 34800013 * 35000013 * CONTENTS OUT- ADDRESS OF PPI 35200013 * 35400013 RO EQU 14 CONTENTS IN-RETURN ADDRESS OF IERRC9 35600013 * 35800013 * USE-N/A 36000013 * 36200013 * CONTENTS OUT-RTN ADDRESS OF IERRC9 36400013 * 36600013 RP EQU 15 CONTENTS IN-ADDRESS OF IERADL ENTRY 36800013 * 37000013 * USE-N/A 37200013 * 37400013 * CONTENTS OUT-N/A 37600013 SPACE 2 37800013 *START OF MODULE CODE PROPER: 38000013 SPACE 2 38200013 SPACE 1 38400013 IERADL CSECT 38600013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 38800013 USING IERRDL,RK 39000013 USING IERRCA,RN ADDR OF DUMMY PPI 39200013 LR RL,RP LOAD MODULE BASE REG 39400013 L RK,PPIDEB2+4 39600013 SPACE 1 39800013 * INSURE STARTING ADDRESS OF AVAILABLE CORE ON FULL WORD BOUNDARY 40000013 SPACE 1 40200013 NI PPISPGN1+3,X'FC' ROUND TO NEXT LOWEST FULL WORD 40400013 L RE,PPISPGN1 40600013 SPACE 1 40800013 * RESERVE AREA IN GENERATED CORE FOR BUFFER ADDRESS TABLE 41000013 SPACE 1 41200013 L RH,PPIBDSVA TOTAL NO OF WORK UNITS IN 1ST BYTE 41400013 SRL RH,24 41600013 STC RH,WORKUNIT SAVE TOTAL NUMBER OF WORK UNITS 41800013 SLL RH,2 MULT BY 4 42000013 LA RH,4(0,RH) EQUALS TOTAL NO OF BYTES TO RESERVE 42200013 SR RE,RH DECR STARTING ADDR OF GENERATED CORE 42400013 ST RE,PPISPGN1 STORE UPDATED ADDR IN PPI. 42600013 ST RE,PPIBDSVA ALSO STORE IN PPI FOR OTHER MODS AS 42800013 * STARTG ADDR OF BUFFER ADDR TABLE 43000013 MVC PPIBDSVA(1),WORKUNIT REINSERT TOTAL NO OF WORK UNITS 43200013 SPACE 1 43400013 * TEST FOR TAPE OR DIRECT ACCESS. 43600013 SPACE 1 43800013 TM PPISW1+1,X'40' IS IT TAPE. 44000013 BC 8,ADLDIRAC NO. GO TO DIRECT ACCESS OVLAY RTN. 44200013 SPACE 1 44400013 SPACE 1 44600013 * TEST FOR READ FORWARD CONDITION. 44800013 SPACE 1 45000013 TM PPISW1+6,X'40' TEST FORWARD READ BIT. 45200013 BC 8,ADTAPE IF OFF,BRANCH TO TAPE SORT ROUTINE 45400013 SPACE 1 45600013 * DISK SORT RTN 45800013 SPACE 1 46000013 ADLDIRAC TM PPISW1,X'80' IS IT FIXED LENGTH RECORDS. 46200013 BC 1,ADNOP YES,BR TO NOP R.P. INSTR 46400013 ADOVLAY MVC RDOVLAY,KONSTANT OVERLAY BR INSTR IN R.P. 46600013 SPACE 1 46800013 TM PPISW1+6,X'02' CHECK FOR 2314 47000013 BCR 8,RO 47200013 MVI KFOUR+1,X'0C' ADJUST CONSTANTS TO INCLUDE 8 BYTE 47400013 LH RE,KEIGHT 47600013 LA RE,8(0,RE) CHAIN DISK ADDR. IN BUFFER 47800013 STH RE,KEIGHT 48000013 SPACE 1 48200013 * INTERFACE FOR NEXT ASSIGNMENT RTN 48400013 SPACE 1 48600013 ADIERAGG BR RO RETURN TO IERRC9 48800013 SPACE 2 49000013 ADNOP MVC RDDISKV(2),KNOP NOP VARIABLE LENGTH INSTR IN R.P. 49200013 MVC KEIGHT,KFOUR OVERLAY CONSTANT IN R.P. 49400013 B ADOVLAY 49600013 SPACE 1 49800013 * TAPE SORT RTN 50000013 SPACE 1 50200013 ADTAPE MVI RDBRDISK+1,X'00' NOP THE BR TO TAPE RTN IN R.P. 50400013 TM PPISW1,X'80' TEST IF FIXED LENGTH RCDS 50600013 BC 1,ADTAPEFX YES,SET CONSTANT FOR FIX.LEN.RCDS. 50800013 MVI RDBRFIXL+1,X'00' NOP THE BR TO FIXED LGTH RTN IN R.P. 51000013 B ADIERAGG BR TO INTERFACE 51200013 EJECT 51400013 ADTAPEFX LH RE,PPISRTBL OBTAIN POSSIBLE ROUND-OFF BYTES 51600013 MH RE,PPIRCDL2 OF CALC. PPI BUFFER SIZE TO 51800013 LA RE,4(0,RE) (EOS FOUR BYTES) 52000013 TM PPISW1,X'02' IS THIS AN OSCILLATING SORT 52200013 BZ ADLLAB03 USE PPILAB03 FOR BALANCED/POLYPHASE 52400013 LH RH,PPILAB07+2 USE PPILAB07 FOR OSCILLATING SORT 52600013 B ADLHERE 52800013 ADLLAB03 LH RH,PPILAB03+2 USE IN CALC. END OF BUFFER FOR READ 53000013 ADLHERE SR RH,RE BACKWARDS 53200013 STH RH,KBYTES 53400013 B ADIERAGG 53600013 SPACE 2 53800013 * LIST OF ADCONS USED BY MODULE 54000013 SPACE 1 54200013 SPACE 1 54400013 * LIST OF EXTERNALLY USED PARAMETERS 54600013 SPACE 1 54800013 SPACE 1 55000013 * LIST OF CONSTANTS USED BY MODULE 55200013 SPACE 1 55400013 KNOP DC X'4700' 55600013 DROP RK 55800013 USING IERRDL,RL 56000013 KONSTANT B RDDISK 56200013 USING IERADL,RL 56400013 USING IERRDL,RK 56600013 SPACE 1 56800013 * LIST OF WORK AREAS USED BY MODULE 57000013 SPACE 1 57200013 WORKUNIT DC X'00' 57400013 EJECT 57600013 * MODULE NAME *** IERRDL *** 57800013 SPACE 2 58000013 SPACE 1 58200013 IERRDL DSECT , DUMMY MODULE OF REAL R.P. 58400013 SPACE 1 58600013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 58800013 USING IERRCA,RN ADDR OF DUMMY PPI 59000013 SR RI,RI CLEAR PRIME AREA INDEX REG 59200013 LH RE,PPIMRGMX LOAD M FROM PPI 59400013 RDBRDISK B RDDISK BR TO DISK RTN (OVERLAYED WITH NOP 59600013 * BY A.P. IF TAPE SORT) 59800013 SPACE 2 60000013 * TAPE ROUTINE TO UPDATE INPUT BUFFER ADDRESS TABLE IN GENERATED CORE 60200013 SPACE 1 60400013 RDTAPE L RF,PPIPDWA(RI) LOAD INCR + ADDR OF AN INPUT BFR 60600013 SRL RF,24 INCR NOW IN PROPER POSITION 1ST BYTE 60800013 L RG,PPISBLCT LOAD ADDR OF BLOCK COUNT TABLE 61000013 L RH,0(RF,RG) LOAD BLOCK CNT INDEXED BY INCR 61200013 RDBRFIXL B RDFIXL BR TO FIXED LENGTH RTN(OVERLAYED BY 61400013 * NOP BY A.P. IF VAR LENGTH RCDS) 61600013 SPACE 1 61800013 SH RH,KFOUR PRIME BFR ADDR PTS TO FIRST RCD IN 62000013 * BFR.SUBTR 4 BYTES TAKEN UP BY BCC 62200013 * AND SYSTEM CHECK BYTES 62400013 ST RH,0(RF,RG) UPDATED CHAR CNT FOR DEBLOCK MOD USE 62600013 RDSUBONE BCTR RH,0 DECREMENT BLOCK SIZE BY ONE 62800013 A RH,PPIPDWA(RI) ADD PRIME BFR ADDR (INCR IGNORED) 63000013 RDSTOADR L RG,PPIBDSVA LOAD ADDR OF BUFFER ADDR TABLE 63200013 ST RH,0(RF,RG) STORE ADDR OF INPUT BFR WITH INCR IN 63400013 * 1ST BYTE IN INDEXED TABLE-GEN CORE 63600013 BCT RE,RDINCRRI DECR M BY ONE. BR IF NOT ZERO 63800013 SPACE 1 64000013 * INTERFACE TO NEXT MODULE 64200013 SPACE 1 64400013 RDNXTMOD L RL,PPINETM+4 64600013 BR RL 64800013 SPACE 1 65000013 RDINCRRI LA RI,4(0,RI) INCR PRIME ADDR AREA INDEX REG BY 4 65200013 RDOVLAY B RDTAPE BR TO LOAD NEXT ADDR (WILL BE OVER- 65400013 * LAYED BY A.P. TO BR TO DISK RTN 65600013 * IF THIS MODULE IS FOR DISK RTN) 65800013 SPACE 1 66000013 * FIXED LENGTH MULTIPLY RTN TO CALC LENGTH OF BLOCK IN TOTAL BYTES 66200013 SPACE 1 66400013 RDFIXL MH RH,PPIRCDL2 MPY BLOCK CNT BY SORT RCD LENGTH, 66600013 * EQUALS SIZE OF INPUT AREA 66800013 AH RH,KBYTES ALSO INCLUDE ROUND-OFF BYTES IF ANY 67000013 B RDSUBONE 67200013 SPACE 1 67400013 * DISK ROUTINE TO UPDATE INPUT BUFFER ADDRESS TABLE IN GENERATED CORE 67600013 SPACE 1 67800013 RDDISK L RF,PPIPDWA(RI) LOAD INCR AND ADDR OF 1ST RCD IN AN 68000013 * INPUT BUFFER 68200013 SRL RF,24 INCR NOW IN PROPER POSITION 1ST BYTE 68400013 L RG,PPISBLCT LOAD ADDR OF BLOCK COUNT TABLE 68600013 L RH,0(RF,RG) LOAD BLOCK CNT INDEXED BY INCR 68800013 RDDISKV SH RH,KFOUR SUBTR 4 FOR BCC & SYSTEM CHK BYTES. 69000013 * A.P. WILL NOP THIS INSTR IF FIXED 69200013 * LENGTH RECORDS 69400013 ST RH,0(RF,RG) UPDATED CHAR CNT FOR DEBLOCK MOD USE 69600013 L RH,PPIPDWA(RI) LOAD INCR AND ADDR OF 1ST RCD IN AN 69800013 * INPUT BUFFER 70000013 SH RH,KEIGHT RH POINTS TO STRTG ADDR OF INPUT BFR 70200013 * SUBTRACT 4 IF DISK,FIXED LGTH RCDS 70400013 * FOR 2314, KEIGHT =12 FOR F.L. RCDS. 70600013 * =16 FOR V.L. RCDS. 70800013 B RDSTOADR BR TO STORE ADDR IN TABLE 71000013 EJECT 71200013 * LIST OF ADCONS USED BY MODULE 71400013 SPACE 1 71600013 SPACE 1 71800013 * LIST OF EXTERNALLY USED PARAMETERS 72000013 SPACE 1 72200013 SPACE 1 72400013 * LIST OF CONSTANTS USED BY MODULE 72600013 SPACE 1 72800013 KFOUR DC H'4' 73000013 KEIGHT DC H'8' USUALLY = 8 FOR V.L. RCDS. AND 73200013 * = 4 FOR F.L. RCDS. 73400013 * FOR 2314 =16 FOR V.L. RCDS. AND 73600013 * =12 FOR F.L. RCDS. 73800013 KBYTES DC H'0' BUFFER SIZE ROUND-OFF BYTES 74000013 SPACE 1 74200013 * LIST OF WORK AREAS USED BY MODULE 74400013 EJECT 74600013 SMPPI 74800013 END 75000013 ./ ADD SSI=04010840,SOURCE=1,NAME=IERADM TITLE 'IERADM - OS/360 SORT/MERGE - 360 - SM023 5/11/66' 00500013 *MODULE NAME *** IERADM *** 01000013 SPACE 2 01500013 *STATUS:CHANGE LEVEL 000 02000013 SPACE 2 02500013 *MODULE FUNCTION/OPERATION: PHASE 1 ASSIGNMENT -SKIP OPTION 03000013 * THIS IS THE LAST ASSIGNMENT PROGRAM TO BE EXECUTED IN PHASE 1. IT 03500013 * IS USED WHEN THE USER WISHES SORT TO SKIP A DESIGNATED NUMBER OF 04000013 * INPUT RECORDS BEFORE STARTING TO SORT THE INPUT FILE. THE USER 04500013 * SPECIFIES SUCH ON THE SORT CONTROL CARDS. THE ROUTINE USES THE 05000013 * QSAM GET MACRO IN LOCATE MODE IF UNSPANNED RECORDS AND MOVE MODE 05300017 * IF SPANNED VARIABLE LENGTH RECORDS 05600017 * 06000013 * THE ROUTINE USES REGISTERS RD-RF AND RL. 06500013 SPACE 2 07000013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT' 07500013 * 08000013 * N/A 08500013 * 09000013 *MACROS USED: 09500013 SPACE 1 10000013 * GET 10500013 * SMPPI 11000013 SPACE 2 11500013 *ENTRY POINTS: 12000013 SPACE 1 12500013 * CSECT NAME -IERADM ENTRY FROM IERRC9 VIA 13000013 * LOAD EP=IERADM,DCB=SORTLIB 13500013 * LR RP,RA 14000013 * BALR RO,RP 14500013 SPACE 2 15000013 *INPUT: -PPI FIELDS REFERENCED- 15500013 SPACE 1 16000013 * PPIBDSVA 16500013 * PPIBINSZ 17000013 * PPISKPRD 17500013 * PPISTDCB 18000013 * PPISW1 18500013 * PPIMODEX 18700017 SPACE 2 19000013 *OUTPUT: -PPI FIELDS INITIALIZED OR ALTERED- 19500013 SPACE 1 20000013 * PPIBDSVA IFF THERE IS DATA CHAINING 20500013 SPACE 2 21000013 *EXTERNAL ROUTINES: QSAM GET 21500013 SPACE 2 22000013 *EXTERNAL PARAMETERS: INPUT FILE'S DCB ADDRESS 22500013 SPACE 2 23000013 *EXITS-NORMAL: 23500013 SPACE 1 24000013 * IERRC9 RETURN TO LOAD ROUTINE VIA REG. RO 24500013 SPACE 2 25000013 *EXITS-ERROR: NONE 25500013 SPACE 2 26000013 *TABLES/WORK AREAS: 26500013 SPACE 1 27000013 * PPIPSVA IS USED TO SAVE RETURN REGISTER RO. 27500013 SPACE 2 28000013 *ATTRIBUTES: THIS IS A CLASS A MODULE. 28500013 SPACE 2 29000013 *NOTES: THIS MODULE IS ONLY APPLICABLE IF THE SKIP OPTION IS SPECIFIED 29500013 * ON THE CONTROL CARDS. 30000013 EJECT 30500013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 31000013 SPACE 1 31500013 RA EQU 0 CONTENTS IN- N/A 32000013 * 32500013 * USE- QSAM PARAMETER FOR GET WITH 33000013 * DATA CHAINING -EXCHANGE AREA 33500013 * CONTENTS OUT- ADDRESS OF WORKAREA 33800017 * FOR QSAM GET IF SPANNED RCDS. 34100017 * 34500013 RB EQU 1 CONTENTS IN- N/A 35000013 * 35500013 * USE- QSAM PARAMETER FOR GET WITH 36000013 * OR W/O DATA CHAINING - DCB 36500013 * CONTENTS OUT- N/A 37000013 * 37500013 RC EQU 2 CONTENTS IN- N/A 38000013 * 38500013 * USE- NOT USED 39000013 * 39500013 * CONTENTS OUT- N/A 40000013 * 40500013 RD EQU 3 CONTENTS IN- N/A 41000013 * 41500013 * USE- SKIP COUNT 42000013 * 42500013 * CONTENTS OUT- N/A 43000013 * 43500013 RE EQU 4 CONTENTS IN- N/A 44000013 * 44500013 * USE- DCB ADDRESS 45000013 * 45500013 * CONTENTS OUT- N/A 46000013 * 46500013 RF EQU 5 CONTENTS IN- N/A 47000013 * 47500013 * USE- EXCHANGE AREA ADDRESS 48000013 * 48500013 * CONTENTS OUT- N/A 49000013 * 49500013 RG EQU 6 CONTENTS IN- N/A 50000013 * 50500013 * USE- NOT USED 51000013 * 51500013 * CONTENTS OUT- N/A 52000013 * 52500013 RH EQU 7 CONTENTS IN- N/A 53000013 * 53500013 * USE- NOT USED 54000013 * 54500013 * CONTENTS OUT- N/A 55000013 * 55500013 RI EQU 8 CONTENTS IN- N/A 56000013 * 56500013 * USE- NOT USED 57000013 * 57500013 * CONTENTS OUT- N/A 58000013 * 58500013 RJ EQU 9 CONTENTS IN- N/A 59000013 * 59500013 * USE- NOT USED 60000013 * 60500013 * CONTENTS OUT- N/A 61000013 * 61500013 RK EQU 10 CONTENTS IN- N/A 62000013 * 62500013 * USE- NOT USED 63000013 * 63500013 * CONTENTS OUT- N/A 64000013 * 64500013 RL EQU 11 CONTENTS IN- N/A 65000013 * 65500013 * USE- PROGRAM BASE 66000013 * 66500013 * CONTENTS OUT- PROGRAM BASE 67000013 * 67500013 RM EQU 12 CONTENTS IN- N/A 68000013 * 68500013 * USE- NOT USED 69000013 * 69500013 * CONTENTS OUT- N/A 70000013 * 70500013 RN EQU 13 CONTENTS IN- ADDRESS OF PPI 71000013 * USE- PPI REFERENCE,REGISTER SAVE 71500013 * AREA 72000013 * CONTENTS OUT- ADDRESS OF PPI 72500013 RO EQU 14 CONTENTS IN- RETURN ADDR. TO IERRC9 73000013 * 73500013 * USE- SYSTEM RETURN FROM GET 74000013 * 74500013 * CONTENTS OUT- RETURN ADDR. TO -RC9 75000013 * 75500013 RP EQU 15 CONTENTS IN- PROGRAM BASE 76000013 * 76500013 * USE- SYSTEM LINK TO GET 77000013 * 77500013 * CONTENTS OUT- N/A 78000013 * 78500013 SPACE 2 79000013 *START OF MODULE CODE PROPER 79500013 SPACE 2 80000013 IERADM CSECT 80500013 USING *,RL 81000013 USING IERRCA,RN 81500013 LR RL,RP 82000013 SR RD,RD ZERO REGISTER 82500018 CL RD,PPISKPRD WAS THE SKIP OPTION ACTIVATED 83000013 * BY THE USER 83500013 BCR 8,RO NO- RETURN TO IERRC9 84000013 SPACE 1 84500013 ADMSK010 L RD,PPISKPRD SKIP COUNT 85000013 ST RO,PPIPSVA SAVE RETURN REGISTER 85500013 L RE,PPISTDCB OBTAIN THE INPUT 86000013 L RE,0(0,RE) DCB ADDRESS 86500013 TM PPIMODEX+2,X'02' IS IT SPANNED INPUT RECORDS 86600017 BC 1,ADMSK025 THEN BRANCH 86700017 TM PPISW1+1,X'08' ARE WE DATA CHAINING 87000013 BC 1,ADMDC030 THE SORT INPUT 87500013 SPACE 1 88000013 ADMSK020 GET (RE) SKIP 88500013 BCT RD,ADMSK020 LOOP 89000013 * 89500013 ADMSK023 L RO,PPIPSVA RETURN 90000017 BCR 15,RO TO IERRC9 90500013 * 90570017 ADMSK025 L RF,PPIGETMN CALCULATE WORKAREA ADDRESS FOR 90640017 L RA,12(0,RF) QSAM GET IN MOVE MODE 90710017 GET (RE),(RA) 90780017 BCT RD,ADMSK025 LOOP 90850017 BC 15,ADMSK023 BRANCH TO RETURN TO IERRC9 90920017 SPACE 1 91000013 SPACE 1 91500013 ADMDC030 L RF,PPIBDSVA OBTAIN FIRST RSA ADDRESS TO 92000013 ADMDC040 GET (RE),(RF) BE EXCHANGED 92500013 LR RF,RB SKIP 93000013 BCT RD,ADMDC040 LOOP 93500013 SPACE 1 94000013 L RF,PPIBDSVA UPDATE PPIA POINTER TO RSA, FOR 94500013 A RF,PPIBINSZ INITIAL ONE MAY BE VALID(IE.IN THE 95000013 ST RF,PPIBDSVA CCW LIST WAITING TO BE PROCESSED). 95500013 L RO,PPIPSVA RETURN 96000013 BCR 15,RO TO IERRC9 96500013 EJECT 97000013 SMPPI 97500013 END 98000013 ./ ADD SSI=01011720,SOURCE=1,NAME=IERADP TITLE 'IERADP - OS/360 SORT/MERGE - 360-SM023 5/11/66' 00200013 SPACE 2 00400013 *MODULE NAME *** IERADP *** 00600013 SPACE 2 00800013 *STATUS:CHANGE LEVEL 000 01000013 SPACE 2 01200013 *MODULE FUNCTION 01400013 * OSCL./2314 SORT PHASE ASSIGNMENT -FIXED LENGTH W/O USER EXIT E15. 01600013 * THE FUNCTION OF THIS MODULE IS TO BUILD A TABLE OF RSA ADDRESSES 01800013 * WITH THEIR RESPECTIVE AREA BYTE COUNTS IN IERRDB. THE TABLE IS 02000013 * NEEDED BECAUSE RECORD STORAGE AREA MAY NOT BE CONTIGUOUS. THIS 02200013 * MODULE ALSO BUILDS THE INPUT BUFFERS USING THE BUILD MACRO. IT 02400013 * ALSO OBTAINS THE ADDRESS OF THE INPUT DCB AND PUTS IT IN THE 02600013 * RUNNING PROGRAM,IERRDB. 02800013 * IERADB INSERTS THE RECORD LENGTH OF THE FIXED LENGTH RECORD WHICH 03000013 * MUST BE LESS THAN OR EQUAL TO 256 BYTES IN IERRDB MOVE INSTRUCTION. 03200013 * IF 2314 SORTING TECH. IS BEING USED, THE RMAX CHECK IN R.P. IS 03400013 * OVERLAYED -I.E. RDP1035 BECOMES UNCOND. BRANCH TO RDP1030 -2. 03600013 SPACE 2 03800013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 04000013 SPACE 1 04200013 * NONE 04400013 SPACE 2 04600013 *LIST OF MACROS USED BY MODULE: 04800013 SPACE 1 05000013 * SMPPI 05200013 * BUILDS 05400013 SPACE 2 05600013 *ENTRY POINTS: 05800013 SPACE 1 06000013 * FROM IERRC9 ENTRY FROM:IERRC9 06200013 * CALLING SEQUENCE- 06400013 * LOAD EP=IERADB,DCB=SORTLIB 06600013 * LR RP,RA 06800013 * BALR RO,RP 07000013 SPACE 2 07200013 *INPUT: - PPI FIELDS REFERENCED 07400013 SPACE 1 07600013 * PPIDEB PPISTDCB PPILAB08 07800013 * PPIRCDL1 PPILAB03 08000013 * PPILEXFF PPILAB02 08200013 SPACE 1 08400013 * INFO IS NEEDED TO BUILD THE RSA TABLE IN IERRDB AND TO BUILD THE 08600013 * INPUT BUFFERS. 08800013 SPACE 2 09000013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 09200013 SPACE 1 09400013 * PPISW1 09600013 SPACE 2 09800013 *EXTERNAL ROUTINES: 10000013 SPACE 1 10200013 * NONE 10400013 SPACE 2 10600013 *EXTERNAL PARAMETERS: 10800013 SPACE 1 11000013 * SEE REGISTERS 11200013 SPACE 2 11400013 *EXITS-NORMAL: 11600013 SPACE 1 11800013 * TO IERRC9 EXIT TO:IERRC9 12000013 * CALLING SEQUENCE- 12200013 * BR RO RETURN 12400013 SPACE 2 12600013 *EXITS-ERROR: 12800013 SPACE 1 13000013 * NONE 13200013 SPACE 2 13400013 *TABLES/WORK AREAS: 13600013 SPACE 1 13800013 * WAREA-WORK AREA 14000013 SPACE 2 14200013 *ATTRIBUTES: THIS IS A CLASS A MODULE 14400013 SPACE 2 14600013 *NOTES: THIS MODULE WILL EXECUTE FOR ANY FIXED LENGTH SORT WITHOUT EXIT 14800013 * E15 AND E16. THE FIXED LENGTH INPUT RCD MUST BE EQUL/L.T. 256 BYTES 15000013 EJECT 15200013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 15400013 SPACE 1 15600013 RA EQU 0 CONTENTS IN- N/A 15800013 * USE- HAS NO. OF BUFFERS AND BUFFER 16000013 * SIZE FOR BUILD MACRO 16200013 * CONTENTS OUT- N/A 16400013 RB EQU 1 CONTENTS IN- N/A 16600013 * USE- ADDR OF INPUT BUFFER POOL FOR 16800013 * BUILD MACRO 17000013 * CONTENTS OUT- N/A 17200013 RC EQU 2 CONTENTS IN- N/A 17400013 * USE- ADDR OF RSA TABLE IN IERRDB 17600013 * CONTENTS OUT- N/A 17800013 RD EQU 3 CONTENTS IN- N/A 18000013 * USE- COUNTER FOR NO. OF RSA AREAS 18200013 * CONTENTS OUT- N/A 18400013 RE EQU 4 CONTENTS IN- N/A 18600013 * USE- WORK REGISTER 18800013 * CONTENTS OUT- N/A 19000013 RF EQU 5 CONTENTS IN- N/A 19200013 * USE- PTR TO THE TABLE OF RSA ADDRS 19400013 * IN PPI 19600013 * CONTENTS OUT- N/A 19800013 RG EQU 6 CONTENTS IN- N/A 20000013 * USE- INDEX REGISTER 20200013 * - WORK REGISTER 20400013 * CONTENTS OUT- N/A 20600013 RH EQU 7 CONTENTS IN- N/A 20800013 * USE- WORK REGISTER 21000013 * CONTENTS OUT- N/A 21200013 RI EQU 8 CONTENTS IN- N/A 21400013 * USE- WORK REGISTER 21600013 * CONTENTS OUT- N/A 21800013 RJ EQU 9 CONTENTS IN- N/A 22000013 * USE- NOT USED 22200013 * CONTENTS OUT- N/A 22400013 RK EQU 10 CONTENTS IN- N/A 22600013 * USE- IERRDB DSECT BASE REGISTER 22800013 * CONTENTS OUT- N/A 23000013 RL EQU 11 CONTENTS IN- N/A 23200013 * USE-MODULE BASE REGISTER 23400013 * CONTENTS OUT- N/A 23600013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 23800013 * USE- NOT USED 24000013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 24200013 RN EQU 13 CONTENTS IN-ADDR OF PPI 24400013 * USE-PPI REFERENCES,REG SAVE AREA 24600013 * CONTENTS OUT-ADDR OF PPI 24800013 RO EQU 14 CONTENTS IN- IERRC9 RETURN ADDR 25000013 * USE- NOT USED 25200013 * CONTENTS OUT- IERRC9 RETURN ADDR 25400013 RP EQU 15 CONTENTS IN- IERADB ENTRY PT 25600013 * USE- ESTABLISH IERADB BASE REGISTER 25800013 * CONTENTS OUT- N/A 26000013 SPACE 2 26200013 *START OF MODULE CODE PROPER: 26400013 SPACE 2 26600013 IERADP CSECT 26800013 USING *,RL THIS MODULE BASE REG 27000013 USING IERRDP,RK 27200013 USING IERRCA,RN 27400013 IERMDA LR RL,RP SET THIS MODULE BASE REGISTER 27600013 L RK,PPIDEB+4 SET IERRDB DSECT BASE REGISTER 27800013 SPACE 2 28000013 *ESTABLISH ALL RECORD STORAGE AREA ADDRESSES AND THEIR RESPECTIVE BYTE 28200013 * COUNTS AND BUILD RSA TABLE IN IERRDB 28400013 SPACE 1 28600013 L RC,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH 28800013 ST RC,ADCONPTR THEIR RESPECTIVE BYTE COUNTS 29000013 SR RD,RD 29200013 SR RG,RG 29400013 IC RD,PPILAB08 NO. OF RSA AREAS 29600013 LA RH,4 4 BYTES FOR TREE ADDR 29800013 AH RH,PPILEXFF PLUS SIZE OF ROUNDED EXTRACTED 30000013 * CONTROL FIELDS 30200013 L RF,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH THEIR 30400013 * RESPECTIVE BYTE COUNTS 30600013 ADPRSALP L RE,0(RG,RF) STARTING ADDRESS OF AN RSA AREA 30800013 AR RE,RH ADDR OF 1ST RCD IN THIS RSA AREA 31000013 ST RE,0(RG,RC) STORE IN IERRDB RSA ADDR TABLE 31200013 L RE,4(RG,RF) BYTE COUNT OF THIS RSA AREA 31400013 S RE,PPIBINSZ SUBTRACT LENGTH OF FIRST RECORD 31600013 ST RE,4(RG,RC) STORE IN IERRDB RSA ADDR TABLE 31800013 LA RG,8(0,RG) UPDATE INDEX PTR 32000013 BCT RD,ADPRSALP DECR RSA CTR. LOOP IF MORE RSA AREAS 32200013 MVC WADDRSA(8),0(RC) MOVE PARAMS INTO RUNNIGN PROGRAM 32400013 SPACE 1 32600013 *INSERT INPUT DCB ADDR AND RECORD LENGTH IN IERRDB. BUILD INPUT BUFFERS 32800013 SPACE 1 33000013 L RG,PPISTDCB SET INPUT DCB ADDRS IN RUNNING PROG. 33200013 L RE,0(RG) 33400013 ST RE,KADCB 33600013 LH RI,PPIRCDL1 SET RCD LENGTH - 1 IN IN-LINE 33800013 BCTR RI,0 MOVE INSTR IN RUNNING PROG 34000013 STC RI,RDP1030+1 34200013 SPACE 1 34400013 L RB,PPILAB02 SET REG 1 = ADDRESS OF BUFFER LIST 34600013 MVC WAREA+2(2),PPILAB03+2 34800013 MVC WAREA+1(1),PPILAB03 35000013 L 0,WAREA SET NO. OF BUFFERS AND BUFFER SIZE 35200013 * IN REG 0 35400013 SPACE 2 35600013 BUILDS (1),(0) 35800013 SPACE 2 36000013 * SET USER EOF SWITCH IN PPI, SINCE THERE IS NO USER EXIT 36200013 SPACE 1 36400013 OI PPISW1+7,X'80' 36600013 SPACE 2 36800013 SPACE 2 37000013 *IF 2314, OVERLAY RMAX CHECK IN R.P. RETURN TO IERRC9. 37200013 SPACE 1 37400013 TM PPISW1+6,X'02' 2314 SORT 37600013 BCR 8,RO NO, RETURN TO -RC9 37800013 SPACE 1 38000013 MVC RDP1035(4),KADPKON OVERLAY RMAX CHECK 38200013 SPACE 1 38400013 BR RO RETURN 38600013 SPACE 2 38800013 *LIST OF WORK AREAS: 39000013 SPACE 1 39200013 WAREA DC F'0' 39400013 SPACE 2 39600013 *LIST OF CONSTANTS: 39800013 SPACE 1 40000013 DROP RL 40200013 DROP RK 40400013 USING IERRDP,RL 40600013 KADPKON B RDP1030-2 OVERLAY RMAX CHECK 40800013 EJECT 41000013 IERRDP DSECT DUMMY RUNNING PROGRAM 41200013 USING *,RL THIS MODULE BASE REG 41400013 USING IERRCA,RN PPI ADDR 41600013 IERDD1 B RDP1050 ENTRY FROM SORT NETWORK. G RECORDS 41800013 * ARE IN THE TREE(ONCE ONLY) 42000013 B RDP1060 ENTRY FROM EOF ROUTINE 42200013 B RDP1010 NORMAL ENTRY WHILE FILLING TREE 42400013 * WILL BE OVERLAID BY: 42600013 * B RDP1020 WHEN RSA HAS BEEN FILLD 42800013 * B RDP1065 AFTER INPUT EOF 43000013 SPACE 2 43200013 * ENTRY TO REINITIALIZE IN ORDER TO BEGIN FILLING TREE 43400013 SPACE 1 43600013 MVC RDP1040(8),KMOD5 REOVERLAY OVERLAID INSTRUCTIONS 43800013 MVC IERDD1+8(4),KMOD2 44000013 L RH,PPILAB08 LOAD ADDRESS OF RSA PARAM TABLE 44200013 ST RH,ADCONPTR STORE 44400013 MVC WADDRSA(8),0(RH) MOVE NEW PARAMS INTO WORK AREA 44600013 * FIRST WORD = ADDRESS NEXT RSA BIN 44800013 * SECOND WORD = BIN BYTE COUNT MINUS 45000013 * ONE RECORD LENGTH 45200013 L RB,WADDRESS LOAD REGISTER FOR MOVE INSTRUCTION 45400013 L RD,WADDRSA TO MOVE SAVED RECORD INTO RSA 45600013 B RDP1035 BRANCH TO MOVE RECORD 45800013 SPACE 2 46000013 *NORMAL ENTRY FROM NETWORK WHILE FILLING TREE, ENTRY FROM ALGORITHM ON 46200013 * OUTPUT EOS, NORMAL ENTRY FROM BLOCK WHILE RUNNING 46400013 SPACE 1 46600013 RDP1010 L RD,WADDRSA LOAD UPDATED ADDRESS OF RSA 46800013 RDP1020 L RG,KADCB ADDR OF THE INPUT DCB 47000013 GET (RG) 47200013 SPACE 1 47400013 *GET RETURNS ADDR OF RCD IN INPUT BUFFER IN RB. 47600013 SPACE 1 47800013 ST RB,WADDRESS SAVE ADDRESS OF RECORD IN BUFFER 48000013 SPACE 1 48200013 *UPDATE RECORD COUNTER 48400013 SPACE 1 48600013 L RG,PPICOUNT 48800013 LA RG,1(RG) INCR RCD COUNT BY 1 49000013 ST RG,PPICOUNT 49200013 RDP1035 L RG,WRMAX INCREMENT COUNTER FOR RMAX. RMAX = 49400013 LA RG,1(RG) MAX NO OF RECORDS ON 1 REEL TAPE 49600013 ST RG,WRMAX SAVE 49800013 C RG,PPIRMAX HAVE RMAX RECORDS BEEN EXCEEDED? 50000013 BH RDP1055 BRANCH ON YES 50200013 SPACE 2 50400013 * MOVE RECORD FROM INPUT BUFFER TO RSA 50600013 SPACE 1 50800013 LR RC,RB LOAD PARAM REG FOR SORT NETWORK 51000013 RDP1030 MVC 0(1,RD),0(RC) MOVE RCD FROM INPUT BUFFER TO RSA - 51200013 * LENGTH SET BY ASSIGNMENT ROUTINE 51400013 SPACE 2 51600013 *UPDATE RSA TABLE PARAMETERS 51800013 SPACE 1 52000013 RDP1040 LR RF,RD WILL BE OVLAYED BY BR TO NETWORK 52200013 * AFTER G+1 RCDS 52400013 A RF,PPIBINSZ UPDATE RSA ADDR TO NEXT BIN 52600013 ST RF,WADDRSA STORE 52800013 L RE,WBYTECNT LOAD REMAINING BYTES IN RSA CHUNK 53000013 S RE,PPIBINSZ SUBTRACT LENGTH OF NEXT RECORD 53200013 BM RDP1045 BRANCH ON MINUS RESULT TO UPDATE PTR 53400013 ST RE,WBYTECNT OTHERWISE STORE 53600013 SPACE 1 53800013 *INTERFACE WITH SORT NETWORK DURING FILL OF TREE. 54000013 SPACE 1 54200013 L RL,PPINET+4 ADDR OF NETWORK 54400013 B 4(RL) BR TO FILL TREE. 54600013 SPACE 2 54800013 *UPDATE POINTER TO NEXT RSA TABLE ENTRY(NEXT RSA AREA) 55000013 SPACE 1 55200013 RDP1045 L RH,ADCONPTR LOAD ADDRESS IN RSA PARAM TABLE 55400013 LA RH,8(RH) UPDATE TO NEXT TABLE ENTRY 55600013 ST RH,ADCONPTR SAVE UPDATED POINTER TO TABLE 55800013 MVC WADDRSA(8),0(RH) MOVE NEW PARAMS INTO WORK AREA 56000013 * FIRST WORD = ADDRESS NEXT RSA BIN 56200013 * SECOND WORD = BIN BYTE COUNT MINUS 56400013 * ONE RECORD LENGTH 56600013 L RL,PPINET+4 ADDRESS OF SORT NETWORK 56800013 B 4(RL) BRANCH TO FILL TREE 57000013 SPACE 2 57200013 SPACE 2 57400013 *SORT TREE HAS BEEN FILLED. THE NEXT DEBLOCKED RECORD IS MOVED TO THE 57600013 *NEXT SPACE IN RSA. IN ALL SUBSEQUENT ENTRIES TO THIS MODULE, RD WILL 57800013 *POINT TO THE WINNER RECORD IN RSA. THE DEBLOCKED RECORD MUST BE MOVED 58000013 *TO THE LOCATION INDICATED BY RD. ALSO, THIS MODULE MUST NOW ENTER THE 58200013 *SORT NETWORK AT ITS NORMAL ENTRY POINT. THE FOLLOWING CODE MODIFIES 58400013 *THIS MODULE TO EFFECT THESE NEW REQUIREMENTS. 58600013 SPACE 1 58800013 RDP1050 MVC IERDD1+8(4),KMOD1 MOCIFY ENTRY BRANCH ADDRESS 59000013 MVC RDP1040(8),KMOD3 MODIFY EXIT ADDRESS 59200013 B RDP1010 RETURN TO GET NEXT RECORD 59400013 SPACE 1 59600013 RDP1055 SR RE,RE RMAX COUNT HAS BEEN EXCEEDED 59800013 ST RE,WRMAX ZERO OUT COUNT FOR RMAX IN PROGRAM 60000013 OI PPISW1+7,X'40' SET RMAX BIT IN PPI 60200013 SPACE 2 60400013 *WHEN EOF HAS BEEN REACHED, THERE ARE NO MORE RECORDS TO BE DEBLOCKED 60600013 *BUT THE SORT NETWORK MUST EMPTY ITS TREE. FUTURE ENTRIES TO THIS 60800013 *MODULE DO NO PROCESSING, BUT MERELY EXIT TO THE SORT NETWORK AT ITS 61000013 *EMPTYING ENTRY. THE FOLLOWING CODING MODIFIES THE PRESENT ENTRY POINT 61200013 *TO EFFECT THIS CHANGE AND THEN EXITS TO THE SORT NETWORK AT ITS EOF 61400013 *ENTRY. 61600013 SPACE 1 61800013 RDP1060 MVC IERDD1+8(4),KMOD4 BR DIRECTLY TO SORT NETWORK 62000013 SPACE 2 62200013 *INTERFACE TO SORT NETWORK ON EOF. 62400013 SPACE 1 62600013 L RL,PPINET+4 ADDR OF SORT NETWORK 62800013 B 8(RL) 63000013 SPACE 2 63200013 * INTERFACE TO SORT NETWORK TO FLUSH TREE 63400013 SPACE 1 63600013 RDP1065 L RL,PPINET+4 BRANCH IMMEDIATELY BACK TO NETWORK 63800013 B 16(RL) AFTER INPUT EOF 64000013 SPACE 2 64200013 *CONSTANTS USED BY THE MODULE: 64400013 SPACE 1 64600013 KMOD1 B RDP1020 OVERLAY RDP1010 AFTER G+1 RCDS 64800013 KMOD2 B RDP1010 TO RESTORE NETWORK ENTRY FOR FILLING 65000013 KMOD3 L RL,PPINET+4 OVERLAY RDP1040 AFTER G+1 RCDS 65200013 B 12(RL) NORMAL BRANCH TO NETWORK 65400013 KMOD4 B RDP1065 RETURN TO NETWORK AFTER INPUT EOF 65600013 KMOD5 LR RF,RD TO RESTORE INSTRUCTIONS OVERLAID 65800013 A RF,PPIBINSZ BY BRANCH TO NETWORK AFTER TREE 66000013 ST RF,WADDRSA IS FILLED 66200013 KADCB DC F'0' INPUT DCB ADDR LOADED BY A.P. 66400013 SPACE 2 66600013 *LIST OF WORK AREAS/TABLES: 66800013 SPACE 1 67000013 WADDRESS DS F ADDRESS OF RECORD FROM LAST 'GET' 67200013 WRMAX DC F'0' COUNT TO COMPARE AGAINST PPIRMAX 67400013 WADDRSA DS F UPDATED ADDRESS OF RSA 67600013 WBYTECNT DS F REMAINING BYTE COUNT IN RSA CHUNK 67800013 ADCONPTR DS F 68000013 SPACE 2 68200013 EJECT 68400013 SMPPI 68600013 END 68800013 ./ ADD SSI=01011614,SOURCE=1,NAME=IERADQ TITLE 'IERADQ - OS/360 SORT/MERGE - 360-SM023 05/11/66' 00200013 SPACE 2 00400013 *MODULE NAME *** IERADQ *** 00600013 SPACE 2 00800013 *STATUS:CHANGE LEVEL 000 01000013 SPACE 2 01200013 *MODULE FUNCTION 01400013 * OSCL/2314 SORT PHASE ASSIGNMENT - FIXED LENGTH W/O USER EXIT E15. 01600013 * THE FUNCTION OF THIS MODULE IS TO BUILD A TABLE OF RSA ADDRESSES 01800013 * WITH THEIR RESPECTIVE AREA BYTE COUNTS IN IERRDC. THE TABLE IS 02000013 * NEEDED BECAUSE RECORD STORAGE AREA MAY NOT BE CONTIGUOUS. THIS 02200013 * MODULE ALSO BUILDS THE INPUT BUFFERS USING THE BUILD MACRO. IT 02400013 * ALSO OBTAINS THE ADDRESS OF THE INPUT DCB AND PUTS IT IN THE 02600013 * RUNNING PROGRAM IERRDC. 02800013 SPACE 2 03000013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 03200013 SPACE 1 03400013 * NONE 03600013 SPACE 2 03800013 *LIST OF MACROS USED BY MODULE: 04000013 SPACE 1 04200013 * SMPPI 04400013 * BUILDS 04600013 SPACE 2 04800013 *ENTRY POINTS: 05000013 SPACE 1 05200013 * FROM IERRC9 ENTRY FROM:IERRC9 05400013 * CALLING SEQUENCE- 05600013 * LOAD EP=IERADC,DCB=SORTLIB 05800013 * LR RP,RA 06000013 * BALR RO,RP 06200013 SPACE 2 06400013 *INPUT: - PPI FIELDS REFERENCED 06600013 SPACE 1 06800013 * PPIDEB PPILAB08 07000013 * PPILAB03 PPILEXFF 07200013 * PPILAB02 PPISTDCB 07400013 SPACE 1 07600013 * INFO IS NEEDED TO BUILD THE RSA TABLE IN IERRDC AND TO BUILD THE 07800013 * INPUT BUFFERS. 08000013 SPACE 2 08200013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 08400013 SPACE 1 08600013 * PPISW1 08800013 SPACE 2 09000013 *EXTERNAL ROUTINES: 09200013 SPACE 1 09400013 * NONE 09600013 SPACE 2 09800013 *EXTERNAL PARAMETERS: 10000013 SPACE 1 10200013 * SEE REGISTERS 10400013 SPACE 2 10600013 *EXITS-NORMAL: 10800013 SPACE 1 11000013 * TO IERRC9 EXIT TO: IERRC9 11200013 * CALLING SEQUENCE- 11400013 * BR RO RETURN 11600013 SPACE 2 11800013 *EXITS-ERROR: 12000013 SPACE 1 12200013 * NONE 12400013 SPACE 2 12600013 *TABLES/WORK AREAS: 12800013 SPACE 1 13000013 * WAREA-WORK AREA 13200013 SPACE 2 13400013 *ATTRIBUTES: THIS IS A CLASS A MODULE 13600013 SPACE 2 13800013 *NOTES:THIS MODULE WILL EXECUTE FOR ANY FIXED LENGTH SORT WITHOUT EXITS 14000013 * E15 AND E16. THE INPUT RCD MUST BE GREATER THAN 256 BYTES. 14200013 EJECT 14400013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 14600013 SPACE 1 14800013 RA EQU 0 CONTENTS IN- N/A 15000013 * USE- LOAD TO NO.OF BUFFERS AND 15200013 * BUFFER SIZE FOR BUILD MACRO 15400013 * CONTENTS OUT- N/A 15600013 RB EQU 1 CONTENTS IN- N/A 15800013 * USE- ADDR OF INPUT BUFFER POOL FOR 16000013 * BUILD MACRO 16200013 * CONTENTS OUT- N/A 16400013 RC EQU 2 CONTENTS IN- N/A 16600013 * USE- ADDR OF RSA TABLE IN IERRDC 16800013 * CONTENTS OUT- N/A 17000013 RD EQU 3 CONTENTS IN- N/A 17200013 * USE- COUNTER FOR NO. OF RSA AREAS 17400013 * CONTENTS OUT- N/A 17600013 RE EQU 4 CONTENTS IN- N/A 17800013 * USE- WORK REGISTER 18000013 * CONTENTS OUT- N/A 18200013 RF EQU 5 CONTENTS IN- N/A 18400013 * USE- PTR TO THE TABLE OF RSA ADDRS 18600013 * IN PPI 18800013 * CONTENTS OUT- N/A 19000013 RG EQU 6 CONTENTS IN- N/A 19200013 * USE- INDEX REGISTER 19400013 * - WORK REGISTER 19600013 * CONTENTS OUT- N/A 19800013 RH EQU 7 CONTENTS IN- N/A 20000013 * USE- WORK REGISTER 20200013 * CONTENTS OUT- N/A 20400013 RI EQU 8 CONTENTS IN- N/A 20600013 * USE- WORK REGISTER 20800013 * CONTENTS OUT- N/A 21000013 RJ EQU 9 CONTENTS IN- N/A 21200013 * USE- NOT USED 21400013 * CONTENTS OUT- N/A 21600013 RK EQU 10 CONTENTS IN- N/A 21800013 * USE- IERRDC DSECT BASE REGISTER 22000013 * CONTENTS OUT- N/A 22200013 RL EQU 11 CONTENTS IN- N/A 22400013 * USE-MODULE BASE REGISTER 22600013 * CONTENTS OUT- N/A 22800013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 23000013 * USE- NOT USED 23200013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 23400013 RN EQU 13 CONTENTS IN-ADDR OF PPI 23600013 * USE-PPI REFERENCES,REG SAVE AREA 23800013 * CONTENTS OUT-ADDR OF PPI 24000013 RO EQU 14 CONTENTS IN- IERRC9 RETURN ADDR 24200013 * USE- NOT USED 24400013 * CONTENTS OUT- IERRC9 RETURN ADDR 24600013 RP EQU 15 CONTENTS IN- IERADC ENTRY PT 24800013 * USE- ESTABLISH IERADC BASE REGISTER 25000013 * CONTENTS OUT- N/A 25200013 SPACE 2 25400013 *START OF MODULE CODE PROPER: 25600013 SPACE 2 25800013 IERADQ CSECT 26000013 USING *,RL THIS MODULE BASE REGISTER 26200013 USING IERRDQ,RK BASE REG FOR R.P. DSECT 26400013 USING IERRCA,RN PPI BASE REG 26600013 IERMDA LR RL,RP SET THIS MODULE BASE REGISTER 26800013 L RK,PPIDEB+4 SET IERRDC DSECT BASE REGISTER 27000013 SPACE 2 27200013 *ESTABLISH ALL RECORD STORAGE AREA ADDRESSES AND THEIR RESPECTIVE BYTE 27400013 * COUNTS AND BUILD RSA TABLE IN IERRDB. 27600013 SPACE 1 27800013 L RC,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH 28000013 ST RC,ADCONPTR THEIR RESPECTIVE BYTE COUNTS 28200013 SR RD,RD 28400013 SR RG,RG 28600013 IC RD,PPILAB08 NO. OF RSA AREAS 28800013 LA RH,4 4 BYTES FOR TREE ADDRESS 29000013 AH RH,PPILEXFF PLUS SIZE OF ROUNDED EXTRACTED 29200013 * CONTROL FIELDS 29400013 L RF,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH THEIR 29600013 * RESPECTIVE BYTE COUNTS 29800013 ADQRSALP L RE,0(RG,RF) STARTING ADDRESS OF AN RSA AREA 30000013 AR RE,RH EQLS ADDR OF 1ST RCD IN THE RSA AREA 30200013 ST RE,0(RG,RC) STORE IN IERRDC RSA ADDR TABLE 30400013 L RE,4(RG,RF) BYTE COUNT OF THIS RSA AREA 30600013 S RE,PPIBINSZ SUBTRACT LENGTH OF FIRST RECORD 30800013 ST RE,4(RG,RC) STORE IN IERRDC RSA ADDR TABLE 31000013 LA RG,8(0,RG) UPDATE INDEX REG 31200013 BCT RD,ADQRSALP DECR RSA CTR, LOOP IF MORE RSA AREAS 31400013 MVC WADDRSA(8),0(RC) MOVE PARAMS INTO RUNNIGN PROGRAM 31600013 SPACE 1 31800013 *INSERT INPUT DCB ADDR IN IERRDC. BUILD INPUT BUFFERS. 32000013 SPACE 1 32200013 L RG,PPISTDCB SET INPUT DCB ADDRS IN RUN PROG 32400013 L RE,0(RG) 32600013 ST RE,KADCB 32800013 SPACE 1 33000013 L RB,PPILAB02 SET REG 1 = ADDRESS OF BUFFER LIST 33200013 MVC WAREA+2(2),PPILAB03+2 33400013 MVC WAREA+1(1),PPILAB03 33600013 L 0,WAREA SET NO. OF BUFFERS AND BUFFER SIZE 33800013 * IN REG 0 34000013 SPACE 2 34200013 BUILDS (1),(0) 34400013 SPACE 2 34600013 * SET USER EOF SWITCH IN PPI, SINCE THERE IS NO USER EXIT 34800013 SPACE 1 35000013 OI PPISW1+7,X'80' 35200013 SPACE 1 35400013 SPACE 1 35600013 *IF 2314, OVERLAY RMAX CHECK IN R.P. RETURN TO IERRC9. 35800013 SPACE 1 36000013 TM PPISW1+6,X'02' 2314 SORT 36200013 BCR 8,RO NO, RETURN TO -RC9 36400013 SPACE 1 36600013 MVC RDQ1035(4),KADQKON OVERLAY RMAX CHECK 36800013 SPACE 1 37000013 BR RO RETURN 37200013 SPACE 2 37400013 *LIST OF WORK AREAS: 37600013 SPACE 1 37800013 WAREA DC F'0' 38000013 SPACE 2 38200013 *LIST OF CONSTANTS: 38400013 SPACE 1 38600013 DROP RK 38800013 DROP RL 39000013 USING IERRDQ,RL 39200013 KADQKON B RDQ1038 OVERLAY RMAX CHECK 39400013 EJECT 39600013 IERRDQ DSECT DUMMY RUNNING PROGRAM 39800013 USING *,RL THIS MODULE BASE REGISTER 40000013 USING IERRCA,RN 40200013 IERDD1 B RDQ1050 ENTRY FROM SORT NETWORK. G RECORDS 40400013 * ARE IN THE TREE(ONCE ONLY) 40600013 B RDQ1060 ENTRY FROM EOF ROUTINE 40800013 B RDQ1010 NORMAL ENTRY WHILE FILLING TREE 41000013 * WILL BE OVERLAID BY: 41200013 * B RDQ1020 WHEN RSA HAS BEEN FILLD 41400013 * B RDQ1065 AFTER INPUT EOF 41600013 SPACE 2 41800013 * ENTRY TO REINITIALIZE IN ORDER TO BEGIN FILLING TREE 42000013 SPACE 1 42200013 MVC RDQ1040(8),KMOD5 REOVERLAY OVERLAID INSTRUCTIONS 42400013 MVC IERDD1+8(4),KMOD2 42600013 L RH,PPILAB08 LOAD ADDRESS OF RSA PARAM TABLE 42800013 ST RH,ADCONPTR STORE 43000013 MVC WADDRSA(8),0(RH) MOVE NEW PARAMS INTO WORK AREA 43200013 * FIRST WORD = ADDRESS NEXT RSA BIN 43400013 * SECOND WORD = BIN BYTE COUNT MINUS 43600013 * ONE RECORD LENGTH 43800013 L RB,WADDRESS LOAD REGISTER FOR MOVE INSTRUCTION 44000013 LR RC,RB INITIALIZE RC IN CASE OF EXTRACT 44200013 L RD,WADDRSA TO MOVE SAVED RECORD INTO RSA 44400013 B RDQ1035 BRANCH TO MOVE RECORD 44600013 SPACE 2 44800013 *NORMAL ENTRY FROM NETWORK WHILE FILLING TREE, ENTRY FROM ALGORITHM ON 45000013 * OUTPUT EOS, NORMAL ENTRY FROM BLOCK WHILE RUNNING. 45200013 SPACE 1 45400013 RDQ1010 L RD,WADDRSA LOAD UPDATED ADDRESS OF RSA 45600013 RDQ1020 L RG,KADCB ADDR OF THE INPUT DCB 45800013 GET (RG) 46000013 SPACE 1 46200013 *GET RETURNS ADDR OF RCD IN INPUT BUFFER IN RB. 46400013 SPACE 1 46600013 ST RB,WADDRESS SAVE ADDRESS OF RECORD IN BUFFER 46800013 LR RC,RB INITIALIZE RC IN CASE OF EXTRACT 47000013 SPACE 2 47200013 * UPDATE RECORD COUNTER 47400013 SPACE 1 47600013 L RG,PPICOUNT 47800013 LA RG,1(RG) INCR RCD COUNT BY 1 48000013 ST RG,PPICOUNT 48200013 RDQ1035 L RG,WRMAX INCREMENT COUNTER FOR RMAX. RMAX = 48400013 LA RG,1(RG) MAX NO OF RECORDS ON 1 REEL TAPE 48600013 C RG,PPIRMAX HAVE RMAX RECORDS BEEN EXCEEDED? 48800013 BH RDQ1055 BRANCH ON YES 49000013 ST RG,WRMAX SAVE 49200013 SPACE 2 49400013 *LINK TO MOVE LIST WHICH MOVES THE RECORD FROM THE INPUT BUFFER TO RSA. 49600013 *INPUT BUFFER RCD ADDRESS IN RE. RSA RCD ADDRESS IN RF. 49800013 SPACE 1 50000013 RDQ1038 LR RF,RD ADDRESS IN RSA TO MOVE INPUT RCD 50200013 LR RE,RB INPUT RECORD ADDRESS 50400013 L RP,PPIBDSVA+4 ADDRESS OF MOVE LIST 50600013 BALR RO,RP 50800013 SPACE 2 51000013 *UPDATE RSA TABLE PARAMETERS 51200013 SPACE 1 51400013 RDQ1040 LR RF,RD ADDR OF RCD IN RSA. WILL BE OVLAYED 51600013 * BY BR TO NETWORK AFTER G+1 RCDS. 51800013 A RF,PPIBINSZ UPDATE RSA ADDR TO NEXT BIN 52000013 ST RF,WADDRSA STORE 52200013 L RE,WBYTECNT LOAD REMAINING BYTES IN RSA CHUNK 52400013 S RE,PPIBINSZ SUBTRACT LENGTH OF NEXT RECORD 52600013 BM RDQ1045 BRANCH ON MINUS RESULT TO UPDATE PTR 52800013 ST RE,WBYTECNT OTHERWISE STORE 53000013 SPACE 1 53200013 *INTERFACE WITH SORT NETWORK DURING FILL OF TREE. 53400013 SPACE 1 53600013 L RL,PPINET+4 ADDR OF NETWORK 53800013 B 4(RL) BR TO FILL TREE 54000013 SPACE 2 54200013 *UPDATE POINTER TO NEXT ENTRY IN RSA TABLE(EQUALS NEXT RSA AREA) 54400013 SPACE 1 54600013 RDQ1045 L RH,ADCONPTR LOAD ADDRESS IN RSA PARAM TABLE 54800013 LA RH,8(RH) UPDATE TO NEXT TABLE ENTRY 55000013 ST RH,ADCONPTR SAVE UPDATED POINTER TO TABLE 55200013 MVC WADDRSA(8),0(RH) MOVE NEW PARAMS INTO WORK AREA 55400013 * FIRST WORD = ADDRESS NEXT RSA BIN 55600013 * SECOND WORD = BIN BYTE COUNT MINUS 55800013 * ONE RECORD LENGTH 56000013 L RL,PPINET+4 ADDRESS OF SORT NETWORK 56200013 B 4(RL) BRANCH TO FILL TREE 56400013 SPACE 2 56600013 *SORT TREE HAS BEEN FILLED. IN FUTURE ENTRIES TO THIS MODULE, RD WILL 56800013 *POINT TO THE WINNER RECORD IN RSA. THE NEW RECORD WHICH HAS BEEN 57000013 *DEBLOCKED MUST BE MOVED TO THE LOCATION IN RSA INDICATED BY RD. ALSO, 57200013 *THIS MODULE MUST NOW ENTER THE SORT NETWORK AT 12(RL). THE 57400013 *FOLLOWING CODE MODIFIES THIS MODULE TO EFFECT THESE NEW REQUIREMENTS. 57600013 SPACE 1 57800013 RDQ1050 MVC IERDD1+8(4),KMOD1 MOCIFY ENTRY BRANCH ADDRESS 58000013 MVC RDQ1040(8),KMOD3 MODIFY EXIT ADDRESS 58200013 B RDQ1010 RETURN TO GET NEXT RECORD 58400013 SPACE 1 58600013 RDQ1055 SR RE,RE RMAX COUNT HAS BEEN EXCEEDED 58800013 ST RE,WRMAX ZERO OUT COUNT FOR RMAX IN PROGRAM 59000013 OI PPISW1+7,X'40' SET RMAX BIT IN PPI 59200013 SPACE 2 59400013 *WHEN EOF HAS BEEN REACHED, THERE ARE NO MORE RECORDS TO BE DEBLOCKED 59600013 *BUT THE SORT NETWORK MUST EMPTY ITS TREE. FUTURE ENTRIES TO THIS 59800013 *MODULE DO NO PROCESSING, BUT MERELY EXIT TO THE SORT NETWORK AT 60000013 *16(RL). THE FOLLOWING CODING MODIFIES THE PRESENT ENTRY POINT TO 60200013 *EFFECT THIS CHANGE AND THEN EXITS TO THE SORT NETWORK AT 8(RL), THE 60400013 *EOF ENTRY. 60600013 SPACE 1 60800013 RDQ1060 MVC IERDD1+8(4),KMOD4 BR DIRECTLY TO SORT NETWORK 61000013 SPACE 2 61200013 *INTERFACE TO SORT NETWORK ON EOF. 61400013 SPACE 1 61600013 L RL,PPINET+4 ADDR OF SORT NETWORK 61800013 B 8(RL) 62000013 SPACE 2 62200013 * INTERFACE TO SORT NETWORK TO FLUSH TREE 62400013 SPACE 1 62600013 RDQ1065 L RL,PPINET+4 BRANCH IMMEDIATELY BACK TO NETWORK 62800013 B 16(RL) AFTER INPUT EOF 63000013 SPACE 2 63200013 *CONSTANTS USED BY THE MODULE: 63400013 SPACE 1 63600013 KMOD1 B RDQ1020 OVERLAY RDQ1010 AFTER G+1 RCDS 63800013 KMOD2 B RDQ1010 TO RESTORE NETWORK ENTRY FOR FILLING 64000013 KMOD3 L RL,PPINET+4 OVERLAY RDQ1040 AFTER G+1 RCDS 64200013 B 12(RL) NORMAL BR TO THE NETWORK 64400013 KMOD4 B RDQ1065 64600013 KMOD5 LR RF,RD TO RESTORE INSTRUCTIONS OVERLAID 64800013 A RF,PPIBINSZ BY BRANCH TO NETWORK AFTER TREE 65000013 ST RF,WADDRSA IS FILLED 65200013 KADCB DC F'0' INPUT DCB ADDR LOADED BY A.P. 65400013 SPACE 2 65600013 *LIST OF WORK AREAS/TABLES: 65800013 SPACE 1 66000013 WADDRESS DS F ADDRESS OF RECORD FROM LAST 'GET' 66200013 WRMAX DC F'0' COUNT TO COMPARE AGAINST PPIRMAX 66400013 WADDRSA DS F UPDATED ADDRESS OF RSA 66600013 WBYTECNT DS F REMAINING BYTE COUNT IN RSA CHUNK 66800013 ADCONPTR DS F 67000013 EJECT 67200013 SMPPI 67400013 END 67600013 ./ ADD SSI=02011986,SOURCE=1,NAME=IERADR TITLE 'IERADR - OS/360 SORT/MERGE - 360-SM023 05/11/66' 00100013 SPACE 2 00200013 *MODULE NAME *** IERADR *** 00300013 SPACE 2 00400013 *STATUS:CHANGE LEVEL 000 00500013 SPACE 2 00600013 *MODULE FUNCTION: 00700013 * OSCL/2314 SORT PH DEBLOCK ASSIGN. FOR F.L. RCDS. W/E15 AND/OR E16 00800013 * THE FUNCTION OF THIS MODULE IS TO INITIALIZE A RECORD STORAGE AREA 00900013 * TABLE IN IERRDD. THIS TABLE WOULD CONSIST OF UP TO 5 ENTRIES FOR 01000013 * 5 NON-CONTIGUOUS RSA'S. THIS MODULE BUILDS THE INPUT BUFFER(S) 01100013 * IT ALSO CHECKS TO SEE WHETHER WE ARE ATTACHED,WHETHER E15 AND E16 01200013 * ARE ACTIVATED AND OVERLAYS IERRDD IN APPROPRIATE PLACES. IT ALSO 01300013 * PASSES IERRDD THE STARTING ADDRESS OF THE INPUT DCB. 01400013 SPACE 2 01500013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 01600013 SPACE 1 01700013 * NONE 01800013 SPACE 2 01900013 *LIST OF MACROS USED BY MODULE: 02000013 SPACE 1 02100013 * SMPPI 02200013 * BUILDS 02300013 SPACE 2 02400013 *ENTRY POINTS: 02500013 SPACE 1 02600013 * FROM IERRC9 ENTRY FROM:IERRC9 02700013 * CALLING SEQUENCE- 02800013 * LOAD EP=IERADD,DCB=SORTLIB 02900013 * LR RP,RA 03000013 * BALR RO,RP 03100013 SPACE 2 03200013 *INPUT: - PPI FIELDS REFERENCED 03300013 SPACE 1 03400013 * PPIDEB PPILAB08 PPINMAX 03500013 * PPILAB03 PPILEXFF PPIATP1E 03600013 * PPILAB02 PPIMODEX PPISTDCB 03700013 SPACE 1 03800013 * INFO IS NEEDED TO BUILD RSA TABLE IN IERRDD,TO BUILD THE INPUT 03900013 * BUFFER(S),TO SEE WHAT USER EXITS ARE ACTIVATED 04000013 SPACE 2 04100013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 04200013 SPACE 1 04300013 * PPISW1 04400013 SPACE 2 04500013 *EXTERNAL ROUTINES: 04600013 SPACE 1 04700013 * NONE 04800013 SPACE 2 04900013 *EXTERNAL PARAMETERS: 05000013 SPACE 1 05100013 * SEE REGISTERS 05200013 SPACE 2 05300013 *EXITS-NORMAL: 05400013 SPACE 1 05500013 * TO IERRC9 EXIT TO:IERRC9 05600013 * CALLING SEQUENCE- 05700013 * BR RO RETURN 05800013 SPACE 2 05900013 *EXITS-ERROR: 06000013 SPACE 1 06100013 * NONE 06200013 SPACE 2 06300013 *TABLES/WORK AREAS: 06400013 SPACE 1 06500013 * WAREA-WORK AREA 06600013 SPACE 2 06700013 *ATTRIBUTES: THIS IS A CLASS A MODULE 06800013 SPACE 2 06900013 *NOTES:THIS MODULE WILL EXECUTE FOR ANY FIXED LENGTH SORT HAVING 07000013 * USER EXITS E15 AND/OR E16, OR ATTACHED. IT IS USED IN THE 07100013 * OSCILLATING OR 2314 SORT. 07200013 EJECT 07300013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 07400013 SPACE 1 07500013 RA EQU 0 CONTENTS IN- N/A 07600013 * USE- NO. OF BUFFERS AND BUFFER SIZE 07700013 * FOR BUILD MACRO 07800013 * CONTENTS OUT- N/A 07900013 RB EQU 1 CONTENTS IN- N/A 08000013 * USE- ADDR OF INPUT BUFFER POOL FOR 08100013 * BUILD MACRO 08200013 * CONTENTS OUT- N/A 08300013 RC EQU 2 CONTENTS IN- N/A 08400013 * USE- ADDR OF RSA TABLE IN IERRDC 08500013 * CONTENTS OUT- N/A 08600013 RD EQU 3 CONTENTS IN- N/A 08700013 * USE- COUNTER FOR NO. OF RSA AREAS 08800013 * CONTENTS OUT- N/A 08900013 RE EQU 4 CONTENTS IN- N/A 09000013 * USE- WORK REGISTER 09100013 * CONTENTS OUT- N/A 09200013 RF EQU 5 CONTENTS IN- N/A 09300013 * USE- ADDR OF RSA TABLE IN PPI 09400013 * CONTENTS OUT- N/A 09500013 RG EQU 6 CONTENTS IN- N/A 09600013 * USE- INDEX REGISTER 09700013 * CONTENTS OUT- N/A 09800013 RH EQU 7 CONTENTS IN- N/A 09900013 * USE- WORK REGISTER 10000013 * CONTENTS OUT- N/A 10100013 RI EQU 8 CONTENTS IN- N/A 10200013 * USE- NOT USED 10300013 * CONTENTS OUT- N/A 10400013 RJ EQU 9 CONTENTS IN- N/A 10500013 * USE- NOT USED 10600013 * CONTENTS OUT- N/A 10700013 RK EQU 10 CONTENTS IN-N/A 10800013 * USE- IERRDD DSECT BASE REGISTER 10900013 * CONTENTS OUT- N/A 11000013 RL EQU 11 CONTENTS IN- N/A 11100013 * USE-MODULE BASE REGISTER 11200013 * CONTENTS OUT- N/A 11300013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 11400013 * USE- NOT USED 11500013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 11600013 RN EQU 13 CONTENTS IN-ADDR OF PPI 11700013 * USE-PPI REFERENCES,REG SAVE AREA 11800013 * CONTENTS OUT-ADDR OF PPI 11900013 RO EQU 14 CONTENTS IN- IERRC9 RETURN ADDR 12000013 * USE- NOT USED 12100013 * CONTENTS OUT- IERRC9 RETURN ADDR 12200013 RP EQU 15 CONTENTS IN- IERADD ENTRY PT 12300013 * USE- ESTABLISH IERADD BASE REGISTER 12400013 * CONTENTS OUT- N/A 12500013 SPACE 2 12600013 *START OF MODULE CODE PROPER: 12700013 SPACE 2 12800013 IERADR CSECT 12900013 USING *,RL THIS MODULE BASE REGISTER 13000013 USING IERRDR,RK BASE REG FOR R.P. DSECT 13100013 USING IERRCA,RN PPI BASE REG 13200013 IERMDA LR RL,RP 13300013 L RK,PPIDEB+4 13400013 SPACE 2 13500013 *ESTABLISH ALL RECORD STORAGE AREA ADDRESSES AND THEIR RESPECTIVE BYTE 13600013 * COUNTS AND BUILD RSA TABLE IN IERRDD. 13700013 SPACE 1 13800013 L RC,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH 13900013 ST RC,ADCONPTR THIER RESPECTIVE BYTE COUNTS 14000013 SR RD,RD 14100013 SR RG,RG 14200013 IC RD,PPILAB08 NO. OF RSA AREAS 14300013 LA RH,4 4 BYTES FOR TREE ADDRESS 14400013 AH RH,PPILEXFF PLUS SIZE OF ROUNDED EXTRACTED 14500013 * CONTROL FIELDS 14600013 L RF,PPILAB08 PTR TO TABLE OF RSA ADDRS WITH THEIR 14700013 * RESPECTIVE BYTE COUNTS 14800013 ADDRSALP L RE,0(RG,RF) STARTING ADDR OF AN RSA AREA 14900013 AR RE,RH EQLS ADDR OF 1ST RCD IN THE RSA AREA 15000013 ST RE,0(RG,RC) STORE IN IERRDD RSA ADDR TABLE 15100013 L RE,4(RG,RF) BYTE COUNT OF THIS RSA AREA 15200013 ST RE,4(RG,RC) STORE IN IERRDD RSA ADDR TABLE 15300013 LA RG,8(0,RG) UPDATE INDEX REG 15400013 BCT RD,ADDRSALP DECR RSA CTR, LOOP IF MORE RSA AREAS 15500013 MVC WADDRSA(8),0(RC) INITIALIZE PARAMETERS IN RUNNING P. 15600013 SPACE 1 15700013 CLC PPIATP1E,KZERO TEST IF ATTACHED EXIT 15800013 BC 7,ADBYPSB YES, BYPASS BUILD MACRO 15900013 SPACE 1 16000013 * SET UP AND BUILD THE INPUT BUFFER(S) 16100013 SPACE 1 16200013 L RB,PPILAB02 SET REG 1 = ADDRESS OF BUFFER LIST 16300013 MVC WAREA+2(2),PPILAB03+2 SIZE OF INPUT BFR(S) 16400013 MVC WAREA+1(1),PPILAB03 NO. OF INPUT BFR(S) 16500013 L 0,WAREA NO. AND SIZE OF BFR(S) IN BYTES 16600013 SPACE 1 16700013 BUILDS (1),(0) BUILD INPUT BUFFER(S) 16800013 SPACE 1 16900013 * CALCULATE ADDR OF DCB AND STORE IN R.P. 17000013 SPACE 1 17100013 ADBYPSB L RE,PPISTDCB POINTER TO LIST OF DCB ADDRESSES 17200013 MVC WDCB,0(RE) STORE DCB ADDR IN R.P. 17300013 SPACE 1 17400013 TM PPIMODEX,X'20' TEST IF NMAX EXIT ACTIVATED 17500013 BC 1,ADSTONMX YES,BR TO STORE NMAX IN R.P. 17600013 MVC RDTSTNMX(4),K3 OVERLAY NMAX TEST,INSERT RTN OF R.P. 17700013 MVC RDOVLAY4(4),K4 OVERLAY NMAX TEST,DO NOTHG,ETC R.P. 17800013 ADTSTATT CLC PPIATP1E,KZERO TEST IF ATTACHED EXIT 17900013 BC 7,ADATTEXT YES, BR TO ATTACH EXIT RTN 18000013 TM PPIMODEX,X'40' TEST IF ANY USER RCD MODIFICATIONS 18100013 BC 1,ADENDMOD YES, BR TO LINK TO NEXT RTN 18200013 MVC RDUSREXT,RDOVLAY4 OVERLAY USER EXIT E15 WITH A BRANCH 18300013 * TO DO NOTHING RTN IN R.P. 18400013 OI PPISW1+7,X'80' SET USER EXIT E15 EOF SWITCH IN PPI 18500013 SPACE 1 18600013 *IF 2314, OVERLAY RMAX CHECK IN R.P. RETURN TO IERRC9. 18700013 SPACE 1 18800013 ADENDMOD TM PPISW1+6,X'02' 2314 SORT 18900013 BCR 8,RO NO, RETURN TO RC9. 19000013 SPACE 1 19100013 MVC RDRMXCNT(4),KADRKON OVERLAY RMAX CHECK 19200013 BR RO RETURN TO RC9 19300013 SPACE 2 19400013 ADATTEXT MVC PPIX15+4(4),PPIATP1E R.P. EXIT E15 NOW LINKS TO ATTACH 19500013 * RTN 19600013 MVC RDTSTISW(4),K5 OVLAY INSERT SWITCH TEST IN R.P. 19700013 OI PPISW1+3,X'01' SET SYSTEM EOF SWITCH IN PPI 19800013 MVI REALEOF,X'01' SET SWITCH TO INDICATE REST OF 19900013 * EOF'S ARE SIMULATED 20000013 B ADENDMOD RETURN TO LOAD MODULE 20100013 SPACE 2 20200013 ADSTONMX L RE,PPINMAX LOAD NMAX 20300013 LA RE,1(0,RE) EQUALS NMAX + 1 (TO ALLOW BCT INSTR 20400013 * IN R.P. TO DECR NMAX CTR) 20500013 ST RE,WNMAX STORE IN R.P. 20600013 B ADTSTATT BR TO TEST IF ATTACHED 20700013 SPACE 1 20800013 SPACE 2 20900013 * LIST OF CONSTANTS USED BY THE MODULE 21000013 KZERO DC F'0' 21100013 DROP RL 21200013 DROP RK 21300013 USING IERRDR,RL 21400013 KADRKON B RDOVLAY5 BYPASS RMAX CHECK 21500013 SPACE 1 21600013 SPACE 2 21700013 * LIST OF WORK AREAS 21800013 WAREA DC F'0' 21900013 EJECT 22000013 IERRDR DSECT DSECT OF IERRDR 22100013 USING *,RL MODULE BASE REG LOADED EXTERNALLY 22200013 USING IERRCA,RN PUT RN IN USING TABLE WITH PPI ADDR 22300013 USING IERRMA,RO MESSAGE MODULE ADDR 22400013 SPACE 1 22500013 * ENTER BRANCH TABLE FROM REPLACEMENT SORT,0(RL).FROM READ MOD, 4(RL). 22600013 * OR FROM REPLACEMENT SORT(INITIALLY TO FILL TREE), ALGORITHM(AT THE 22700013 * END OF A SEQUENCE), BLOCK MODULE(AFTER FILLING TREE), 8(RL). 22800013 IERDD1 B RDOVLAYF FROM REPL SORT,FINISHD FILLING TREE 22900013 B RDSETSW FROM READ MOD(GET,ON EOF) 23000013 B RDNORMAL NORMAL ENTRY FROM REPLACEMENT SORT 23100013 * BLOCK MODULE OR ALGORITHM 23200013 SPACE 2 23300013 * ENTRY TO REINITIALIZE IN ORDER TO BEGIN REFILLING TREE 23400013 SPACE 1 23500013 OI RDOVLAY6+1,X'F0' REACTIVATE BR INSTR TO FILLING EXIT 23600013 NI RDDOVLAY+1,X'00' NOP BRANCH ON (G+1)TH RECORD 23700013 MVC RDNORMAL,K6 REINITIALIZE ENTRY BRANCH INSTR 23800013 MVC RDOVLAY5,K7 REOVERLAY BRANCH ON (G+1)TH RECORD 23900013 L RK,PPILAB08 LOAD ADDRESS OF RSA PARAM TABLE 24000013 ST RK,ADCONPTR STORE 24100013 MVC WADDRSA(8),0(RK) MOVE NEW RSA PARAMS INTO WORK AREA 24200013 * FIRST WORD = ADDRESS NEXT RSA BIN 24300013 * SECOND = BIN BYTE COUNT 24400013 L RB,WADDRESS LOAD AD OF LAST RECORD FOR MOVE RTN 24500013 L RD,WADDRSA TO MOVE SAVED RCD INTO RSA 24600013 B RDRMXCNT 24700013 SPACE 2 24800013 * FROM REPLACEMT SORT BLOCK MOD,OR ALGORITHM 24900013 SPACE 1 25000013 RDNORMAL ST RD,WINNER ADDR OF A FREE AREA IN RSA-LAST WNR 25100013 RDLDCTRS STM RJ,RK,WRJ SAVE TRANSPARENT REGS 25200013 LM RJ,RK,WNMAX RESTORE NMAX AND DCB ADDR 25400013 RDTSTISW TM PPISW1+7,X'20' TST INSERT SW. WILL BE OVERLAID BY 25500013 * A.P. IF ATTACHED,OR BY R.P. ON 25600013 * SYSTEM EOF,WITH B RDUSREXT 25700013 BC 1,RDUSREXT ON, BR TO USER EXIT 25800013 RDGET GET (RK) UPDATE ADDR IN INPUT AREA(REG RB) 25900013 * REG RK HAS DCB ADDR 26000013 L RG,PPICOUNT RECORD COUNTER 26050013 LA RG,1(0,RG) INCR RCD CTR BY ONE 26100013 ST RG,PPICOUNT STORE RECORD COUNT 26150013 ST RB,WADDRESS SET FOR RE-INIT. ENTRY 26200013 ST RB,WINPTRCD SAVE ADDR OF RCD THATS IN INPUT BLK 26300013 SPACE 1 26400013 * USER MOD EXIT E15 USING CALL MACRO EXPANSION INSTRUCTIONS. 26500013 * PASS ADDR OF PARAMETER LIST(ADDR OF INPUT RCD) IN REGISTER RB 26600013 SPACE 1 26700013 RDUSREXT LA RB,WINPTRCD ADDR OF PARAMETER LIST. IF E15 NOT 26800013 * ACTIVATED, OR IF ACTIVATED AND HIT 26900013 * USER EOF,THIS INSTR WILL BE OVLAYD 27000013 * BY B RDALSHNO 27100013 L RP,PPIX15+4 ADDR OF USER EXIT E15. IF ATTACHED 27200013 * A.P. WILL LOAD PPIX15 WITH ADDR IN 27300013 * PPIATP1E 27400013 BALR RO,RP BR TO USER 27500013 SPACE 1 27600013 * USER RETURNS TO MODULE VIA RETURNREG AND PROPER DISPLACEMENTS. USER 27700013 * PASSES ADDR OF RECORD TO BE INSERTED OR ADDR OF WORK AREA IF HE 27800013 * ALTERS,LENGTHENS,OR SHORTENS A RCD IN REG RB. 27900013 SPACE 1 28000013 B *+4(15) 28100013 RDOVLAY4 B RDALSHNO ALTER,LENGTHN,SHORTN,DO NOTHING 28200013 * WILL BE OVERLAYED BY K4 IF,WHEN 28300013 * REACH NMAX IT IS IGNORED, OR BY 28400013 * A.P. WITH K4 IF EXIT NOT ACTIVE 28500013 B RDDELETE DELETE A RCD 28600013 B RDUSREOF USER END OF FILE 28700013 SPACE 1 28800013 * INSERT A RECORD 28900013 SPACE 1 29000013 RDTSTNMX BCT RJ,RDISWON DECR NMAX CTR BY ONE AND TEST TO 29100013 * SEE IF REACHED NMAX 29200013 * WILL BE OVERLAYED BY K3 IF, WHEN 29300013 * REACH NMAX IT IS IGNORED, OR BY 29400013 * A.P. WITH K3 IF EXIT NOT ACTIVE 29500013 B RDWSW1ON YES,BR TO NMAX USER EXIT E16,SW ON 29600013 SPACE 2 29700013 * SYSTEM END OF FILE ROUTINE 29800013 SPACE 1 29900013 RDSETSW TM PPISW1+7,X'80' TEST IF USER EOF SWITCH ON 30000013 BO RDCNTSRT YES, BRANCH TO FLUSH TREE 30100013 SPACE 1 30200013 TM PPISW1+3,X'01' TEST IF SIMULATED EOF 30300013 BNO RDCNTSRT YES, BRANCH TO FLUSH TREE 30400013 SPACE 1 30500013 CLI REALEOF,X'01' IS THIS SIM. EOF AFTER 30600013 BE RDCNTSRT REAL EOF 30700013 SPACE 1 30800013 MVI REALEOF,X'01' SET SWITCH TO INDICATE REST OF 30900013 * EOF'S ARE SIMULATED 31000013 SPACE 1 31100013 SR RB,RB CLEAR INPUT RCD PARAM REG 31200013 MVC RDTSTISW,K5 TO BYPASS GOING TO GET AFTER SYS EOF 31300013 B RDUSREXT-4 NO, BR TO USER 31400013 SPACE 2 31500013 * USER END OF FILE ROUTINE 31600013 SPACE 1 31700013 RDUSREOF OI PPISW1+7,X'80' SET USER EOF SWITCH 31800013 MVC RDUSREXT,RDOVLAY4 OVLAY USER EXIT-BYPASS EXIT E15 31900013 TM PPISW1+3,X'01' TEST IF SYSTEM EOF SWITCH ON 32000013 BC 1,RDCNTSRT YES,BR TO EOF FLUSH RTN 32100013 L RB,WINPTRCD RESTORE ADDR OF RCD IN INPUT BLK 32200013 B RDALSHNO BR TO SORT THIS RCD 32300013 SPACE 2 32400013 RDISWON OI PPISW1+7,X'20' TURN INSET SWITCH ON 32500013 L RI,PPIINSCT INSERT COUNT 32550013 LA RI,1(0,RI) INCR INSERT CTR BY ONE 32600013 ST RI,PPIINSCT STORE INSERT COUNT 32700013 RDSTM ST RB,WADDRESS SAVE FOR RE-INIT 32800013 ST RJ,WNMAX SAVE NMAX CTR 32900013 RDRMXCNT L RG,WRMAX INCREMENT COUNTER FOR RMAX. RMAX = 33000013 LA RG,1(RG) MAX NO OF RECORDS ON 1 REEL TAPE 33100013 C RG,PPIRMAX HAVE RMAX RECORDS BEEN EXCEEDED? 33200013 BH RDRMAX BRANCH ON YES 33300013 ST RG,WRMAX SAVE 33400013 SPACE 1 33500013 * INITALIZE AND BR TO MOVE RTN TO MOVE NEXT INPUT RCD TO RSA 33600013 SPACE 1 33700013 RDOVLAY5 B RDDLDRSA BR TO GET ADDR IN RSA TO MOVE RCD 33800013 * WILL BE OVLAYED BY L RF,WINNER 33900013 * AFTER G+1 RCDS 34000013 RDDLDRE LR RE,RB ADDR OF RCD IN INPUT BUFFER OR FROM 34100013 * USER'S WORK AREA 34200013 L RP,PPIBDSVA+4 ADDR OF MOVE RTN IN GENERATED CORE 34300013 BALR RO,RP BR TO MOVE RTN.MOVE RCD TO RSA 34400013 RDOVLAY6 B RDFILLTR BR TO SORT NETWORK FILLING TREE RTN 34500013 * WILL BE OVLAYED BY NOP AFTER 34600013 * TREE IS INITIALLY FILLED 34700013 SPACE 2 34800013 * NORMAL EXIT TO SORT NETWORK AFTER PREVIOUS INSTR IS OVERLAYED BY NOP 34900013 SPACE 1 35000013 LR RC,RB ADDR OF RCD IN INPUT BUFFER 35100013 L RD,WINNER 35200013 L RL,PPINET+4 ADDR OF SORT NETWORK 35300013 B 12(RL) BR TO SORT NETWORK NORMAL RTN 35400013 SPACE 2 35500013 * EXIT TO SORT NETWORK WHILE FILLING TREE 35600013 SPACE 1 35700013 RDFILLTR LR RC,RB ADDR OF RCD IN INPUT BUFFER 35800013 A RD,PPIBINSZ UPDATE TO NEXT BIN IN THIS RSA 35900013 ST RD,WADDRSA SAVE UPDATED RSA ADDRESS 36000013 S RD,PPIBINSZ RESTORE FOR NETWORK. ADDR OF THIS 36100013 * RCD IN RSA 36200013 L RL,PPINET+4 ADDR OF NETWORK 36300013 B 4(RL) BR TO SORT NETWORK FILL TREE RTN 36400013 SPACE 2 36500013 SPACE 2 36600013 * FINISHED FILLING TREE RTN -ONE TIME RTN 36700013 SPACE 1 36800013 RDOVLAYF NI RDOVLAY6+1,X'00' NOP THE BR INSTR TO THE FILLING EXIT 36900013 MVI RDDOVLAY+1,X'F0' OVLAY INSTR IN RSA TABLE ROUTINE 37000013 B RDLDCTRS BR TO GET G+1 RECORD. 37100013 SPACE 2 37200013 *RSA TABLE ROUTINE USED DURING FILLING OF TREE. ENTER HERE ONLY THROUGH 37300013 * G+1 RECORDS. 37400013 SPACE 1 37500013 RDDLDRSA L RK,ADCONPTR RSA TABLE PTR 37600013 RDDRTRN LM RD,RE,WADDRSA RD=ADDR IN THIS RSA, RE = REMAINING 37700013 * BYTE COUNT OF THIS RSA. 37800013 S RE,PPIBINSZ SUBTR SIZE OF THIS RCD 37900013 BM RDNEWRSA BR IF MINUS-RCD CANT FIT IN THIS RSA 38000013 RDDOVLAY BC 0,RDDLAST WILL BE A BR AFTER RSA HAS G RCDS 38100013 SPACE 2 38200013 ST RE,WBYTECNT SAVE REMAINING BYTE COUNT THIS RSA 38300013 LR RF,RD ADDR IN RSA TO MOVE THE RCD 38400013 B RDDLDRE BR TO MOVE RCD TO RSA 38500013 SPACE 2 38600013 RDNEWRSA LA RK,8(0,RK) UPDATE RSA TABLE PTR TO NEXT RSA 38700013 * ENTRY(NEXT NON-CONTIGUOUS RSA) 38800013 ST RK,ADCONPTR SAVE UPDATED PTR 38900013 MVC WADDRSA(8),0(RK) MOVE NEW PARAMS INTO WORK AREA 39000013 * FIRST WORD = ADDRESS NEXT RSA BIN 39100013 * SECOND = BIN BYTE COUNT 39200013 B RDDRTRN BR TO USE THIS RSA 39300013 SPACE 2 39400013 *WE ARE GOING TO PROCESS THE G+1 RECORD. 39500013 SPACE 1 39600013 RDDLAST ST RD,WINNER ADDR IN RSA TO MOVE RCD 39700013 MVC RDOVLAY5(4),K1 OVLAY BRANCH INSTR TO RSA TABLE RTN 39800013 B RDOVLAY5 BR TO MOVE G+1 RCD TO RSA. 39900013 SPACE 2 40000013 * FROM USER,ON NMAX RETURN,TO SORT CURRENT NO OF RCDS ONLY 40100013 SPACE 1 40200013 RDSETPPI OI PPISW1+3,X'02' TURN ESTIMATED FILE SWITCH ON IN PPI 40300013 OI PPISW1+7,X'80' SET USER EOF FOR ALG. 40400013 TM PPISW1+3,X'01' WAS SYS EOF REACHED 40500013 BC 1,RDCNTSRT YES,BR AROUND NEXT INSTRS-FLUSH TREE 40600013 L RG,PPICOUNT RECORD COUNT 40650013 BCTR RG,0 DECR PPICOUNT BY ONE 40700013 ST RG,PPICOUNT STORE RECORD COUNT 40750013 OI PPISW1+3,X'01' SET EOF SW, SO ALG. WON'T RETURN 40800013 SPACE 1 40900013 * FROM GET ON END OF FILE 41000013 RDCNTSRT MVC RDNORMAL,K2 OVERLAY DEBLOCK MODULE 41100013 L RL,PPINET+4 ADDR OF NTWK 41300013 B 8(RL) BR TO NTWK TO EMPTY TREE 41400013 SPACE 2 41500013 RDEMPTYT L RL,PPINET+4 ADDR OF NTWK 41600013 B 16(RL) BR TO SORT TO CONTINUE EMPTYING TREE 41700013 SPACE 2 41800013 * WRITE MESSAGE NMAX EXCEEDED 41900013 SPACE 1 42000013 RDWSW1ON OI WSW1,X'01' TURN SWITCH 1 ON 42100013 RDMSGS L RO,PPIRMA+4 ADDRESS OF MESSAGE MODULE 42200013 LR RE,RB SAVE ADDR OF NMAX+1 RCD 42300013 LM RA,RB,MSGP1A04 NAME AND LENGTH OF MESSAGE 42400013 L RP,PPIADSSC LOAD PRINT RTN ADDR 42500013 BAL RO,12(0,RP) BR TO PRINT RTN 42600013 SPACE 1 42700013 * USER EXIT E16 -SORT CAPACITY, NMAX, HAS BEEN REACHED 42800013 * CALL MACRO INSTRUCTION EXPANSION 42900013 SPACE 1 43000013 LR RB,RE RESTORE ADDR OF NMAX+1 RCD 43100013 L RP,PPIX16+4 ADDR OF NMAX EXIT 43200013 BALR RO,RP BR TO USER 43300013 SPACE 2 43400013 * USER RETURNS TO MODULE VIA RETURNREG AND PROPER DISPLACEMENTS. 43500013 SPACE 1 43600013 B *+4(15) 43700013 B RDSETPPI SORT CURRENT NO OF RCDS ONLY 43800013 B RDIGNORE IGNORE NMAX AND CONTINUE TO SORT 43900013 SPACE 1 44000013 * ABORT THE JOB. SET UP ABNORMAL END INDICATION FOR SORT SYSTEM CONTROL 44100013 SPACE 1 44200013 L RP,PPIADSSC 44300013 BAL RO,16(0,RP) BR TO SORT SYSTEM CONTROL 44400013 SPACE 1 44500013 * IGNORE NMAX. OVERLAY NMAX TEST WITH A BYPASS BRANCH INSTR. 44600013 SPACE 1 44700013 RDIGNORE MVC RDTSTNMX(4),K3 OVERLAY NMAX TEST,INSERT RTN 44800013 CLC RDUSREXT,RDOVLAY4 HAS USER EXIT CODE BEEN OVERLAID? 44900013 BNE *+10 IF NOT, BRANCH AROUND NEXT INSTRUC 45000013 MVC RDUSREXT,K4 CHANGE OVERLAID INSTRUCTION 45100013 MVC RDOVLAY4(4),K4 OVERLAY NMAX TEST,DO NOTHG,ALTER RTN 45200013 TM WSW1,X'01' TEST SWITCH 1 45300013 BC 1,RDISWON ON,BR TO TURN INSERT SWITCH ON 45400013 B RDISWOFF BR TO TURN INSERT SWITCH OFF 45500013 SPACE 2 45600013 * DO NOTHING, ALTER, LENGTHEN, SHORTEN A RCD. ADDR OF INPUT RCD IN RB. 45700013 SPACE 1 45800013 RDALSHNO BCT RJ,RDISWOFF DECR NMAX CTR BY ONE AND TST TO SEE 45900013 * IF REACHED NMAX 46000013 B RDMSGS YES, BR TO NMAX USER EXIT E16 46100013 SPACE 2 46200013 RDISWOFF NI PPISW1+7,X'DF' TURN OFF INSERT SWITCH 46300013 B RDSTM BR TO LOAD ADDR OF FREE AREA IN RSA 46400013 SPACE 2 46500013 * DELETE A RECORD 46600013 SPACE 1 46700013 RDDELETE NI PPISW1+7,X'DF' TURN OFF INSERT SWITCH 46800013 L RH,PPIDELCT DELETE COUNT 46850013 LA RH,1(0,RH) INCR DELETE CTR BY ONE 46900013 ST RH,PPIDELCT STORE DELETE COUNT 46950013 B RDGET BR TO GET ANOTHER RECORD 47000013 SPACE 2 47100013 * ENOUGH RECORDS HAVE BEEN READ IN TO FILL ONE REEL OF TAPE 47200013 SPACE 1 47300013 RDRMAX SR RE,RE RMAX COUNT HAS BEEN EXCEEDED 47400013 ST RB,WADDRESS SAVE ADDRESS OF THIS RECORD 47500013 ST RE,WRMAX ZERO OUT COUNT FOR RMAX IN PROGRAM 47600013 OI PPISW1+7,X'40' SET RMAX BIT IN PPI 47700013 MVC RDNORMAL,K2 OVERLAY DEBLOCK MODULE 47800013 L RL,PPINET+4 ADDRESS OF NETWORK 47900013 B 8(RL) BR TO NETWORK TO EMPTY TREE 48000013 SPACE 1 48100013 * END OF CODING --- ADCONS NEXT PAGE 48200013 EJECT 48300013 * LIST OF CONSTANTS USED BY THE MODULE 48400013 SPACE 1 48500013 K1 L RF,WINNER OVERLAY WHEN FINISHED FILLING TREE 48600013 K2 B RDEMPTYT OVERLAY TO EMPTYTREE ON GET EOF 48700013 K3 B RDISWON BYPASS NMAX TEST IN INSERT RTN 48800013 K4 B RDISWOFF BYPASS NMAX TEST IN DO NOTHG,ETC RTN 48900013 K5 B RDUSREXT OVERLAY INSERT SW TEST BY A.P. IF 49000013 * ATTACHED 49100013 K6 ST RD,WINNER AD OF FREE AREA IN RSA - LAST WINNER 49200013 K7 B RDDLDRSA BR TO GET AD IN RSA TO MOVE RECORD 49300013 SPACE 2 49400013 * LIST OF WORK AREAS 49500013 SPACE 1 49600013 WSW1 DC X'00' SWITCH 1 IN INSERT RTN 49700013 REALEOF DC X'00' 49800013 WINNER DC F'0' SORT WINNER RCD ADDR 49900013 WNMAX DC F'0' MAX NO OF RCDS TO SORT PLUS ONE(FOR 50000013 * SPEED, CAN NOW USE BCT TO DECR 50100013 * NMAX CTR TO ZERO) 50200013 WDCB DC F'0' CONTAINS ADDR OF DCB FOR INPUT FILE 50300013 * LOADED BY ASSIGNMENT ROUTINE 50400013 WRJ DC 2F'0' SAVE TRANPARENT REGS 50500013 WINPTRCD DC F'0' ADDR OF RCD IN INPUT AREA 50600013 WADDRESS DS F ADDRESS OF NEXT RECORD TO BE MOVED 50700013 WRMAX DC F'0' COUNT TO COMPARE AGAINST PPIRMAX 50800013 WADDRSA DS F UPDATED ADDRESS OF RSA 50900013 WBYTECNT DS F REMAINING BYTE COUNT IN RSA CHUNK 51000013 ADCONPTR DS F UPDATED ADDRESS OF RSA PARAM TABLE 51100013 EJECT 51200013 * MODULE NAME ***IERRMA*** 51300013 * 51400013 * THIS MODULE CONTAINS ALL OF THE MESSAGES THAT ARE REQUIRED FOR 51500013 * PHASE 1 RUNNING PROGRAM. 51600013 SPACE 1 51700013 IERRMA DSECT 51800013 * 51900013 COPY RMAMAIN 52000013 EJECT 52100013 SMPPI 52200013 END 52300013 ./ ADD SSI=06010351,SOURCE=1,NAME=IERADS TITLE ' IERADS - OS/360 SORT/MERGE - 360S-SM023 05/08/66' 00100013 SPACE 2 00200013 *MODULE NAME *** IERADS *** 00300013 SPACE 2 00400013 *STATUS:CHANGE LEVEL 000 00500013 SPACE 2 00600013 *MODULE FUNCTION: 00700013 * OSCL/2314 SORT PH DEBLOCK ASSIGN. FOR V.L. RCDS W/E15 AND/OR E16 00800013 * THE FUNCTION OF THIS MODULE IS TO CALCULATE THE NUMBER OF BINS IN 00900013 * UP TO 5 NON-CONTIGUOUS RECORD STORAGE AREAS AND CHAIN ALL THESE 01000013 * BINS TOGETHER. IT PUTS THE ADDRESS OF THE FIRST BIN IN THE FIRST 01100013 * RSA IN AVAIL(PPIBDSVA+4). INPUT BUFFERS ARE SET UP VIA THE BUILD 01200013 * MACRO. EXTRACT SIZE + 4 IS CALCULATED AND STORED IN THE RUNNING 01300013 * PROGRAM. EXITS E15 AND E16 ARE TESTED AND A TEST IS MADE TO SEE IF 01400013 * SORT HAS BEEN ATTACHED. AS A RESULT OF THESE TESTS PROPER OVERLAYS 01500013 * WILL BE MADE AND NMAX+1 MAY BE STORED IN RUNNING PROGRAM,IERRDE. 01600013 SPACE 1 01700013 * THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A PARTICULAR 01800013 * INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER SET. 01900013 SPACE 2 02000013 *LIST OF MODULES IN WHICH THIS MODULE APPEARS AS A DSECT: 02100013 SPACE 1 02200013 * NONE 02300013 SPACE 2 02400013 *LIST OF MACROS USED BY MODULE: 02500013 SPACE 1 02600013 * SMPPI 02700013 * BUILDS 02800013 SPACE 2 02900013 *ENTRY POINTS: 03000013 SPACE 1 03100013 * FROM IERRC9 ENTRY FROM:IERRC9 03200013 * CALLING SEQUENCE- 03300013 * LOAD EP=IERADD,DCB=SORTLIB 03400013 * LR RP,RA 03500013 * BALR RO,RP 03600013 SPACE 2 03700013 *INPUT: - PPI FIELDS REFERENCED 03800013 SPACE 1 03900013 * PPINMAX PPILAB03 PPIMODEX 04000013 * PPIBINSZ PPILAB02 PPILEXFF 04100013 * PPIATPIE PPILAB08 04200013 SPACE 1 04300013 * ADDRESSES FOR BUFFERS AND TABLES,INFO FOR USER EXITS AND FOR THE 04400013 * RSA CHAINING ROUTINE AND FOR THE BUILD MACRO 04500013 SPACE 2 04600013 *OUTPUT: - PPI FIELDS INITIALIZED OR ALTERED 04700013 SPACE 1 04800013 * PPIBDSVA 04900013 * PPISW1 05000013 SPACE 1 05100013 * INITIALIZE START OF RSA(AVAIL) AND TOTAL NUMBER OF BINS IN ALL THE 05200013 * RSA'S. 05300013 SPACE 2 05400013 *EXTERNAL ROUTINES: 05500013 SPACE 1 05600013 * NONE 05700013 SPACE 2 05800013 *EXTERNAL PARAMETERS: 05900013 SPACE 1 06000013 * SEE REGISTERS 06100013 SPACE 2 06200013 *EXITS-NORMAL: 06300013 SPACE 1 06400013 * TO IERRC9 EXIT TO:IERRC9 06500013 * CALLING SEQUENCE- 06600013 * BR RO RETURN 06700013 SPACE 2 06800013 *EXITS-ERROR: 06900013 SPACE 1 07000013 * NONE 07100013 SPACE 2 07200013 *TABLES/WORK AREAS: 07300013 SPACE 1 07400013 * WCOMBINE-WORK AREA 07500013 SPACE 2 07600013 *ATTRIBUTES: THIS IS A CLASS A MODULE 07700013 SPACE 2 07800013 *NOTES: 07900013 * THIS MODULE IS THE ASSIGNMENT ROUTINE FOR THE OSCILLATING/2314 SORT 08000013 * PHASE DEBLOCK ROUTINE FOR VARIABLE LENGTH RECORDS WITH USER 08100013 * MODIFICATION EXITS E15 AND/OR E16. 08200013 EJECT 08300013 *LIST OF GENERAL REGISTER EQUATE STATEMENTS: 08400013 SPACE 1 08500013 RA EQU 0 CONTENTS IN-N/A 08600013 * USE-NO. OF BUFFERS AND BUFFER SIZE 08700013 * FOR BUILD MACRO 08800013 * CONTENTS OUT-N/A 08900013 RB EQU 1 CONTENTS IN-N/A 09000013 * USE-ADDR OF INPUT BUFFER POOL FOR 09100013 * BUILD MACRO. 09200013 * CONTENTS OUT-N/A 09300013 RC EQU 2 CONTENTS IN-N/A 09400013 * USE-NOT USED 09500013 * CONTENTS OUT-N/A 09600013 RD EQU 3 CONTENTS IN-N/A 09700013 * USE-NO. OF RSA AREAS -RSA TABLE CALC 09800013 * CONTENTS OUT-N/A 09900013 RE EQU 4 CONTENTS IN-N/A 10000013 * USE-WORK REGISTER 10100013 * CONTENTS OUT-N/A 10200013 RF EQU 5 CONTENTS IN-N/A 10300013 * USE-NO. OF BYTES COUNTER IN 1 RSA 10400013 * CONTENTS OUT-N/A 10500013 RG EQU 6 CONTENTS IN-N/A 10600013 * USE-CURRENT BIN ADDR IN AN RSA-USED 10700013 * IN RSA TABLE CALC. 10800013 * CONTENTS OUT- N/A 10900013 RH EQU 7 CONTENTS IN-N/A 11000013 * USE-PTR TO RSA TABLE IN PPI-UPDATE 11100013 * FOR EACH RSA. 11200013 * CONTENTS OUT- N/A 11300013 RI EQU 8 CONTENTS IN- N/A 11400013 * USE- GENERAL WORK REGISTER 11500013 * CONTENTS OUT-N/A 11600013 RJ EQU 9 CONTENTS IN- N/A 11700013 * USE-NOT USED 11800013 * CONTENTS OUT-N/A 11900013 RK EQU 10 CONTENTS IN- N/A 12000013 * USE-IERRDE DSECT BASE REGISTER 12100013 * CONTENTS OUT-N/A 12200013 RL EQU 11 CONTENTS IN-N/A 12300013 * USE-MODULE BASE REGISTER 12400013 * CONTENTS OUT-N/A 12500013 RM EQU 12 CONTENTS IN- EQUALS OR EXTRACT RTN 12600013 * USE-NOT USED 12700013 * CONTENTS OUT-EQUALS OR EXTRACT RTN 12800013 RN EQU 13 CONTENTS IN-ADDR OF PPI 12900013 * USE-PPI REFERENCES,REG SAVE AREA 13000013 * CONTENTS OUT-ADDR OF PPI 13100013 RO EQU 14 CONTENTS IN-IERRC9 RETURN ADDR 13200013 * USE-NOT USED 13300013 * CONTENTS OUT-IERRC9 RETURN ADDR 13400013 RP EQU 15 CONTENTS IN-IERADE ENTRY PT 13500013 * USE-ESTABLISH IERADE BASE REG 13600013 * CONTENTS OUT-N/A 13700013 SPACE 2 13800013 *START OF MODULE CODE PROPER: 13900013 SPACE 2 14000013 IERADS CSECT 14100013 *1157414500 1297 14150018 USING *,RL THIS MODULE BASE REGISTER 14200013 USING IERRDS,RK IERRDS DSECT BASE REGISTER 14300013 USING IERRCA,RN PPI ADDR 14400013 IERMDA LR RL,RP ESTABLISH THIS MODULE BASE REGISTER 14500013 L RK,PPIDEB+4 ADDR OF IERRDE CSECT 14600013 SPACE 2 14700013 *CHAIN ALL BINS TOGETHER BY PUTTING IN EACH BIN THE ADDR OF THE NEXT 14800013 * AVAILABLE BIN. SAVE THE ADDRESS OF THE 1ST AVAILABLE BIN IN 14900013 * PPIBDSVA+4,AND THE TOTAL NO. OF AVAILABLE BINS IN PPIBDSVA+8. 15000013 SPACE 1 15100013 SR RD,RD 15200013 IC RD,PPILAB08 NO. OF RSA AREAS 15300013 L RH,PPILAB08 PTR TO RSA TABLE IN PPI 15400013 L RG,0(0,RH) ADDR OF THIS RSA AREA BIN 15500013 ST RG,PPIBDSVA+4 SAVE THIS ADDR IN AVAIL(FOR IERRDE) 15600013 ADSLOOPO L RF,4(0,RH) NO. OF BYTES IN THIS RSA AREA 15700013 LA RI,ADSLOOPI LOAD RETURN REG FOR THIS LOOP CALC 15800013 SR RE,RE 15900013 D RE,PPIBINSZ RE=NO.OF BINS IN THIS RSA AREA 16000013 L RE,PPIBDSVA+8 TOTAL NO.OF BINS IN ALL RSA'S SO FAR 16100013 AR RE,RF UPDATE BIN COUNT 16200013 ST RE,PPIBDSVA+8 SAVE UPDATED BIN COUNT 16300013 ADSLOOPI BCT RF,ADSCHAIN DECR NO. OF BINS CTR FOR THIS RSA. 16400013 * BR IF MORE BINS IN THIS RSA. 16500013 BCT RD,ADNXTRSA DECR NO. OF RSA'S CTR. BR IF MORE 16600013 * RSA'S. THE LAST BIN IN THE LAST 16700013 * RSA HAS NO CHAIN ADDRESS. 16800013 A RF,PPIATP1E ARE WE ATTACHED 16900013 BC 7,ADSNOBLD YES-DON'T BUILD BUFFERS 17000013 MVC WCOMBINE+1(1),PPILAB03 17100013 MVC WCOMBINE+2(2),PPILAB03+2 17200013 L RA,WCOMBINE POSITION NO. AND SIZE OF BUFFERS 17300013 L RB,PPILAB02 SET REG 1 = ADDRESS OF BUFFER LIST 17400013 BUILDS (1),(0) 17500013 SPACE 2 17600013 ADSNOBLD LH RE,PPILEXFF GET EXTRACT SIZE 17700013 A RE,KFOUR 17800013 STH RE,EXPLFOUR STORE EXTRACT SIZE + 4 17900013 TM PPIMODEX,X'20' TEST IF NMAX EXIT ACTIVATED 18000013 BC 1,ADSSTNM GO STORE NMAX IN R.P.-IT'S ACTIVE 18100013 MVC RDSMAXCK(4),K2 OVERLAY NMAX TEST IN INSER3 LEG 18200013 MVC RDSDONO(4),K3 OVERLAY NMAX TEST IN ALTER LEG 18300013 ADSTATT CLC PPIATP1E,KZERO TEST IF ATTACHED 18400013 BC 7,ADSATACH IT IS ATTACHED 18500013 TM PPIMODEX,X'40' TEST FOR USER RCD MOD EXIT 18600013 BC 1,ADSEXIT BRANCH TO EXIT 18700013 MVC RDSUEXIT(4),K4 OVERLAY USER EXIT 15 WITH A BRANCH 18800013 MVC RDSMSG,K7 18900013 OI PPISW1+7,X'80' SET USER EXIT E15 EOF SWITCH IN PPI 19000013 MVI RDSISWON,X'58' CHANGE INSTRUCTION TO L RB,ADRHOLD 19100013 ADSEXIT L RE,PPISTDCB DCB ADDRESS A26453 19110019 L RE,0(RE) A26453 19120019 ST RE,KAWORK+4 STORE IN R.P.WORK AREA A26453 19130019 TM PPIMODEX+2,X'02' VRE IN? A26453 19140019 BZ ADSRETUR NO... A26453 19150019 L RE,PPIGETMN ADDR OF GETMAIN TABLE OF ADDR A26453 19160019 L RE,12(RE) FETCH ADDR OF VRE WORK AREA A26453 19170019 ST RE,KAWORK STORE IN R.P. WORK AREA A26453 19180019 SPACE 1 19200013 *IF 2314, OVERLAY RMAX CHECK IN R.P. RETURN TO IERRC9. 19300013 ADSRETUR TM PPISW1+6,X'02' 2314 CHECK A26453 19400019 BCR 8,RO NO, RETURN TO RC9 19500013 SPACE 1 19600013 MVC RDSRMAX(4),KADSKON OVERLAY RMAX CHECK 19700013 BR RO RETURN TO RC9 19800018 SPACE 2 19900013 ADSSTNM L RE,PPINMAX LOAD NMAX 20000013 LA RE,1(0,RE) PLUS 1 (FOR USING BCT INSTRUCTION) 20100013 ST RE,WNMAX STORE IN R.P. 20200013 B ADSTATT GO TEST FOR ATTACHED 20300013 SPACE 2 20400013 ADSATACH MVC PPIX15+4(4),PPIATP1E E15 NOW IS ATTACHED 20500013 MVC RDSNORM(4),K5 OVERLAY INSRT SW TEST-BR ARND GET 20600013 OI PPISW1+3,X'01' SET SYSTEM EOF SWITCH IN PPI 20700013 MVI REALEOF,X'01' SET SWITCH TO INDICATE REST OF 20800013 * EOF'S ARE SIMULATED 20900013 B ADSEXIT RETURN TO LOAD MODULE 21000013 SPACE 2 21100013 ADNXTRSA LA RI,ADSREAL RESET RETURN REG FOR THIS LOOP 21200013 SPACE 2 21300013 *INSERT CHAIN ADDR IN EACH BIN OF EACH RSA EXCEPT THE LAST BIN OF THE 21400013 * LAST RSA. 21500013 SPACE 1 21600013 ADSCHAIN A RG,PPIBINSZ ADDR OF THIS BIN + BIN SIZE 21700013 LR RE,RG SAVE ADDR OF THE NEXT BIN 21800013 S RE,KFOUR PTS TO AREA IN PREVIOUS BIN TO PUT 21900013 * THE CHAIN ADDR OF NEXT BIN(IN RG) 22000013 ST RG,0(0,RE) PREVIOUS BIN NOW CHAINED TO NEXT BIN 22100013 BR RI BR TO ADELOOPI ON ALL BINS EXCEPT 22200013 * THE LAST BIN IN EACH RSA OTHERWISE 22300013 * BR TO ADEREAL ON THIS LAST BIN 22400013 SPACE 2 22500013 *OVERLAY LAST BIN CHAIN ADDR OF THIS RSA WITH PROPER ADDRESS.(1ST BIN 22600013 * ADDR OF NEXT RSA) 22700013 SPACE 1 22800013 ADSREAL LA RH,8(0,RH) UPDATE PPI RSA TABLE PTR TO NEXT 22900013 * RSA ENTRY 23000013 L RG,0(0,RH) ADDR OF 1ST BIN IN NEXT RSA 23100013 ST RG,0(0,RE) STORE AS CHAIN ADDR IN LAST BIN OF 23200013 * PREVIOUS RSA. 23300013 B ADSLOOPO BR TO CHAIN BINS OF THIS RSA 23400013 SPACE 2 23500013 *LIST OF CONSTANTS: 23600013 SPACE 1 23700013 KZERO DC F'0' CONSTANT 0 23800013 DROP RL 23900013 DROP RK 24000013 USING IERRDS,RL 24100013 KADSKON B RDSPTB BYPASS RMAX CHECK 24200013 SPACE 2 24300013 *LIST OF WORK AREAS/TABLES: 24400013 SPACE 1 24500013 WCOMBINE DC F'0' WORK AREA 24600013 EJECT 24700013 IERRDS DSECT 24800013 USING *,RL 24900013 USING IERRCA,RN 25000013 USING IERRMA,RO MESSAGE MODULE ADR 25100013 IERDD1 B RDSOLAY GO TO OVERLAY EXITS 25200013 B RDSEOF GO TO EOF ROUTINE 25300013 B RDSNTER NORMAL ENTRY TO DEBLOCK ANOTHER RCD 25400013 SPACE 2 25500013 * ENTRY TO REINITIALIZE TO BEGIN REFILLING THE TREE 25600013 SPACE 1 25700013 LA RE,4 CHANGE ENTRIES TO NETWORK 25800013 STC RE,RDSFIT+3 25900013 LA RE,24 26000013 STC RE,RDSSPEC-1 26100013 MVC RDSNTER(4),K6 26200013 SPACE 2 26300013 * CHAIN BINS TOGETHER BY PUTTING IN EACH BIN THE ADDRESS OF THE 26400013 * NEXT AVAILABLE BIN. SAVE THE ADDRESS OF THE FIRST AVAILABLE 26500013 * BIN IN PPIBDSVA+4 AND THE TOTAL NUMBER OF AVAILABLE BINS IN 26600013 * PPIBDSVA+8. 26700013 SPACE 1 26800013 SR RD,RD 26900013 ST RD,PPIBDSVA+8 ZERO OUT AV0TCABLE BINS COUNT 27000013 IC RD,PPILAB08 NUMBER OF RSA AREAS 27100013 L RH,PPILAB08 PTR TO RSA TABLE IN PPI 27200013 L RG,0(RH) ADDRESS OF THIS RSA AREA BIN 27300013 ST RG,PPIBDSVA+4 SAVE ADDRESS OF FIRST RSA BIN 27400013 SPACE 1 27500013 RDAAAA L RF,4(RH) NO. BYTES IN THIS RSA AREA 27600013 LA RI,RDBBBB LOAD RETURN REG FOR THIS LOOP CALC 27700013 SR RE,RE 27800013 D RE,PPIBINSZ RF = NO. BINS IN THIS RSA AREA 27900013 L RE,PPIBDSVA+8 TOTAL NO. BINS IN RSA SO FAR 28000013 AR RE,RF UPDATE BIN COUNT 28100013 ST RE,PPIBDSVA+8 SAVE UPDATED BIN COUNT 28200013 SPACE 1 28300013 RDBBBB BCT RF,RDDDDD DECR NO. BINS CTR FOR THIS RSA 28400013 * BR IF MORE BINS IN THIS RSA 28500013 BCT RD,RDCCCC DECR NO. OF RSA'S CTR. BR IF MORE 28600013 * RSA'S. THE LAST BIN IN THE LAST 28700013 * RSA HAS NO CHAIN ADDRESS. 28800013 B RDFFFF BR TO LOAD MOVE PARAMETERS 28900013 SPACE 1 29000013 RDCCCC LA RI,RDSEEE RESET RETURN REG FOR THIS LOOP 29100013 RDDDDD A RG,PPIBINSZ ADDRESS OF THIS BIN + BIN SIZE 29200013 LR RE,RG SAVE ADDRESS OF NEXT BIN 29300013 S RE,KFOUR PTS TO AREA IN PREVIOS BIN TO PUT 29400013 * THE CHAIN AD OF NEXT BIN (IN RG) 29500013 ST RG,0(RE) PREVIOUS BIN NOW CHAINED TO NEXT BIN 29600013 BR RI BR TO RDBBBB ON ALL BINS EXCEPT THE 29700013 * LAST BIN IN EACH RSA. OTHERWISE 29800013 * BR TO RDSEEE 29900013 SPACE 1 30000013 RDSEEE LA RH,8(RH) UPDATE PPI RSA TABLE PTR TO NEXT 30100013 * RSA ENTRY 30200013 L RG,0(RH) ADDRESS OF FIRST BIN IN NEXT RSA 30300013 ST RG,0(RE) STORE AS CHAIN ADDRESS IN LAST BIN 30400013 * OF PREVIOUS RSA. 30500013 B RDAAAA CAL NEW RSA 30600018 SPACE 2 30700013 * LOAD PARAMS TO MOVE SAVED RECORD INTO RSA 30800013 SPACE 1 30900013 RDFFFF L RE,WADDRESS GE3 ADDRES2 OF SAVED RECORD 31000013 B RDSRMAX B TO RESTART RMAX COUNT 31100013 SPACE 2 31200013 * NORMAL ENTRY TO DEBLOCK ANOTHER RECORD 31300013 SPACE 1 31400013 RDSNTER CLI NOFITSW,X'01' CHECK NO FIT SWITCH 31500013 BL RDSNORM NO FIT SWITCH OFF 31600013 BH RDSSPEC NO. OF BINS WAS=0 31700013 SR RE,RE 31800013 A RE,PPIBDSVA+8 31900013 BZ RDSBINZ BIN COUNT STILL=0 32000013 L RA,WSAVE 32100013 L RE,WSAVE+4 RELOAD REGS TO CONTINUE MOVE 32200013 L RC,WSAVE+8 LOC FOR CHAIN ADR-USED AFTER PARTIAL 32300013 L RD,PPIBDSVA+4 ADR OF NEXT AVAIL BIN 32400013 ST RD,0(0,RC) INSERT CHAIN ADDRESS 32500013 LA RB,8(0) INDICATE DEBLOCK WITH NOFIT PREVIOUS 32600013 L RF,PPIBDSVA+4 LOAD ADR OF NEXT BIN IN RSA 32700013 RDSMOVE L RP,PPIBDSVA+12 LOAD ADR OF MOVE ROUTINE 32800013 BALR RO,RP BRANCH TO MOVE ROUTINE 32900013 SPACE 2 33000013 B RDSNOTF RECORD DIDN'T FIT 33100013 SPACE 33200013 * RECORD FIT ROUTINE 33300013 SPACE 33400013 CLI NOFITSW,X'01' CHECK NO FIT SWITCH 33500013 BC 7,RDSUSUAL LAST MOVE WAS NOT A NO FIT 33600013 L RD,WSAVAIL GET RSA STARTING ADR OF RECORD 33700013 SR RC,RC 33800013 ST RC,WSAVAIL ZERO OUT WSAVAIL 33900013 B RDSUSUAL+4 RD ALREADY LOADED 34000013 RDSUSUAL L RD,PPIBDSVA+4 BEGIN ADR OF RCD JUST MOVED 34100013 AH RD,EXPLFOUR ADD EXT SIZE & 4 34200013 L RC,ADRHOLDB LOAD BUFFER ADDRESS 34300013 L RE,PPIBDSVA+8 34400013 SR RE,RB 34500013 ST RE,PPIBDSVA+8 UPDATE BIN COUNT 34600013 L RE,0(0,RF) 34700013 ST RE,PPIBDSVA+4 UPDATE AVAIL 34800013 NI NOFITSW,X'00' TURN OFF NO FIT SWITCH 34900013 L RL,PPINET+4 35000013 RDSFIT B 4(0,RL) EXIT TO SORT ON RECORD FIT CONDITION 35100013 SPACE 2 35200013 * RECORD NO FIT ROUTINE 35300013 SPACE 35400013 RDSNOTF ST RA,WSAVE 35500013 STM RE,RF,WSAVE+4 SAVE INFO FOR NEXT MOVE 35600013 SR RD,RD 35700013 ST RD,PPIBDSVA+8 BINS AVAIL=0 35800013 OI NOFITSW,X'01' SET NOFITSW=01 35900013 A RD,WSAVAIL 36000013 BC 7,RDSBINZ MORE THAN ONE NO FIT ON SAME RECORD 36100013 L RD,PPIBDSVA+4 36200013 ST RD,WSAVAIL SAVE RSA ADR OF START OF RECORD 36300013 RDSBINZ L RL,PPINET+4 36400013 B 24(0,RL) EXIT TO SORT ON RECORD NO FIT 36500013 SPACE 2 36600013 RDSSPEC SR RE,RE 36700013 A RE,PPIBDSVA+8 CHECK BIN COUNT 36800013 BZ RDSBINZ BIN COUNT STILL ZERO 36900013 NI NOFITSW,X'00' ZERO NOFITSW-BIN COUNT NO LONGER 0 37000013 L RE,ADRHOLDA RELOAD BUFFER ADDRESS 37100013 RDSPTB L RF,PPIBDSVA+4 37200013 AH RF,EXPLFOUR ADD EXT SIZE & 4 TO AVAIL ADR 37300013 ST RE,ADRHOLDB SAVE BUFFER ADDRESS 37400013 SR RB,RB INDICATE DEBLOCK TO MOVE ROUTINE 37500013 B RDSMOVE CONTINUE PREP FOR MOVE 37600013 SPACE 2 37700013 RDSNORM TM PPISW1+7,X'20' 37800013 BO RDSISWON GO TO USER MOD 37900018 RDSGET LM RA,RB,KAWORK DCB ADDRESS AND/OR VRE WORK A26453 38000019 GET (1),(0) A26453 38100019 SPACE 2 38300013 L RJ,PPICOUNT 38400013 LA RJ,1(0,RJ) 38500013 ST RJ,PPICOUNT ADD 1 TO RECORD COUNT 38600013 ST RB,WADDRESS SET FOR RE-INIT. ENTRY 38700013 ST RB,ADRHOLD 38800013 RDSISWON LA RB,ADRHOLD SET UP PARAMETER FOR USER MOD 38900013 * WILL BE L RB,ADRHOLD ON USER EOF 39000013 L RJ,WNMAX 39100013 SPACE 39200013 * USER MOD EXIT E15 USING CALL MACRO EXPANSION INSTRUCTIONS. 39300013 * ADDRESS OF INPUT RECORD PASSED IN RB 39400013 SPACE 39500013 RDSUEXIT L RP,PPIX15+4 OVERLAYED IF THIS EXIT NOT ACTIVATED 39600013 * OR IF USER EOF REACHED. 39700013 BALR RO,RP BRANCH TO USER 39800013 SPACE 2 39900013 * USER RETURNS VIA RO WITH PROPER DISPLACEMENT IN RP. HE ALSO PASSES, 40000013 * IN REG RB, THE ADR OF THE RECORD TO BE INSERTED OR THE ADR OF THE 40100013 * WORK AREA IF THE USER HAS ALTERED THE RECORD. 40200013 SPACE 40300013 B *+4(15) BRANCH TABLE FOR USER ENTRY 40400018 B RDSDONO ALTER OR DO NOTHING 40500013 B RDSLETE DELETE A RECORD 40600013 B RDSUEOF USER END OF FILE 40700013 SPACE 40800013 * INSERT A RECORD 40900013 SPACE 41000013 RDSMAXCK BCT RJ,RDSINSRT CHECK FOR NMAX AND DECREMENT 41100013 B RDSMSG NMAX RCHD-GO TO OUTPUT MESS AND E16 41200013 SPACE 2 41300013 RDSINSRT OI PPISW1+7,X'20' SET INSERT SWITCH 41400013 L RF,PPIINSCT 41500013 LA RF,1(0,RF) 41600013 ST RF,PPIINSCT ADD 1 TO INSERT COUNT 41700013 RDSTSTBC LR RE,RB SET UP BUFF ADR FOR MOVE 41800013 ST RJ,WNMAX SAVE NMAX REG 41900013 ST RB,WADDRESS SET FOR REINITIALIZATION ENTRY 1297 42000018 SR RF,RF 42100013 A RF,PPIBDSVA+8 TEST BIN COUNT 42200013 BC 7,RDSRMAX BRANCH UNLESS BIN COUNT EQUALS ZERO 42300013 ST RE,ADRHOLDA SAVE RCD ADR UNTIL BIN IS AVAILABLE 42400013 OI NOFITSW,X'03' SET NO FIT SWITCH = 11 42500013 B RDSBINZ GO TO NO FIT EXIT 42600013 SPACE 2 42700013 RDSDONO BCT RJ,RDSNOTM CHECK FOR NMAX AND DECREMENT 42800013 B RDSMSG NMAX RCHD-GO TO OUTPUT MESS AND E16 42900013 SPACE 2 43000013 RDSNOTM NI PPISW1+7,X'DF' ZERO OUT INSERT SWITCH 43100013 B RDSTSTBC GO CHECK BIN COUNT 43200013 SPACE 2 43300013 RDSLETE NI PPISW1+7,X'DF' ZERO OUT INSERT SWITCH 43400013 L RF,PPIDELCT 43500013 LA RF,1(0,RF) 43600013 ST RF,PPIDELCT ADD 1 TO DELETE COUNT 43700013 B RDSGET GO GET ANOTHER RECORD 43800013 SPACE 2 43900013 RDSMSG STH RP,WINSALT SAVE INSERT-ALTER CONDITION 44000013 L RO,PPIRMA+4 MESSAGE MODULE ADR 44100013 LR RE,RB SAVE BUFF ADR 44200013 LM RA,RB,MSGP1A04 44300013 L RP,PPIADSSC LOAD PRINT RTN ADR 44400013 BAL RO,12(0,RP) BR TO PRINT RTN 44500013 SPACE 2 44600013 * USER EXIT E16-SORT CAPACITY, NMAX, HAS BEEN REACHED 44700013 * CALL MACRO INSTRUCTION EXPANSION 44800013 SPACE 44900013 LR RB,RE RESTORE BUFF ADR 45000013 L RP,PPIX16+4 NMAX EXIT ADR 45100013 BALR RO,RP BRANCH TO USER 45200013 SPACE 2 45300013 * USER RETURNS TO MODULE VIA RO WITH PROPER DISPLACEMENT IN RP 45400013 SPACE 45500013 B *+4(15) BRANCH TABLE FOR USER ENTRY 45600018 B RDSETPPI SORT CURRENT NO OF RCDS ONLY 45700013 B RDSIGNOR IGNORE NMAX-CONTINUE SORT 45800013 SPACE 45900013 * ABORT THE JOB 46000013 SPACE 46100013 L RP,PPIADSSC 46200013 BAL RO,16(0,RP) EXIT TO SORT SYSTEM CONTROL 46300013 SPACE 2 46400013 RDSSRTCR MVC RDSNTER(4),K1 OVERLAY ENTRANCE 46500013 L RL,PPINET+4 46600013 B 8(0,RL) BRANCH TO SORT TO EMPTY TREE 46700013 SPACE 2 46800013 RDSMPTYT L RL,PPINET+4 46900013 B 16(0,RL) BRANCH TO SORT TO CONT. EMPTY TREE 47000013 SPACE 2 47100013 * FROM USER,ON NMAX RETURN,TO SORT CURRENT NO OF RCDS ONLY 47200013 SPACE 1 47300013 RDSETPPI OI PPISW1+3,X'02' TURN ESTIMATED FILE SWITC