Two and three dimension tables

Download Report

Transcript Two and three dimension tables

Two and three dimension tables
Please use speaker notes for
additional information!
twodim.cbl
These two input
fields are going
to be used as
the subscripts to
get information
out of the two
dimension
table.
The city names from
the 2 one-dimensional
tables will print in
these fields.
IDENTIFICATION DIVISION.
PROGRAM-ID. TWODIM.
AUTHOR. GROCER.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT-FILE ASSIGN TO "C:\PCOBWIN\CIS12FST\TWODIM.DAT".
SELECT PRINT-FILE ASSIGN TO PRINTER.
DATA DIVISION.
The fare from the twoFILE SECTION.
dimensional table will
FD INPUT-FILE
DATA RECORD IS INPUT-REC.
print in this field.
01 INPUT-REC.
05 CUST-ID
PIC X(4).
05 FROM-CITY
PIC 9.
05 TO-CITY
PIC 9.
FD PRINT-FILE
DATA RECORD IS PRINTZ.
Input data:
01 PRINTZ.
05 FILLER
PIC X(4).
111123
05 CUST-ID-PR
PIC X(4).
05 FILLER
PIC X(15).
121222
05 FROM-CITY-PR
PIC X(10).
123433
05 FILLER
PIC X(5).
212125
05 TO-CITY-PR
PIC X(10).
05 FILLER
PIC X(5).
234514
05 FARE-PR
PIC $ZZZ.99.
242511
05 FILLER
PIC X(20).
WORKING-STORAGE SECTION.
272835
01 PROGRAM-INDICATORS.
05
MORE-RECS
PIC XXX
VALUE "YES".
01 WORK-AREAS.
05 INV-VALUE-WS
PIC 9(5)V99 VALUE 0.
twodim.cbl
Boston
Providence
New York
01
01
Istanbul
851.00
929.00
799.99
Budapest
549.50
612.75
526.89
Frankfort
659.96
628.99
498.99
FARE-TABLE.
05 FROM-BOSTON.
10 TO-ISTANBUL PIC
10 TO-BUDAPEST PIC
10 TO-FRANKFORT PIC
10 TO-LONDON
PIC
10 TO-PRAGUE
PIC
05 FROM-PROVIDENCE.
10 TO-ISTANBUL PIC
10 TO-BUDAPEST PIC
10 TO-FRANKFORT PIC
10 TO-LONDON
PIC
10 TO-PRAGUE
PIC
05 FROM-NEW-YORK.
10 TO-ISTANBUL PIC
10 TO-BUDABEST PIC
10 TO-FRANKFORT PIC
10 TO-LONDON
PIC
10 TO-PRAGUE
PIC
RDF-FARE-TABLE REDEFINES
05 FROM-CITIES OCCURS 3
10 FARE PIC 999V99
London
499.00
525.00
425.00
Prague
498.99
550.00
512.00
999V99
999V99
999V99
999V99
999V99
VALUE
VALUE
VALUE
VALUE
VALUE
851.00.
549.50.
659.95.
499.00.
498.99.
999V99
999V99
999V99
999V99
999V99
VALUE
VALUE
VALUE
VALUE
VALUE
929.00.
612.75.
628.99.
525.00.
550.00.
999V99
VALUE 799.99.
999V99
VALUE 526.89.
999V99
VALUE 498.99.
999V99
VALUE 425.00.
999V99
VALUE 512.00.
FARE-TABLE.
TIMES.
OCCURS 5 TIMES.
twodim.cbl
FROM-CITY on the input has values of 1, 2, or
3. It will be used as a subscript to move the
FROM-CITY-NAME from this table.
MOVE FROM-CITY-NAME (FROM-CITY)..
TO-CITY on the input has values of 1, 2, 3, 4 or
5. It will be used as a subscript to move the TOCITY-NAME from this table.
01
01
01
01
MOVE TO-CITY-NAME (TO-CITY)...
01
You can see that there are three 05s that describe
the 3 places you can fly from. In this example
consider these the rows. Under the redefines, I
am redefining these as 05 FROM-CITIES.
Under each of the 05s, I have put five 10 levels to
describe each of the cities I can fly to. In this
example, consider them columns. On the
redefines, these are called FARE with an occurs
of 5 times.
Looking at it, I have three 05s redefined as 05
occurs 3 times and under each 05 in the original
table I have five 10s redefined as 10 FARE with a
picture and occurs 5 times.
01
FROM-CITY-TABLE.
05 FILLER PIC X(10) VALUE "BOSTON
".
05 FILLER PIC X(10) VALUE "PROVIDENCE".
05 FILLER PIC X(10) VALUE "NEW YORK ".
RDF-FROM-CITY-TABLE REDEFINES FROM-CITY-TABLE.
05 FROM-CITY-NAME PIC X(10) OCCURS 3 TIMES.
TO-CITY-TABLE.
05 FILLER PIC X(10) VALUE "ISTANBUL ".
05 FILLER PIC X(10) VALUE "BUDAPEST ".
05 FILLER PIC X(10) VALUE "FRANKFORT ".
05 FILLER PIC X(10) VALUE "LONDON
".
05 FILLER PIC X(10) VALUE "PRAGUE
".
RDF-TO-CITY-TABLE REDEFINES TO-CITY-TABLE.
05 TO-CITY-NAME PIC X(10) OCCURS 5 TIMES.
FARE-TABLE.
05 FROM-BOSTON.
10 TO-ISTANBUL PIC 999V99
VALUE 851.00.
10 TO-BUDAPEST PIC 999V99
VALUE 549.50.
10 TO-FRANKFORT PIC 999V99
VALUE 659.95.
10 TO-LONDON
PIC 999V99
VALUE 499.00.
10 TO-PRAGUE
PIC 999V99
VALUE 498.99.
05 FROM-PROVIDENCE.
10 TO-ISTANBUL PIC 999V99
VALUE 929.00.
10 TO-BUDAPEST PIC 999V99
VALUE 612.75.
10 TO-FRANKFORT PIC 999V99
VALUE 628.99.
10 TO-LONDON
PIC 999V99
VALUE 525.00.
10 TO-PRAGUE
PIC 999V99
VALUE 550.00.
05 FROM-NEW-YORK.
10 TO-ISTANBUL PIC 999V99
VALUE 799.99.
10 TO-BUDABEST PIC 999V99
VALUE 526.89.
10 TO-FRANKFORT PIC 999V99
VALUE 498.99.
10 TO-LONDON
PIC 999V99
VALUE 425.00.
10 TO-PRAGUE
PIC 999V99
VALUE 512.00.
RDF-FARE-TABLE REDEFINES FARE-TABLE.
05 FROM-CITIES OCCURS 3 TIMES.
10 FARE PIC 999V99 OCCURS 5 TIMES.
twodim.cbl
01
01
01
01
PAGE-CONTROL.
05 PAGE-NO
05 LINE-CT
DATE-WS.
05 YR-WS
05 MO-WS
05 DA-WS
PAGE-HDR.
05 FILLER
05 DATE-HDR.
10 MO-HDR
10 FILLER
10 DA-HDR
10 FILLER
10 YR-HDR
05 FILLER
05 FILLER
05 FILLER
05 FILLER
05 PAGE-NO-HDR
05 FILLER
COLUMN-HDR.
05 FILLER
05 FILLER
05 FILLER
05 FILLER
05 FILLER
05 FILLER
05 FILLER
05 FILLER
05 FILLER
PIC 99
PIC 99
VALUE 1.
VALUE 0.
PIC 99
PIC 99
PIC 99
VALUE 0.
VALUE 0.
VALUE 0.
PIC XX
VALUE SPACES.
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
99.
X
99.
X
99.
X(22)
X(16)
X(20)
X(5)
Z9.
X(5)
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
X
X(10)
X(12)
X(10)
X(5)
X(11)
X(6)
X(4)
X(16)
VALUE "/".
VALUE "/".
VALUE
VALUE
VALUE
VALUE
SPACES.
"AIR FARE
SPACES.
"PAGE ".
REPORT".
VALUE SPACES.
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
SPACES.
"PASSENGER ".
SPACES.
"ORIGINATE ".
SPACES.
"DESTINATION".
SPACES.
"FARE".
SPACES.
twodim.cbl
This line moves the FROMCITY-NAME from the one
dimensional table, subscripted
by FROM-CITY from the input
to the field on the print line.
This line moves the TO-CITYNAME from the one
dimensional table subscripted
by TO-CITY from the input to
the field on the print line.
This line moves the FARE,
first subscripted by FROMCITY to get into the correct
05 level and then subscripted
by TO-CITY to get into the
correct 10 level. It moves the
subscripted FARE to the field
on the print line.
PROCEDURE DIVISION.
MAINLINE.
PERFORM A-100-STARTUP.
PERFORM B-100-PROCESS.
PERFORM C-100-WRAPUP.
STOP RUN.
A-100-STARTUP.
OPEN INPUT INPUT-FILE
OUTPUT PRINT-FILE.
PERFORM U-000-DATE-ROUT.
B-100-PROCESS.
READ INPUT-FILE
AT END
MOVE "NO " TO MORE-RECS.
PERFORM B-200-LOOP
UNTIL MORE-RECS = "NO ".
B-200-LOOP.
PERFORM B-300-DETAIL.
READ INPUT-FILE
AT END
MOVE "NO " TO MORE-RECS.
B-300-DETAIL.
IF LINE-CT > 55 OR PAGE-NO = 1
PERFORM B-400-HDR-ROUT.
MOVE SPACES TO PRINTZ.
MOVE CUST-ID TO CUST-ID-PR.
MOVE FROM-CITY-NAME (FROM-CITY) TO FROM-CITY-PR.
MOVE TO-CITY-NAME (TO-CITY) TO TO-CITY-PR.
MOVE FARE (FROM-CITY, TO-CITY) TO FARE-PR.
WRITE PRINTZ
AFTER ADVANCING 1 LINES.
ADD 1 TO LINE-CT.
twodim.cbl
B-400-HDR-ROUT.
MOVE PAGE-NO TO PAGE-NO-HDR.
WRITE PRINTZ FROM PAGE-HDR
AFTER ADVANCING PAGE.
WRITE PRINTZ FROM COLUMN-HDR
AFTER ADVANCING 2 LINES.
MOVE SPACES TO PRINTZ.
WRITE PRINTZ
AFTER ADVANCING 1 LINES.
ADD 1 TO PAGE-NO.
MOVE 4 TO LINE-CT.
U-000-DATE-ROUT.
ACCEPT DATE-WS FROM DATE.
MOVE MO-WS TO MO-HDR.
MOVE DA-WS TO DA-HDR.
MOVE YR-WS TO YR-HDR.
C-100-WRAPUP.
CLOSE INPUT-FILE
PRINT-FILE.
twodim.cbl
This is the result of the:
MOVE TO-CITY-NAME (TO-CITY) TO TO-CITY-PR.
This is the result of the:
MOVE FROM-CITY-NAME (FROM-CITY) TO FROM-CITY-PR.
05/01/99
PASSENGER
1111
1212
1234
2121
2345
2425
2728
AIR FARE
ORIGINATE
PROVIDENCE
PROVIDENCE
NEW YORK
PROVIDENCE
BOSTON
BOSTON
NEW YORK
REPORT
DESTINATION
FRANKFORT
BUDAPEST
FRANKFORT
PRAGUE
LONDON
ISTANBUL
PRAGUE
PAGE
FARE
$628.99
$612.75
$498.99
$550.00
$499.00
$851.00
$512.00
This is the result of the
MOVE FARE (FROM-CITY, TO-CITY) TO FARE-PR.
1
Alternate way of setting up the
two dimension table:
Boston
Providence
New York
01
01
Istanbul
851.00
929.00
799.99
Budapest
549.50
612.75
526.89
Frankfort
659.96
628.99
498.99
London
499.00
525.00
425.00
Prague
498.99
550.00
512.00
FARE-TABLE-WAY2.
05 TO-ISTANBUL.
10 FROM-BOSTON
PIC 999V99
VALUE
10 FROM-PROV
PIC 999V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
05 TO-BUDAPEST.
10 FROM-BOSTON
PIC 999V99
VALUE
10 FROM-PROV
PIC 999V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
05 TO-FRANKFORT.
10 FROM-BOSTON
PIC 999V99
VALUE
10 FROM-PROV
PIC 999V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
05 TO-LONDON.
10 FROM-BOSTON
PIC 99V99
VALUE
10 FROM-PROV
PIC 99V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
05 TO-PRAGUE.
10 FROM-BOSTON
PIC 99V99
VALUE
10 FROM-PROV
PIC 99V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
RDF-FARE-TABLE REDEFINES FARE-TABLE.
05 TO-CITIES OCCURS 5 TIMES.
10 FARE PIC 999V99 OCCURS 3 TIMES.
851.00.
929.00.
799.99.
549.50.
612.75.
526.89.
659.96.
628.99.
498.99.
499.00
525.00.
425.00.
498.99.
550.00.
512.00.
Alternate
approach
01
INPUT:
05
05
FROM-CITY
TO-CITY
PIC 9.
PIC 9.
01
FARE-TABLE-WAY2.
05 TO-ISTANBUL.
10 FROM-BOSTON
PIC 999V99
VALUE
10 FROM-PROV
PIC 999V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
05 TO-BUDAPEST.
10 FROM-BOSTON
PIC 999V99
VALUE
10 FROM-PROV
PIC 999V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
05 TO-FRANKFORT.
10 FROM-BOSTON
PIC 999V99
VALUE
10 FROM-PROV
PIC 999V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
05 TO-LONDON.
10 FROM-BOSTON
PIC 99V99
VALUE
10 FROM-PROV
PIC 99V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
05 TO-PRAGUE.
10 FROM-BOSTON
PIC 99V99
VALUE
10 FROM-PROV
PIC 99V99
VALUE
10 FROM-NEW-YORK PIC 999V99
VALUE
RDF-FARE-TABLE REDEFINES FARE-TABLE.
05 TO-CITIES OCCURS 5 TIMES.
10 FARE PIC 999V99 OCCURS 3 TIMES.
In the PROCEDURE DIVISION:
MOVE FARE(TO-CITY, FROM-CITY) TO FARE-PR.
851.00.
929.00.
799.99.
549.50.
612.75.
526.89.
659.96.
628.99.
498.99.
499.00
525.00.
425.00.
498.99.
550.00.
512.00.
3 dimension table
01
01
THREE-DIM-TABLE.
05 DAY-RATES.
10 DAY-S-S.
15 TO-FR PIC 9V99 VALUE 1.20.
15 TO-NB PIC 9V99 VALUE 1.25.
15 TO-NP PIC 9V99 VALUE 1.35.
15 TO-PR PIC 9V99 VALUE 1.40.
10 DAY-P-P.
15 TO-FR PIC 9V99 VALUE 1.35.
15 TO-NB PIC 9V99 VALUE 1.40.
15 TO-NP PIC 9V99 VALUE 1.50.
15 TO-PR PIC 9V99 VALUE 1.55.
05 EVENING-RATES.
10 EVENING-S-S.
15 TO-FR PIC 9V99 VALUE 1.00.
15 TO-NB PIC 9V99 VALUE 1.05.
15 TO-NP PIC 9V99 VALUE 1.15.
15 TO-PR PIC 9V99 VALUE 1.20.
10 EVENING-P-P.
15 TO-FR PIC 9V99 VALUE 1.15.
15 TO-NB PIC 9V99 VALUE 1.20.
15 TO-NP PIC 9V99 VALUE 1.30.
15 TO-PR PIC 9V99 VALUE 1.35.
05 NIGHT-RATES.
10 NIGHT-S-S.
15 TO-FR PIC 9V99 VALUE 0.85.
15 TO-NB PIC 9V99 VALUE 0.90.
15 TO-NP PIC 9V99 VALUE 1.00.
15 TO-PR PIC 9V99 VALUE 1.05.
10 NIGHT-P-P.
15 TO-FR PIC 9V99 VALUE 1.00.
15 TO-NB PIC 9V99 VALUE 1.05.
15 TO-NP PIC 9V99 VALUE 1.15.
15 TO-PR PIC 9V99 VALUE 1.20.
RDF-THREE-DIM-TABLE REDEFINES THREE-DIM-TABLE.
05 TIME-PERIODS OCCURS 3 TIMES.
10 TYPE-CALLS OCCURS 2 TIMES.
15 RATE PIC 9V99 OCCURS 4 TIMES.
01
INPUT-RECORDS
05 ...
05 TIME-CODE
05 TYPE-CODE
05 PLACE-CODE
PIC 9.
PIC 9.
PIC 9.
Here we move the RATE subscripted
by the TIME-CODE which takes us to
the correct 05 level, and the TYPECODE that takes us to the correct 10
level under the 05, and the PLACECODE which takes us to the correct 15
level.
MOVE RATE (TIME-CODE, TYPE-CODE, PLACE-CODE) TO RATE-PR.