This sample was Assembled and tested during September 2002 on an OS/390 V2.R9 system.

TITLE

'PRNTLINE - GENERAL PURPOSE NON-LASER PRINT ROUTINE'

PRINT

NOGEN

PRNTLINE

CSECT

USING

*,R15

ESTABLISH INITIAL ADDRESSABILITY.

CENTRY

B

START

BRANCH AROUND SAVE AREA.

DC

AL1(8)

LENGTH OF MODULE NAME.

DC

CL8'PRNTLINE'

MODULE NAME - TO AID DEBUGGING.

SAVEAREA

DS

0F

18 FULLWORD REGISTER SAVE AREA.

DC

AL4(0)

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.

DROP

15

START

STM

R14,R12,12(R13)

SAVE THE REGISTERS,

LR

R12,R15

SET UP R12 AS BASE, FROM EP, AND

USING

CENTRY,R12

ESTABLISH ADDRESSABILITY.

ST

R13,PRESAVE

PERFORM

LA

R15,SAVEAREA

SAVE

ST

R15,8(R13)

AREA

LR

R13,R15

CHAINING.

LM

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

PUT

(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

EJECT

*

PRNTOPEN - OPEN THE PRINT FILE.

SPACE

1

PRNTOPEN

OPEN

((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

EQU

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

END

Copyright © KMS-IT Limited 2002