Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //KC03O10M JOB ,'MATTHEW ROWE' ,MSGCLASS=H 00010000
- //STEP1 EXEC PGM=ASSIST 00020000
- //STEPLIB DD DSN=KC02293.ASSIST.LOADLIB,DISP=SHR 00030000
- //SYSPRINT DD SYSOUT=* 00040000
- //SYSIN DD * 00050000
- ********************************************************************** 00060000
- * ASSIGNMENT 6 00070000
- * NAME: MATTHEW ROWE 00080000
- * FUNCTION: USE INTERNAL SUBROUTINES TO LOAD A TABLE READ FROM FILE 00090000
- * PRINT THE VALUES IN LINES OF 5 AND THEN PRINT ALL EVEN 00100000
- * ENTRIES IN THE SAME FASHION 00110000
- * 00111000
- * INPUT: FT05F001 00120000
- * OUTPUT: STDOUT INDIVIDUAL PAY RECORDS PER EMPLOYEE AS WELL AS TOTALS 00130000
- * ENTRY CONDS: NONE 00140000
- * EXIT CONDS: NONE 00150000
- * REGISTERS: R12--BASE REGISTER 00160000
- * R1---PARAMETER LISTS FOR SUBROUTINES 00170000
- * R14--LINK BACK TO MAIN FORWARD POINTER 00180000
- * R15--LINK TO SUB FRORWARD POINTER 00190000
- * PSEUDOCODE: <1> LOAD PARAMS AND BRANCH TO BUILD SUB 00210000
- * <2> LOAD PARAMS AND BRANCH TO PRINT SUB 00211000
- * <3> LOAD PARAMS AND BRANCH TO SORT SUB 00220000
- * <4> LOAD PARAMS AND BRANCH TO PRINT SUB 00230000
- * FOR SORTED, MULTIPLES OF 6;5; AND 4 00240000
- *********************************************************************** 00270000
- TITLE 'MATTHEW ROWE, CSCI 360, PROGRAM6' 00271000
- SPACE 3 00272000
- PROG6 CSECT 00280010
- STM 14,12,12(13) 00280100
- LR 12,15 00280200
- USING PROG6,12 00281009
- LA 14,MAINSAVE 00281100
- ST 14,8(13) 00281200
- ST 13,4(14) 00281300
- LR 13,14 00281400
- *********CALL BUILD**************************************************** 00281600
- LA 1,BPARMS 00281700
- L 15,=V(BUILD) 00281800
- BALR 14,15 00281900
- *********CALL PRINT1*************************************************** 00282000
- LA 1,P1PAR 00282711
- L 15,=V(PRINT) 00282811
- BALR 14,15 00282911
- *********CALL SORT***************************************************** 00283000
- * LA 1,SORTPL 00283100
- * L 15,=V(SORT) 00283200
- * BALR 14,15 00283300
- *********CALL PRINT2*************************************************** 00283400
- LA 1,P2PAR 00283811
- L 15,=V(PRINT) 00283911
- BALR 14,15 00284011
- *********CALL TALLY**************************************************** 00284100
- * LA 1,TALLPL 00284511
- * L 15,=V(TALLY) 00284600
- * BALR 14,15 00284700
- XDUMP TABLE,ENDTBLE-TABLE 00286209
- L 13,4(13) 00286309
- LM 14,12,12(13) 00286409
- BR 14 00286509
- *************CONSTANTS/PARAM LISTS/LABELS*********************** 00286600
- EJECT 00286700
- SPACE 3 00286800
- LTORG 00286900
- ORG PROG6+(*-PROG6+15)/16*16 00287009
- MAINSAVE DS 18F 00287100
- TABLE DC 70CL10' ' TABLE FIRST NAME D=0 00287200
- DC 70CL10' ' LAST NAME D=10 00287300
- DC 70CL9' ' ID NUMBER D=20 00287400
- DC 70CL8' ' PASSWORD D=29 00287500
- DC 70PL5'000000000' BALANCE D=37 00287600
- DC 70PL5'000000000' EXPIRATION DATE D=42 00287700
- DC 70CL1' ' FILLER D=47 00287800
- ENDTBLE DS 0H 00288000
- LASTREC DS 1F POINTER FOR LAST RECORD ENTERED 00288107
- NUMENT DS 1F NUMBER OF ENTRIES 00289000
- FIRST DC C'1' PRINT HEADER INDICATOR 00289111
- SECOND DC C'2' PRINT HEADER INDICATOR 00289211
- BPARMS DC A(TABLE) BUILD PARAMETERS 00289500
- DC A(LASTREC) 00289600
- DC A(NUMENT) 00289700
- P1PAR DC A(TABLE) BEFORE SORT PRINT PARAM LIST 00289811
- DC A(LASTREC) 00289911
- DC A(FIRST) 00290011
- P2PAR DC A(TABLE) AFTER SORT PARAM LIST 00291011
- DC A(LASTREC) 00291111
- DC A(SECOND) 00291211
- TALLPL DC A(TABLE) TALLY PARAM LIST 00291311
- DC A(LASTREC) 00291411
- DC A(NUMENT) 00291511
- *************END CONSTANTS/PARAM LISTS/LABELS******************* 00291700
- *************BUILD SUBROUTINE*********************************** 00291800
- * FUNCTION: FILL TABLE WITH VALUES FROM FILE 00291900
- * REGISTERS: R1---PARAM LIST 00292006
- * R2---TABLE POITNER 00292106
- * R3---EOT POINTER/LAST ENTRY POINTER 00292206
- * R4---TOTAL ENTRY FOR TABLE 00292306
- * R6---COUNTER OF VALUES IN TABLE 00292406
- * R14--RETURN MAIN 00292606
- * PSUEDO CODE:<1>SAVE REGISTERS AND LOAD PARAM LIST 00292700
- * <2>ENTER LOOP1 ,READ CARD, CHECK FOR EOF 00292800
- * <3>READ AND STORE VALUES 00292906
- * <4>MULTIPLY BALANCE BY -1 IF NECESSARY 00293006
- * LOOP BACK TO <2> TIL EOF/TABLE FULL 00293100
- **************************************************************** 00293200
- EJECT 00293300
- SPACE 3 00293400
- BUILD CSECT 00293500
- STM 14,12,12(13) STORE REGISTERS 00293600
- LR 12,15 LOAD PARAM LIST 00293700
- USING BUILD,12 00293800
- LA 14,BUILDST 00293900
- ST 14,8(13) 00294000
- ST 13,4(14) 00294100
- LR 13,14 00294200
- LM 2,4,0(1) UNLOAD PARAM LIST 00294300
- SR 6,6 INITIALIZE COUNTER 00294400
- LOOPT XREAD CARD,80 READ IN FILE 00294503
- BC B'0100',LOOPE CHECK FOR END OF LOOP AND BRANCH 00294600
- C 6,=F'70' CHECK FOR EOT 00294700
- BC B'1000',LOOPE IF TRUE GO TO END LOOP 00294800
- MVC 0(10,2),CARD+12 FIRST NAME 00294900
- MVC 10(10,2),CARD LAST NAME 00295000
- MVC 20(10,2),CARD+24 ID 00295100
- MVC 29(10,2),CARD+35 PASSWORD 00295200
- PACK 37(5,2),CARD+55(7) BALANCE 00295300
- PACK 42(5,2),CARD+45(8) EXPIRATION DATE 00295400
- A 6,=F'1' INCREMENT 00295600
- CLI CARD+62,C'-' SIGN COMPARISON 00295704
- BE MINUS IF IS A MINUS BRANCH 00295800
- LA 2,48(0,2) ADVANCE TABLE POINTER 00295905
- B LOOPT 00296000
- MINUS MP 37(5,2),=P'-1' AND MULTIPLY BY -1 00296100
- LA 2,48(0,2) ADVANCE TABLE POINTER 00296205
- B LOOPT BRANCH TO LOOP TOP 00297000
- LOOPE ST 6,0(0,4) LOOP END 00297900
- ST 2,0(3) STORE LAST TABLE ADDRESS AT LASTREC 00298008
- L 13,4(13) 00298108
- LM 14,12,12(13) EXIT LINKAGE 00298208
- BR 14 BRANCH TO MAIN 00298308
- LTORG 00299000
- BUILDST DS 18F 00300400
- CARD DS 80C FOR READING RECORDS 00300501
- DC C'*' 00300600
- *************END BUILD SUBROUTINE******************************* 00300700
- *************PRINT SUBROUTINE*********************************** 00300800
- * FUNCTION: PRINT EVEN VALS OF TABLE, 6 PER LINE 00300900
- * REGISTERS: R1---PARAM LIST 00301000
- * R3---TABLE POITNER 00301100
- * R4---EOT POINTER/LAST ENTRY POINTER 00301200
- * R5---VALUE OF D 00301300
- * R6---VALUE OF H 00301400
- * R7---VALUE PER LINE COUNTER 00301500
- * R8&9-TABLE VALUE IN 32 BIT FORM FOR DIVISION 00301600
- * R10--TABLE VALUE STORED FOR XPRNT 00301700
- * PSUEDO CODE:<1>SAVE REGISTERS, LOAD PARAM LIST, INTIALIZE COUNTERS 00302100
- * <2>ENTER LOOP ,READ TABLE, CHECK FOR EOT 00302200
- * <3>XDECI VAL,INCREMENT TABLE, DIVIDE CHECK REM 00302300
- * <4>IF 0 XDECO TO VAR1 & CONT OTHER WISE LOOP TO <2> 00302400
- * <5>REPEAT PREVIOUS STEPS 2 &3 UNTIL 7 IS EQUAL TO H 00302500
- * THEN BRANCH TO XPRNT, RESET COUNTER LOOP TO TOP 00302600
- * <6>ONCE ALL VALUES CHECKED BRANCH TO END AND PRINT 00302700
- * REMAINING VALUES 00302800
- * <7>RESTORE REGISTERS AND BRANCH BACK TO MAIN 00302900
- **************************************************************** 00303800
- EJECT 00303900
- SPACE 3 00304000
- PRINT CSECT 00304100
- STM 14,12,12(13) STORE REGISTERS 00304200
- LR 12,15 00304300
- USING PRINT,12 00304500
- LA 14,PRINTST 00304600
- ST 14,8(13) 00304700
- ST 13,4(14) 00304800
- LR 13,14 00304900
- LM 2,4,0(1) LOAD PARAM LIST 00305009
- L 4,0(0,4) 00305116
- ST 4,HEADVAL 00305216
- CLI HEADVAL,C'2' CHECK HEADER ARGUMENT 00305315
- BE HEADER2 00305411
- XPRNT HEAD,120 00305511
- MVI HEAD+1,C' ' 00305611
- MVC HEAD+2(118),HEAD+1 00305711
- XPRNT FILLER,120 00305811
- MVI FILLER+1,C' ' 00305911
- MVC FILLER+2(118),FILLER+1 00306011
- SR 7,7 INITIALIZE ENTRY/PG COUNTER 00306111
- MVI LINE+1,C' ' DESTRUCTIVE OVERLAP 00306200
- MVC LINE+2(118),LINE+1 CLEAR LINES 00306311
- LOOPTOP CR 2,3 TEST FOR EOT 00306411
- BC B'1000',LOOPBOT IF TRUE END 00306500
- MVC 0(10,2),FNAME PUT FIRST NAME IN FNAME 00306613
- MVC 10(10,2),LNAME PUT LAST NAME IN LNAME 00306713
- MVC 37(5,2),ENDBAL PUT BALANCE IN END BAL 00306813
- CP ENDBAL,COMPPK 00306917
- BNH NEGBAL 00307011
- MVC BAL(13),=XL13'4020202021204B202040404040' 00307111
- EDMK BAL(13),ENDBAL 00307211
- BCTR 1,0 00307311
- MVI 0(1),C'$' 00307411
- MVC 29(8,2),PASS PUT PASSWORD IN PASS 00308013
- MVC 42(5,2),EXDAT PUT EXPIRATION DATE IN EXDAT 00308113
- MVC EXPD(11),=XL11'4020202020612020612020' 00309011
- ED EXPD(11),EXDAT 00309111
- MVC 20(9,2),IDNUM PUT ID NUMBER IN IDNUM 00310013
- XPRNT LINE,120 PRINT VALS 00317111
- MVI LINE+1,C' ' DESTRUTIVE OVERLAP 00317200
- MVC LINE+2(118),LINE+1 00317311
- A 2,48(0,2) ADVANCE POINTER 00317411
- A 7,=F'1' 00317511
- C 7,=F'24' 00317611
- B LOOPTOP 00317711
- NEGBAL DS 0H 00317811
- MVC BAL(13),=XL13'4020206B2021204B202040C3D9' 00317911
- EDMK BAL(13),ENDBAL 00318011
- BCTR 1,0 00318111
- MVI 0(1),C'$' 00318211
- MVC 29(8,2),PASS PUT PASSWORD IN PASS 00318313
- MVC 42(5,2),EXDAT PUT EXPIRATION DATE IN EXDAT 00318413
- MVC EXPD(11),=XL11'4020202020612020612020' 00318511
- ED EXPD(11),EXDAT 00318611
- MVC 20(9,2),IDNUM PUT ID NUMBER IN IDNUM 00318713
- XPRNT LINE,120 PRINT VALS 00318811
- MVI LINE+1,C' ' DESTRUTIVE OVERLAP 00318911
- MVC LINE+2(118),LINE+1 00319011
- A 2,48(0,2) ADVANCE POINTER 00319111
- A 7,=F'1' 00319211
- C 7,=F'24' 00319311
- B LOOPTOP 00319411
- NEWPG SR 7,7 00319511
- CLI HEADVAL,C'2' 00319615
- BE HEADER2 00319711
- XPRNT HEAD,120 00319811
- MVI HEAD+1,C' ' 00319911
- MVC HEAD+2(118),HEAD+1 00320011
- B LOOPTOP START NEXT LINE 00320100
- HEADER2 XPRNT HEAD2,120 00320211
- MVI HEAD2+1,C' ' 00320311
- MVC HEAD2+2(118),HEAD2+1 00320411
- XPRNT FILLER,120 00320511
- MVI FILLER+1,C' ' 00320611
- MVC FILLER+2(118),FILLER+1 00320711
- B LOOPTOP 00320811
- LOOPBOT DS 0H 00320900
- XPRNT LINE,120 PRINT VALS 00321011
- L 13,4(13) 00321100
- LM 14,12,12(13) EXIT LINKAGE 00321200
- BR 14 BRANCH TO MAIN 00321300
- ***************PRINT SUBROUTINE CONST'S***************************** 00321400
- LTORG 00321500
- PRINTST DS 18F 00321600
- HEADVAL DS 1C VALUE OF HEADER ARGUMENT FOR COMPARISON 00321717
- COMPPK DC P'0' TO COMPARE BALANCE VALUE TO 0 00321817
- HEAD DC C'1' 00321911
- DC 48C' ' 00322011
- DC 27C'FAMOUS NAMES -- CLIENT LIST' 00322111
- DC 44C' ' 00322211
- HEAD2 DC C'1' 00322311
- DC 48C' ' 00322411
- DC 31C'CLIENT LIST SORTED BY LAST NAME' 00322511
- DC 40C' ' 00322611
- FILLER DC C'-' 00322711
- DC 10C' ' 00322811
- DC 10C'FIRST NAME' 00322911
- DC 9C' ' 00323011
- DC 10C'LAST NAME ' 00323111
- DC 7C' ' 00323211
- DC 12C' BALANCE ' 00323311
- DC 8C' ' 00323411
- DC 8C'PASSWORD' 00323511
- DC 10C' ' 00323611
- DC 10C'EXP. DATE ' 00323711
- DC 9C' ' 00323811
- DC 9C'ID NUMBER' 00323911
- DC 7C' ' 00324011
- LINE DC C'0' 00324100
- DC 10C' ' 00324211
- FNAME DS 10C 00324309
- DC 9C' ' 00324411
- LNAME DS 10C 00324509
- DC 6C' ' 00324611
- BAL DS 13C 00324711
- DC 8C' ' 00324811
- PASS DS 8C 00324909
- DC 9C' ' 00325011
- EXPD DS 11C 00325111
- DC 9C' ' 00325211
- IDNUM DS 9C 00325309
- DC 7C' ' 00325411
- EXDAT DS PL5 00325511
- ENDBAL DS PL5 00325611
- *************END PRINT SUBROUTINE****************************** 00325700
- *************SORT SUBROUTINE *********************************** 00325800
- * FUNCTION: SORT TABLE IN DECENDING ORDER 00325900
- * REGISTER USAGE: 00326000
- * 1 - USED BY XDECI / PARAM LIST ADDR 00326100
- * 2 - PARAM LIST, TABLE 00326200
- * 3 - PARAM LIST, EOT 00326300
- * 5 - J PTR 00326400
- * 6 - MIN PTR 00326500
- * 7 - VALUE OF J 00326600
- * 8 - VALUE OF MAX 00326700
- * 9 - VALUE OF I 00326800
- * 10 - SUBROUTINE RETURN ADDRESS 00326900
- * 11 - TEMPT 00327000
- * PSEUDO CODE: 00327100
- * <1> LOAD 1ST ADDRESS AND NEXT ADRESS STORE START IN R6 00327200
- * <2> LOAD VALS AND COMPARE, IF 2ND IS LARGER, SWITCH 00327300
- * VALUES AND ADVANCE TO SECOD TABLE POSITION, ELSE 00327400
- * MOVE THROUGH EACH VAL UNTIL WE FIND A LARGER VAL 00327500
- * <3> REPEAT FROM BEGINNING UNTIL ALL ITEMS ARE SORTED 00327600
- * <4> RETURN TO MAIN 00327700
- ***************************************************************** 00327800
- SPACE 3 00327900
- SORT CSECT 00328000
- STM 14,12,12(13) 00328100
- LR 12,15 00328200
- USING SORT,12 00328300
- LA 14,SORTST 00328400
- ST 14,8(13) 00328500
- ST 13,4(14) 00328600
- LR 13,14 00328700
- LM 2,3,0(1) UNLOAD PARAM LIST 00328809
- LA 2,10(0,2) ADVANCE TO LAST NAME 00328909
- LOOP1 C 2,0(3) CHECK FOR EOT 00329009
- BNL END1 IF IS EOT END 00329109
- LR 6,2 MIN = IRGE = I 00329209
- LA 5,48(2) J = I + 1 00329309
- LOOP2 C 5,0(3) CHECK FOR EOT 00329409
- BNL END2 IS 5 EOT 00329509
- L 7,0(5) LOAD J VALUE 00329609
- L 8,0(6) LOAD MIN VALUE 00329709
- CR 8,7 COMPARE MIN < J 00329809
- BNH ENDIF J COMPARED TO I 00329909
- LR 6,5 MAX = J 00330009
- ENDIF LA 5,48(0,5) INCREMENT J PTR 00330109
- B LOOP2 REPEAT LOOP2 00330200
- END2 L 9,0(2) LOAD I VALUE 00330300
- L 8,0(6) LOAD MAX VALUE 00330400
- ST 9,0(0,6) SWAP VALUES 00330500
- ST 8,0(0,2) SWITCH VALUES 9 AT 6 00330600
- LA 2,48(0,2) INCREMENT I PTR 2 00330709
- B LOOP1 REPEAT LOOP1 00330800
- END1 DS 0H INCREMENT TABLE/I 00330900
- L 13,4(13) 00331000
- LM 14,12,12(13) EXIT LINKAGE 00331100
- BR 14 BRANCH TO MAIN 00331200
- SORTST DS 18F 00331300
- LTORG 00331400
- *************END SORT SUBROUTINE ******************************* 00331500
- END PROG6 00331609
- /* 00332000
- //FT05F001 DD DSN=KC02314.SUMMER14.CSCI360.HW6DATA,DISP=SHR 00340000
- //FT06F001 DD SYSOUT=* 00379000
- // 00440000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement