Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
>>DEFINE CONSTANT log-level AS 2
*> RUN WITH:
*> dd_optfdein=src/data/optfraw dd_optfdeou=src/data/optfdsort /
*> optfde01
*> JCL equivalent is src/jcl/optfde01.jcl (I hope)
IDENTIFICATION DIVISION.
PROGRAM-ID. optfde01.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT pgm-input ASSIGN TO "dd_input"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT pgm-output ASSIGN TO "dd_output"
ORGANIZATION IS LINE SEQUENTIAL.
* *| Logging uses SYSPRING |*
* SELECT log-output ASSIGN TO "dd_sysprint"
* ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD pgm-input.
01 input-record PIC X(118).
FD pgm-output.
01 output-record PIC X(118).
*FD log-output.
* 01 output-record PIC X(118).
WORKING-STORAGE SECTION.
01 file-status PICTURE x VALUE space.
88 END-OF-FILE VALUE high-value
WHEN SET TO false is low-value.
01 working-data.
05 pgm-name pic x(9) VALUE "optfde01".
05 old-date pic 9(8) VALUE ZERO.
*> Gratuitous redefines for cbl-gdb demo
05 old-dat1 REDEFINES old-date.
10 datmo PIC 9(2).
10 datda PIC 9(2).
10 datyr PIC 9(4).
05 new-date pic 9(8) VALUE ZERO.
*> Gratuitous redefines for cbl-gdb demo
05 new-dat1 REDEFINES new-date.
10 datyr PIC 9(4).
10 datmo PIC 9(2).
10 datda PIC 9(2).
05 my-counters.
10 FILLER PIC X(18) VALUE "Records modified: ".
10 custmas-ctr PIC 9(5) VALUE ZERO.
LOCAL-STORAGE SECTION.
copy ordent.
*> ***************************************************************
PROCEDURE DIVISION.
main section.
00-main.
DISPLAY "Program name: " pgm-name.
open input pgm-input.
open output pgm-output.
INITIALIZE working-data.
PERFORM 01-read.
PERFORM until end-of-file
PERFORM 02-process
PERFORM 01-read
END-PERFORM.
DISPLAY my-counters.
MOVE 0 to RETURN-CODE.
PERFORM 59-close.
goback.
support section.
01-read.
READ pgm-input
AT END SET END-OF-FILE TO TRUE.
02-process.
MOVE input-record TO oeit.
PERFORM 50-fix-date.
MOVE oeit TO output-record.
WRITE output-record.
ADD 1 TO custmas-ctr.
50-fix-date. *> Gratuitous sub paragraph
MOVE oeit-orddate IN oeit to old-date.
STRING old-date(5:4) old-date(1:4)
INTO new-date.
MOVE new-date TO oeit-orddate in oeit.
59-close.
CLOSE pgm-input.
CLOSE pgm-output.
END PROGRAM optfde01.