1      *******************************************************************
2      ** Virtual printer subprogram
3      *******************************************************************
4       IDENTIFICATION DIVISION.
5      **************************************
6       PROGRAM-ID. VIRTUAL-PRINTER.
7      **
8       ENVIRONMENT DIVISION.
9      ***************************************
10      **
11       INPUT-OUTPUT SECTION.
12      **-*-*-*-*-*-*-*-*-*-*-*-*-*
13       FILE-CONTROL.
14           SELECT FPRINTER ASSIGN to "./printer.dat"
15           ORGANIZATION LINE SEQUENTIAL
16       ACCESS SEQUENTIAL.
17      **
18       DATA DIVISION.
19      **************************************
20       FILE SECTION.
21      **-*-*-*-*-*-*-*-*-*-*-*-*-*
22       FD FPRINTER.
23       01 ENREG-PRINTER PIC X(80).
24      **
25       WORKING-STORAGE SECTION.
26      **-*-*-*-*-*-*-*-*-*-*-*-*-*
27       LINKAGE SECTION.
28      **-*-*-*-*-*-*-*-*-*-*-*-*-*
29       01 RECEIVED-PARAM.
30           02 PA-RESET         PIC X       .
31           02 PA-BUFFER        PIC X(80)   .
32           02 PA-WHEN          PIC X(6)    .
33           02 PA-WHAT          PIC X(5)    .
34           02 PA-HOWMANY       PIC 99      .
35       PROCEDURE DIVISION USING RECEIVED-PARAM.
36      **************************************
37       MAIN-PRINTER.
38           IF(PA-RESET = "O")
39               OPEN OUTPUT FPRINTER
40               if(PA-WHEN = "AFTER")
41                   if(PA-WHEN = "AFTER")
42                       WRITE ENREG-PRINTER
43                   END-IF
44               END-IF
45           ELSE
46                OPEN EXTEND FPRINTER
47                IF(PA-WHEN = "AFTER")
48                   IF(PA-WHAT = "PAGE")
49                       MOVE '>------------------------------------------'
50      -'------------------------------------<' TO ENREG-PRINTER
51                       WRITE ENREG-PRINTER
52                   ELSE
53                       SUBTRACT 1 FROM PA-HOWMANY
54                       PERFORM PA-HOWMANY TIMES
55                           MOVE SPACES TO ENREG-PRINTER
56                           WRITE ENREG-PRINTER
57                       END-PERFORM
58                   END-IF
59                END-IF
60                WRITE ENREG-PRINTER FROM PA-BUFFER
61                IF(PA-WHEN = "BEFORE")
62                   IF(PA-WHAT = "PAGE")
63                       MOVE '>------------------------------------------'
64      -'------------------------------------<' TO ENREG-PRINTER
65                       WRITE ENREG-PRINTER
66                   ELSE
67                       SUBTRACT 1 FROM PA-HOWMANY
68                       PERFORM PA-HOWMANY TIMES
69                           MOVE SPACES TO ENREG-PRINTER
70                           WRITE ENREG-PRINTER
71                       END-PERFORM
72                   END-IF
73                END-IF
74           END-IF
75           CLOSE FPRINTER
76           MOVE "N"        TO PA-RESET
77           MOVE SPACES     TO PA-BUFFER
78           MOVE "AFTER"    TO PA-WHEN
79           MOVE "LINES"    TO PA-WHAT
80           MOVE 1          TO PA-HOWMANY
81           EXIT PROGRAM.
82       END PROGRAM VIRTUAL-PRINTER.
83