This sample was Assembled and tested during September 2002 on an OS/390 V2.R9 system.
'PRNTLINE - GENERAL PURPOSE NON-LASER PRINT ROUTINE' |
||||
NOGEN |
||||
PRNTLINE |
||||
*,R15 |
ESTABLISH INITIAL ADDRESSABILITY. |
|
||
CENTRY |
START |
BRANCH AROUND SAVE AREA. |
|
|
DC |
AL1(8) |
LENGTH OF MODULE NAME. |
|
|
DC |
CL8'PRNTLINE' |
MODULE NAME - TO AID DEBUGGING. |
|
|
DS |
0F |
18 FULLWORD REGISTER SAVE AREA. |
|
|
DC |
RESERVED FOR PL/I |
|
||
PRESAVE |
DC |
AL4(*-*) |
PREVIOUS SAVE AREA IN CHAIN. |
|
NEXTSAVE |
DC |
AL4(*-*) |
NEXT SAVE AREA IN CHAIN. |
|
DC |
15F'0' |
REGISTERS 14 THRU 12 GO HERE. |
|
|
SAVEEND |
DS |
0H |
END OF THE SAVE AREA. |
|
15 |
|
|||
START |
R14,R12,12(R13) |
SAVE THE REGISTERS, |
|
|
LR |
R12,R15 |
SET UP R12 AS BASE, FROM EP, AND |
|
|
CENTRY,R12 |
ESTABLISH ADDRESSABILITY. |
|
||
ST |
R13,PRESAVE |
PERFORM |
|
|
LA |
R15,SAVEAREA |
SAVE |
|
|
ST |
R15,8(R13) |
AREA |
|
|
LR |
R13,R15 |
CHAINING. |
|
|
R8,R9,0(R1) |
R8 = PRINT FILE DCB ADDRESS |
|
||
USING |
IHADCB,R8 |
ADDRESSABLE DCB FIELDS |
|
|
* |
  |
  |
R9 = CONTROL PARAMETER LIST ADDR |
|
USING |
PRNTAREA,R9 |
ADDRESSABLE PRINT CONTROL |
|
|
LH |
R7,PROCOPT |
R7 = PROCESSING OPTION |
|
|
B |
*+4(R7) |
BRANCH ACCORDING TO PROC. OPTION |
|
|
B |
PRNTOPEN |
00 - GO OPEN FILE |
|
|
B |
PRNTPUT |
04 - GO WRITE A LINE |
|
|
B |
PRNTCLOS |
08 - GO CLOSE THE FILE |
|
|
PRNTPUT |
CP |
LINECNT,LPAGE |
IS NEW PAGE REQUIRED? |
|
BL |
PUTLINE |
NO - GO WRITE PRINT LINE. |
|
|
SP |
LINECNT,LINECNT |
YEP - CLEAR THE LINE COUNT, |
|
|
AP |
PAGENO,=PL1'1' |
INCREMENT PAGE COUNT. |
|
|
LH |
R5,TITLES |
R5 = NUMBER OF TITLES PER PAGE |
|
|
LA |
R6,PLSTD |
CALCULATE LOCATION |
|
|
AH |
R6,DCBLRECL |
OF 1ST TITLE |
|
|
LR |
R15,R6 |
CALCULATE PAGE |
|
|
ICM |
R15,15,PNOFFSET |
NUMBER LOCATION |
|
|
MVC |
0(6,R15),=X'4020202 |
02021' OUTPUT CURRENT |
|
|
ED |
0(6,R15),PAGENO |
PAGE NUMBER |
|
|
PUTTITLE |
(R8),(R6) |
OUTPUT THE TITLE |
|
|
AH |
R6,DCBLRECL |
POINT TO NEXT TITLE |
|
|
BCT |
R5,PUTTITLE |
REPEAT TILL TITLES COMPLETE |
|
|
MVI |
PLSTD,C'0' |
FORCE DOUBLE LINE SPACE |
|
|
PUTLINE |
PUT |
(R8),PLSTD |
OUTPUT NORMAL LINE |
|
AP |
LINECNT,=PL1'1' |
INCREMENT LINE COUNT. |
|
|
MVI |
PLSTD,C' ' |
REVERT TO SINGLE LINE SPACE |
|
|
B |
EXIT |
GO TO COMMON EXIT ROUTINE |
|
|
SPACE |
3 | |||
EXIT |
L |
R13,PRESAVE |
RESTORE R13, AND |
|
LM |
R14,R12,12(R13) |
OTHERS EXCEPT R15. |
|
|
BR |
R14 |
RETURN TO CALLER |
|
|
* |
PRNTOPEN - OPEN THE PRINT FILE. | |||
SPACE |
1 | |||
PRNTOPEN |
((R8),OUTPUT) |
OPEN THE DATA SET |
|
|
MVC |
PROCOPT,=F'4' |
INDICATE PUT REQUIRED NEXT |
|
|
B |
PRNTPUT |
GO TO PUT FIRST PRINT LINE. |
|
|
SPACE |
3 | |||
* |
PRNTCLOS - CLOSE THE PRINT FILE. | |||
SPACE |
1 | |||
PRNTCLOS |
CLOSE |
((8)) |
CLOSE THE DATA SET |
|
B |
EXIT |
|
||
R1 |
1 | |||
R2 |
EQU |
2 | ||
R3 |
EQU |
3 | ||
R4 |
EQU |
4 | ||
R5 |
EQU |
5 | ||
R6 |
EQU |
6 | ||
R7 |
EQU |
7 | ||
R8 |
EQU |
8 | ||
R9 |
EQU |
9 | ||
R10 |
EQU |
10 | ||
R11 |
EQU |
11 | ||
R12 |
EQU |
12 | ||
R13 |
EQU |
13 | ||
R14 |
EQU |
14 | ||
R15 |
EQU |
15 | ||
PRNTAREA |
DSECT | |||
PROCOPT |
DS |
H |
PROCESSING OPTION |
|
* |
  |
  |
00 - OPEN THE PRINT FILE |
|
* |
  |
  |
04 - OUTPUT A LINE. | |
* |
  |
  |
08 - CLOSE THE PRINT FILE. | |
TITLES |
DS |
H |
NUMBER OF TITLES PER PAGE. |
|
PNOFFSET |
DS |
AL4 |
PAGE NUMBER OFFSET IN TITLE |
|
LPAGE |
DS |
PL2 |
LINES PER PAGE. |
|
LINECNT |
DS |
PL2 |
CURRENT LINE COUNT |
|
PAGENO |
DS |
PL3 |
PAGE NUMBER. |
|
PLSTD |
DS |
CL133 |
STANDARD PRINT LINE |
|
* |
  |
  |
TITLE LINES FOLLOW PRINT LINE | DCBD |
DSORG=PS |
Copyright © KMS-IT Limited 2002