Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //KC03O10M JOB ,'MATTHEW ROWE' ,MSGCLASS=H
- //STEP1 EXEC PGM=ASSIST
- //STEPLIB DD DSN=KC02293.ASSIST.LOADLIB,DISP=SHR
- //SYSPRINT DD SYSOUT=*
- //SYSIN DD *
- **********************************************************************
- * ASSIGNMENT 7
- * NAME: MATTHEW ROWE
- * FUNCTION: USE INTERNAL SUBROUTINES TO LOAD A TABLE READ FROM FILE
- * PRINT THE VALUES IN LINES OF 5 AND THEN PRINT ALL EVEN
- * ENTRIES IN THE SAME FASHION
- *
- * INPUT: FT05F001
- * OUTPUT: STDOUT INDIVIDUAL PAY RECORDS PER EMPLOYEE AS WELL AS TOTALS
- * ENTRY CONDS: NONE
- * EXIT CONDS: NONE
- * REGISTERS: R12--BASE REGISTER
- * R1---PARAMETER LISTS FOR SUBROUTINES
- * R14--LINK BACK TO MAIN FORWARD POINTER
- * R15--LINK TO SUB FRORWARD POINTER
- * PSEUDOCODE: <1> LOAD PARAMS AND BRANCH TO BUILD SUB
- * <2> LOAD PARAMS AND BRANCH TO PRINT SUB
- * <3> LOAD PARAMS AND BRANCH TO SORT SUB
- * <4> LOAD PARAMS AND BRANCH TO PRINT SUB
- * FOR SORTED, MULTIPLES OF 6;5; AND 4
- ***********************************************************************
- TITLE 'MATTHEW ROWE, CSCI 360, PROGRAM6'
- SPACE 3
- PROG7 CSECT
- STM 14,12,12(13)
- LR 12,15
- USING PROG7,12
- LA 14,MAINSAVE
- ST 14,8(13)
- ST 13,4(14)
- LR 13,14
- *********CALL BUILD****************************************************
- LA 1,BPARMS
- L 15,=V(BUILD)
- BALR 14,15
- *********PRINT 1******************************************************
- LA 1,PPRAM1
- L 15,=V(PRINT)
- BALR 14,15
- XDUMP TABLE,ENDTBLE-TABLE
- L 13,4(13)
- LM 14,12,12(13)
- BR 14
- *************CONSTANTS/PARAM LISTS/LABELS*****************************
- EJECT
- SPACE 3
- LTORG
- MAINSAVE DS 18F
- ORG PROG7+(*-PROG7+31)/32*32
- TABLE DS 1600C TABLE FIRST NAME D=0
- ENDTBLE DS 0H
- LASTREC DS F POINTER FOR LAST RECORD ENTERED
- PAGENUM DC PL1'0'
- PHEAD1 DC F'1'
- PHEAD2 DC F'2'
- BPARMS DC A(TABLE) BUILD PARAMETERS
- DC A(LASTREC)
- PPRAM1 DC A(TABLE) PRINT PARAMETERS
- DC A(LASTREC)
- DC A(PHEAD1)
- DC A(PAGENUM)
- PPRAM2 DC A(TABLE) 2ND PRINT PARAMETERS
- DC A(LASTREC)
- DC A(PHEAD2)
- DC A(PAGENUM)
- *************END CONSTANTS/PARAM LISTS/LABELS*******************
- *************BUILD SUBROUTINE***********************************
- * FUNCTION: FILL TABLE WITH VALUES FROM FILE
- * REGISTERS: R1---PARAM LIST
- * R2---RESERVED FOR TRT
- * R3---EOT POINTER/LAST ENTRY POINTER
- * R4---TABLE POINTER
- * R5---LENGTH OF ENTRY
- * R14--RETURN MAIN
- * PSUEDO CODE:<1>SAVE REGISTERS AND LOAD PARAM LIST
- * <2>ENTER LOOP1 ,READ CARD, CHECK FOR EOF
- * <3>READ AND STORE VALUES
- * <4>MULTIPLY BALANCE BY -1 IF NECESSARY
- * LOOP BACK TO <2> TIL EOF/TABLE FULL
- ****************************************************************
- EJECT
- SPACE 3
- BUILD CSECT
- STM 14,12,12(13) STORE REGISTERS
- LR 12,15 LOAD PARAM LIST
- USING BUILD,12
- LA 14,BUILDST
- ST 14,8(13)
- ST 13,4(14)
- LR 13,14
- LM 3,4,0(1) UNLOAD PARAM LIST
- SR 8,8 INITIALIZE COUNTER
- LA 5,CARD
- LOOPT XREAD CARD,80 READ IN FILE
- BC B'0100',LOOPE CHECK FOR END OF LOOP AND BRANCH
- C 8,=F'50' CHECK FOR EOT
- BC B'1000',LOOPE IF TRUE GO TO END LOOP
- ***************ID NUMBER********************************************
- TRT 0(80,5),TRCHAR CHECK FOR NON BLANK
- C 1,=A(MARKER) CHECK FOR END OF CARD
- BC B'1010',LOOPT
- LR 6,1 STORE NON BLANK
- TRT 0(80,1),TRBLANK SEARCH FOR BLANK AFTER CHAR
- LR 7,1 STORE ADDRESS
- LR 9,7 SAVE BLANK ADDRESS FOR NEX TRT
- SR 7,6 GET LENGTH
- BCTR 7,0 ADJUST LENGTH
- EX 7,IDMVC ID
- PACK IDNUM(8),IDNUM(8) PACK ID
- CP IDNUM(8),=P'0' COMPARE FOR DELIMETER
- BE LOOPE END IF DELIMETER
- CVB 10,IDNUM CONVERT TO BINARY
- ST 10,TEMP PLACE IN TEMP STORAGE
- EX 7,IDSTR STORE IN TABLE AS BINARY
- LA 3,4(0,3) ADVANCE TABLE POINTER
- SR 7,7 CLEAR REGISTER
- SR 6,6
- ***************FIRST NAME*******************************************
- TRT 0(80,9),TRCHAR CHECK FOR NON BLANK CHAR
- C 1,=A(MARKER) CHECK EOC
- BC B'1010',LOOPT
- LR 6,1 STORE ADDRESS OF CHAR
- TRT 0(80,1),TRBLANK CHECK AFTER CHAR FOR BLANK
- LR 7,1 STORE ADDRESS OF BLANK
- LR 9,7
- SR 7,6 GET LENGTH
- BCTR 7,0 ADJUST
- EX 7,FMVC FIRST NAME
- LA 3,10(0,3) ADVANCE POINTER
- SR 7,7 CLEAR REGISTERS
- SR 6,6
- ****************LAST NAME*******************************************
- TRT 0(80,9),TRCHAR LOOK FOR CHAR
- C 1,=A(MARKER)
- BC B'1010',LOOPT
- LR 6,1 STORE ADDRESS OF CHAR
- TRT 0(80,1),TRBLANK SEARCH FOR BLANK AFTER CHAR
- LR 7,1 STORE ADDRESS OF BLANK
- LR 9,7
- SR 7,6 GET LENGTH
- BCTR 7,0 ADJUST LENGTH
- EX 7,LMVC LAST NAME
- LA 3,12(0,3) ADVANCE POINTER
- SR 7,7 CLEAR REGISTERS
- SR 6,6
- ****************SCORE 1*********************************************
- TRT 0(80,9),TRDIGIT SEARCH FOR DIGIT
- C 1,=A(MARKER)
- BC B'1010',LOOPT
- LR 6,1 SAVE ADDRESS OF DIGIT
- TRT 0(80,1),TRBLANK SEARCH FOR BLANK AFTER DIGIT
- LR 7,1 STORE ADDRESS OF BLANK
- LR 9,7
- SR 7,6 GET LENGTH
- BCTR 7,0 ADJUST
- EX 7,PACKIT PACK IN TABLE(SCORE 1)
- LA 3,2(0,3) ADVANCE TABLE POINTER
- SR 7,7 CLEAR REGISTERS
- SR 6,6
- ***************SCORE 2**********************************************
- TRT 0(80,9),TRDIGIT
- C 1,=A(MARKER)
- BC B'1010',LOOPT
- LR 6,1
- TRT 0(80,1),TRBLANK
- LR 7,1
- LR 9,7
- SR 7,6
- BCTR 7,0
- EX 7,PACKIT
- LA 3,2(0,3)
- SR 7,7
- SR 6,6
- ***************SCORE 3**********************************************
- TRT 0(80,9),TRDIGIT
- C 1,=A(MARKER)
- BC B'1010',LOOPT
- LR 6,1
- TRT 0(80,1),TRBLANK
- LR 7,1
- SR 7,6
- BCTR 7,0
- EX 7,PACKIT
- LA 3,2(0,3)
- SR 7,7
- SR 6,6
- **************INCREMENT AND LOOP************************************
- A 8,=F'1'
- B LOOPT
- LOOPE ST 3,0(4) STORE LAST TABLE ADDRESS AT LASTREC
- L 13,4(13)
- LM 14,12,12(13) EXIT LINKAGE
- BR 14 BRANCH TO MAIN
- LTORG
- BUILDST DS 18F
- CARD DS 80C FOR READING RECORDS
- MARKER DC CL2' 5'
- TRCHAR DC 256X'FF'
- ORG TRCHAR+X'40'
- DC X'00'
- ORG
- TRBLANK DC 256X'00'
- ORG TRBLANK+X'40'
- DC X'FF'
- ORG
- TRDIGIT DC 256X'00'
- ORG TRDIGIT+X'F0'
- DC 10X'FF'
- ORG
- TEMP DS F
- TRPTR DS F
- IDSTR MVC 0(4,3),TEMP
- IDMVC MVC IDNUM(8),0(6)
- FMVC MVC 0(10,3),0(6)
- LMVC MVC 0(12,3),0(6)
- PACKIT PACK 0(2,3),0(0,6)
- FNAME DS 10C
- LNAME DS 12C
- IDNUM DS D
- SCORE1 DS 2P
- SCORE2 DS 2P
- SCORE3 DS 2P
- *****************END BUILD************************************
- *************PRINT SUBROUTINE*********************************
- * FUNCTION: PRINT EVEN VALS OF TABLE, 6 PER LINE
- * REGISTERS: R1---PARAM LIST
- * R2---TABLE POITNER
- * R3---EOT POINTER/LAST ENTRY POINTER
- * R4---HEADER
- * R5---PAGE NUMBER
- * R7---VALUE PER LINE COUNTER
- * R8&9-TABLE VALUE IN 32 BIT FORM FOR DIVISION
- * R10--TABLE VALUE STORED FOR XPRNT
- * PSUEDO CODE:<1>SAVE REGISTERS, LOAD PARAM LIST, INTIALIZE COUNTERS
- * <2>ENTER LOOP ,READ TABLE, CHECK FOR EOT
- * <3>XDECI VAL,INCREMENT TABLE, DIVIDE CHECK REM
- * <4>IF 0 XDECO TO VAR1 & CONT OTHER WISE LOOP TO <2>
- * <5>REPEAT PREVIOUS STEPS 2 &3 UNTIL 7 IS EQUAL TO H
- * THEN BRANCH TO XPRNT, RESET COUNTER LOOP TO TOP
- * <6>ONCE ALL VALUES CHECKED BRANCH TO END AND PRINT
- * REMAINING VALUES
- * <7>RESTORE REGISTERS AND BRANCH BACK TO MAIN
- ****************************************************************
- EJECT
- SPACE 3
- ******************ENTRY LINKAGE*********************************
- PRINT CSECT
- STM 14,12,12(13) STORE REGISTERS
- LR 12,15 ENTRY LINKAGE
- USING PRINT,12
- LA 14,PRINTST LOAD STORAGE AREA
- ST 14,8(13) ADDRESS HERE
- ST 13,4(14) ADDRESS BACK
- LR 13,14
- ******************SUBROUTINE BODY******************************
- LM 2,5,0(1) LOAD PARAMETER LIST
- L 3,0(0,3) LOAD EOT
- MVC PNUM(2),0(5) LOAD PAGE COUNTER
- SR 7,7 INITIALIZE ENTRY/PG COUNTER
- MVI LINE+1,C' '
- MVC LINE+2(118),LINE+1
- AP PNUM,=P'1'
- CLI 0(4),C'2' CHECK HEADER ARGUMENT
- BE HEADER2
- MVC PRNUM(2),=XL2'4020'
- EDMK PRNUM(2),PNUM
- XPRNT HEAD,75 PRINT HEADER
- MVI LINE+1,C' '
- MVC LINE+2(118),LINE+1
- XPRNT FILLER,80 PRINT COLUMN TITLES
- MVI LINE+1,C' '
- MVC LINE+2(118),LINE+1
- LOOPTOP CR 2,3 TEST FOR EOT
- BC B'1000',LOOPBOT IF TRUE END
- C 7,=F'21'
- BE NEWPAGE
- MVC TEMPR(4),0(2)
- L 8,TEMPR LOAD ID VAL
- CVD 8,IDTEMP CONVERT
- MVC IDPRINT(8),IDTEMP
- MVC IDPRINT(16),=XL16'40202020202020212020202020202020'
- EDMK IDPRINT(16),IDTEMP
- *
- MVC LPRINT(12),14(2)
- MVC FPRINT(10),4(2)
- *
- MVC SCR1(2),26(2)
- MVC SCR2(2),28(2)
- MVC SCR3(2),30(2)
- MVC SCOR1(4),SCORPAT
- EDMK SCOR1(4),SCR1
- MVC SCOR2(4),SCORPAT
- EDMK SCOR2(4),SCR2
- MVC SCOR3(4),SCORPAT
- EDMK SCOR3(4),SCR3
- XPRNT LINE,83
- *
- LA 2,32(0,2) ADVANCE TABLE POINTER
- A 7,=F'1'
- B LOOPTOP
- NEWPAGE DS 0H
- SR 7,7 RESET COUNTER
- CLI 0(4),C'2'
- BE HEADER2
- AP PNUM,=P'1'
- MVC PRNUM(2),=XL2'4020'
- EDMK PRNUM(2),PNUM
- XPRNT HEAD,75
- MVI LINE+1,C' '
- MVC LINE+2(118),LINE
- XPRNT FILLER,80 PRINT COLUMN TITLES
- MVI LINE+1,C' '
- MVC LINE+2(118),LINE+1
- B LOOPTOP START NEXT LINE
- HEADER2 DS 0H
- MVI LINE+1,C' '
- MVC LINE+2(81),LINE+1
- MVC PRNUM2(2),=XL2'4020'
- EDMK PRNUM2(2),PNUM
- XPRNT HEAD2,75
- AP PNUM,=P'1'
- MVI LINE+1,C' '
- MVC LINE+2(118),LINE+1
- XPRNT FILLER,80
- MVI LINE+1,C' '
- MVC LINE+2(118),LINE+1
- B LOOPTOP
- LOOPBOT DS 0H
- L 9,PNUM
- ST 9,0(0,5)
- ******************EXIT LINKAGE*********************************
- L 13,4(13)
- LM 14,12,12(13) EXIT LINKAGE
- BR 14 BRANCH TO MAIN
- ******************PRINT CONSTANTS******************************
- PRINTST DS 18F
- PNUM DC PL1'0'
- TEMPR DS F
- IDTEMP DS D
- SCR1 DS 2P
- SCR2 DS 2P
- SCR3 DS 2P
- SCORPAT DC XL4'40202020'
- ******************DATA LINE TEMPLATE***************************
- LINE DC C'0'
- DC 120C' '
- ORG LINE+2
- IDPRINT DC 16C' '
- ORG LINE+20
- LPRINT DC 12C' '
- ORG LINE+34
- FPRINT DC 10C' '
- ORG LINE+50
- SCOR1 DC 4C' '
- ORG LINE+62
- SCOR2 DC 4C' '
- ORG LINE+74
- SCOR3 DC 4C' '
- ORG
- ******************DATA LINE = 83 ******************************
- ******************FILL LINE TEMPLATE***************************
- FILLER DC C'-'
- DC 120C' '
- ORG FILLER+9
- DC CL9'ID NUMBER'
- ORG FILLER+20
- DC CL10'LAST NAME '
- ORG FILLER+34
- DC CL12'FIRST NAME '
- ORG FILLER+50
- DC CL7'SCORE 1'
- ORG FILLER+61
- DC CL7'SCORE 2'
- ORG FILLER+72
- DC CL7'SCORE 3'
- ORG
- ********************* FILLER =94C*****************************
- ******************HEADER 1************************************
- HEAD DC C'1'
- DC CL120' '
- ORG HEAD+24
- DC CL25'INITIAL TABLE OF CONTENTS'
- ORG HEAD+64
- DC CL6'PAGE: '
- ORG HEAD+70
- PRNUM DC PL2'0'
- ORG
- ****************** HEAD = 74C********************************
- ******************HEADER 2************************************
- HEAD2 DC C'1'
- DC CL120' '
- ORG HEAD2+24
- DC CL25'TABLE AFTER TRANSACTIONS '
- ORG HEAD2+64
- DC CL6'PAGE: '
- ORG HEAD+70
- PRNUM2 DS PL2'0'
- ORG
- ****************** HEAD2 = 74C*******************************
- ******************END PRINT***********************************
- END PROG7
- /*
- //FT05F001 DD DSN=KC02314.SUMMER14.CSCI360.HW7DATA,DISP=SHR
- //FT06F001 DD SYSOUT=*
- //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement