Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //KC03NF2X JOB ,'Sean Vogel',MSGCLASS=H
- //STEP1 EXEC PGM=ASSIST
- //STEPLIB DD DSN=KC02293.ASSIST.LOADLIB,DISP=SHR
- //SYSPRINT DD SYSOUT=*
- //SYSIN DD *
- *************************************************
- *
- * Program: ASSIGN5
- * Programmer: Sean Vogel
- *
- * Register Usage:
- *
- * 1 - used by XDECI/XDECO
- * 2 - input number count
- * 3 -
- * 4 - counter
- * 5 - offset
- * 6 - DX ptr
- * 7 - HX ptr
- * 8 -
- * 9 -
- * 10 - subroutine return address
- * 11 -
- * 12 -
- * 13 -
- * 14 -
- * 15 -
- *
- *************************************************
- MAIN CSECT
- USING MAIN,15
- TITLE 'Sean Vogel, CSCI 360, Program 5'
- *
- LA 1,BLIST
- BAL 10,BUILD CALL BUILD
- *
- XPRNT =CL15'1Table Contents',15
- LA 1,=A(TABLE,EOT,ONE,FIVE)
- BAL 10,PRINT CALL PRINT
- *
- LA 1,SLIST
- BAL 10,SORT CALL SORT
- *
- XPRNT =CL20'1Table After Sorting',20
- LA 1,=A(TABLE,EOT,ONE,FIVE)
- BAL 10,PRINT CALL PRINT
- *
- SR 4,4 ZERO COUNTER
- LA 6,D1 LOAD POINTERS
- LA 7,H1
- C 4,=F'3'
- BNL ENDM
- *
- * print multiples of D1
- L 8,D1
- XDECO 8,OUTM+13
- XPRNT OUTM,25
- MVI OUTM+13,C' ' DESTRUCTIVE
- MVC OUTM+14(11),OUTM+13 OVERLAP
- LA 1,=A(TABLE,EOT,D1,H1)
- BAL 10,PRINT
- *
- * print multiples of D2
- L 8,D2
- XDECO 8,OUTM+13
- XPRNT OUTM,25
- MVI OUTM+13,C' ' DESTRUCTIVE
- MVC OUTM+14(11),OUTM+13 OVERLAP
- LA 1,=A(TABLE,EOT,D2,H2)
- BAL 10,PRINT
- *
- * print multiples of D3
- L 8,D3
- XDECO 8,OUTM+13
- XPRNT OUTM,25
- MVI OUTM+13,C' ' DESTRUCTIVE
- MVC OUTM+14(11),OUTM+13 OVERLAP
- LA 1,=A(TABLE,EOT,D3,H3)
- BAL 10,PRINT
- ENDM BR 14
- *
- *************************************************
- *
- * DECLARE SUBROUTINES
- *
- *************************************************
- *
- *************************************************
- *
- * BUILD SUBROUTINE
- *************************************************
- * Register Usage:
- *
- * 1 - used by XDECI / param list addr
- * 2 - param list, table
- * 3 - param list, eot
- * 4 - address of D1
- * 5 - address of H1
- * 6 - extracted num, XDECI/XDECO
- * 7 -
- * 8 -
- * 9 -
- * 10 - subroutine return address
- * 11 -
- * 12 -
- * 13 -
- * 14 -
- * 15 -
- *
- *************************************************
- BUILD DS 0H BEGIN BUILD SUBROUTINE
- STM 0,15,REGSAVE
- LM 2,5,0(1) LOAD PARAM LIST
- READLN XREAD INLINE,80 READ A LINE
- BL ENDRD
- *
- LA 1,INLINE
- FILLTBL XDECI 6,0(1) GET NEXT NUMBER
- BO ENDTBL END OF LINE
- C 6,=F'-88888888' CHECK FOR DELIMITER
- BE LAST3
- CR 2,3 COMPARE TABLE AND EOT
- BNL ENDRD QUIT IF TABLE FULL
- ST 6,0(2) STORE VALUE IN TABLE
- A 2,=F'4' INCREMENT TABLE PTR
- B FILLTBL REPEAT INNER LOOP
- *
- ENDTBL B READLN REPEAT OUTER LOOP
- *
- LAST3 XREAD INLINE,80 READ A LINE
- BL ENDRD
- XDECI 6,INLINE GET NEXT NUMBER
- BO ELAST
- ST 6,0(4) STORE DX
- A 4,=F'4' INCREMENT DX PTR
- XDECI 6,0(1) GET NEXT NUMBER
- BO ELAST
- ST 6,0(5)
- A 5,=F'4' INCREMENT HX PTR
- ELAST B LAST3
- *
- ENDRD ST 2,0(3) STORE EOT POINTER
- LM 0,15,REGSAVE RESTORE REGISTERS
- BR 10
- *************************************************
- * END BUILD
- *************************************************
- *
- *************************************************
- *
- * PRINT SUBROUTINE
- *
- *************************************************
- * Register Usage:
- *
- * 1 - param list addr
- * 2 - param list, table
- * 3 - param list, eot
- * 4 - param list, DX
- * 5 - param list, HX
- * 6 - extracted num, XDECI/XDECO
- * 7 - next position in output line
- * 8 - counter
- * 9 -
- * 10 - subroutine return address
- * 11 -
- * 12 - math
- * 13 - math
- * 14 -
- * 15 -
- *
- *************************************************
- *
- PRINT DS 0H
- STM 0,15,REGSAVE
- LM 2,5,0(1) LOAD PARAM LIST
- *
- SR 8,8 ZERO COUNTER
- LA 7,OUTLNE+1 LOAD LINE PTR
- PUT2 C 2,0(3) COMPARE TABLE TO EOT
- BNL ENDPRNT
- L 13,0(2) PUT NUM IN R5
- LR 6,13 COPY NUM TO R6
- M 12,=F'1'
- D 12,0(4) DIVIDE BY 2
- C 12,=F'0' CHECK REMAINDER FOR 0
- BNE SKIP1
- XDECO 6,0(7) PUT NUMBER ON LINE
- A 7,=F'12' INCREMENT OUTLN POSITION
- A 8,=F'1' INCREMENT COUNTER
- SKIP1 A 2,=F'4' INCREMENT TABLE PTR
- C 8,0(5) CHECK IF WE HAVE 5 ON LINE
- BL PUT2 REPEAT LOOP
- SR 8,8 ZERO COUNTER
- LA 7,OUTLNE+1 RELOAD LINE PTR
- XPRNT OUTLNE,85 PRINT THE LINE
- MVI OUTLNE+1,C' '
- MVC OUTLNE+2(83),OUTLNE+1 CLEAR THE LINE
- B PUT2 REPEAT LOOP
- *
- ENDPRNT LM 0,15,REGSAVE
- XPRNT OUTLNE,85 PRINT LAST LINE
- BR 10
- *
- *************************************************
- * END PRINT
- *************************************************
- *
- *************************************************
- *
- * SORT SUBROUTINE
- *
- *************************************************
- * Register Usage:
- *
- * 1 - used by XDECI / param list addr
- * 2 - param list, table
- * 3 - param list, eot
- * 4 -
- * 5 - j ptr
- * 6 - min ptr
- * 7 - value of J
- * 8 - value of max
- * 9 - value of i
- * 10 - subroutine return address
- * 11 - temp
- * 12 -
- * 13 -
- * 14 -
- * 15 -
- *
- *************************************************
- *
- SORT DS 0H
- STM 0,15,REGSAVE
- LM 2,3,0(1) LOAD PARAM LIST
- *
- LOOP1 C 2,0(3) CHECK FOR EOT
- BNL END1
- LR 6,2 MAX = I
- LA 5,4(2) J = I + 1
- LOOP2 C 5,0(3) CHECK FOR EOT
- BNL END2
- L 7,0(5) LOAD J VALUE
- L 8,0(6) LOAD MAX VALUE
- CR 8,7 COMPARE MAX < j
- BNL ENDIF
- LR 6,5 MAX = J
- ENDIF A 5,=F'4' INCREMENT J PTR
- B LOOP2 REPEAT LOOP2
- END2 L 9,0(2) LOAD I VALUE
- L 8,0(6) LOAD MAX VALUE
- ST 9,0(0,6) SWAP VALUES
- ST 8,0(0,2)
- A 2,=F'4' INCREMENT I PTR
- B LOOP1 REPEAT LOOP1
- END1 DS 0H
- LM 0,15,REGSAVE
- BR 10
- *************************************************
- * END SORT
- *************************************************
- *
- *************************************************
- * DECLARE VARIABLES
- *************************************************
- *
- TABLE DC 60F'-1'
- EOT DS F
- *
- D1 DC F'0'
- D2 DC F'0'
- D3 DC F'0'
- *
- H1 DC F'0'
- H2 DC F'0'
- H3 DC F'0'
- *
- INLINE DS CL80
- DC CL2' *'
- *
- OUTLNE DC C'0'
- DS 84C' '
- *
- OUTM DC C'1'
- DC CL12'Multiples of'
- DS 12C' '
- *
- REGSAVE DS 16F
- *
- BLIST DC A(TABLE)
- DC A(EOT)
- DC A(D1)
- DC A(H1)
- *
- PLIST DC A(TABLE)
- DC A(EOT)
- DC A(D1)
- DC A(H1)
- *
- SLIST DC A(TABLE)
- DC A(EOT)
- *
- ONE DC F'1'
- FIVE DC F'5'
- *
- END MAIN
- *
- *
- /*
- //FT05F001 DD DSN=KC02314.SUMMER14.CSCI360.HW5DATA,DISP=SHR
- //FT06F001 DD SYSOUT=*
- //
Advertisement
Add Comment
Please, Sign In to add comment