Data Division.
File Section.
FD INPUT-FILE.
*>
*> Tran Code Type of Tran
*>
*> 1 New Stock
*> 2 Sale or Return
*> 3 Delete Stock
*> 5 Receive Stock
*> 6 Transfer Stock
*>
01 IT-RECORD.
05 IT-TRANSACTION-CODE Pic X(01).
88 NEW-STOCK-TRANSACTION Value '1'.
88 SALES-TRANSACTION Value '2'.
88 DELETE-TRANSACTION Value '3'.
88 RECEIVE-TRANSACTION Value '5'.
88 TRANSFER-TRANSACTION Value '6'.
05 IT-DATE Pic 9(06).
05 redefines IT-DATE.
10 SALES-YEAR Pic 9(02).
10 SALES-MONTH Pic 9(02).
10 SALES-DAY Pic 9(02).
05 IT-MASTER-KEY.
10 IT-STORE-NBR Pic 9(02).
10 IT-SKU Pic X(02) Comp-X.
10 IT-WIDTH-CODE Pic 9(02).
05 IT-BASIC-DATA.
10 IT-DEPT Pic X(02).
10 IT-COLOR-CODE Pic X(02).
10 IT-CLASS-CODE Pic X(02).
10 IT-SIZE-RUN-CODE Pic X(02).
10 IT-BRAND-CODE Pic X(02).
10 IT-COST Pic S9(5)v99 Comp-3.
10 IT-RETAIL Pic S9(7)v99 Comp-3.
10 IT-MARKDOWNS-WTD Pic S9(5)v99 Comp-3.
10 IT-MARKDOWNS-MTD Pic S9(7)v99 Comp-3.
10 IT-MARKDOWNS-YTD Pic S9(7)v99 Comp-3.
10 IT-STYLE Pic X(10).
10 IT-REORDER-FLAG Pic X(01).
10 IT-DESCRIPTION Pic X(20).
10 IT-AISLE-BIN.
15 IT-AISLE Pic 9(03).
15 IT-BIN Pic 9(05).
10 Pic X(06).
05 IT-BUCKETS.
10 IT-MODEL-SIZE-RUN.
15 IT-MODEL Pic 9(04) Comp occurs 20.
10 IT-AGE-BUCKETS.
15 IT-AGE Pic 9(04) Comp occurs 20.
10 IT-STOCK-BUCKETS.
15 IT-SOH Pic S9(4) Comp occurs 20.
10 IT-WEEK-BUCKETS.
15 IT-WTD-SALES Pic S9(4) Comp occurs 20.
10 IT-MONTH-BUCKETS.
15 IT-MTD-SALES Pic S9(4) Comp occurs 20.
10 IT-YEAR-BUCKETS.
15 IT-YTD-SALES Pic S9(4) Comp occurs 20.
10 IT-LY-BUCKETS.
15 IT-LY-SALES Pic S9(4) Comp occurs 20.
05 redefines IT-BUCKETS.
10 IT-CASHIER Pic X(04).
10 IT-SALES-UNITS Pic S9(4) Comp.
10 IT-UNITS-OVERSOLD Pic 9(04) Comp.
10 IT-SALES-RETAIL Pic S9(7)v99 Comp-3.
10 IT-SIZE-X.
15 IT-SIZE Pic 9(02)v9.
10 IT-SALES-TIME.
15 IT-SALES-HOUR Pic X(02).
15 IT-SALES-MINUTE Pic X(02).
10 IT-SALES-PERSON Pic X(05).
05 redefines IT-BUCKETS.
10 IT-TRANS-BUCKETS.
15 IT-TRANS-QTY Pic S9(4) Comp occurs 20.
10 IT-TO-STORE-NBR Pic 9(02).
10 IT-TO-STORE-COST Pic S9(5)v99 Comp-3.
10 IT-TO-STORE-RETAIL Pic S9(7)v99 Comp-3.
05 IT-CASE-PACKS.
10 IT-CASE-PACK Pic X(02) occurs 10.
FD OUTPUT-FILE.
01 OUTPUT-RECORD Pic X(999).
Working-Storage Section.
01 WS-WORD Pic X(20) Value Space.
01 redefines WS-WORD.
05 WW-DATE Pic 99/99/99.
01 redefines WS-WORD.
05 WW-HOUR Pic X(02).
05 WW-COLON Pic X(01).
05 WW-MINUTE Pic X(02).
01 redefines WS-WORD.
05 WW-STORE Pic X(02).
01 redefines WS-WORD.
05 WW-SKU Pic 9(05).
01 redefines WS-WORD.
05 WW-AMT Pic ZZZZ9.99.
01 redefines WS-WORD.
05 WW-QTY Pic ------9.
01 TR-CODE-TABLE.
05 Pic X(15) Value '1New Stock '.
05 Pic X(15) Value '2Sale or Return'.
05 Pic X(15) Value '3Delete Stock '.
05 Pic X(15) Value '5Receive Stock '.
05 Pic X(15) Value '6Transfer Stock'.
01 redefines TR-CODE-TABLE.
78 TC-OCC Value Length of TR-CODE-TABLE / 15.
05 TC-DATA occurs TC-OCC times Indexed by TCX.
10 TC-CODE Pic X(01).
10 TC-NAME Pic X(14).
78 LINE-0 Value 'JackRabbit Inventory Control'.
78 LINE-1 Value 'Inventory Transaction List'.
78 LINE-2 Value ',"Date","Time","Store","SKU","Width",'
& '"Brand","Style","Color","Department","Class",'
& '"Size Run Code","Reorder?","Description",'
& '"YTD Markdowns","Cost","Retail","Qty","Clerk",'
& '"Oversold","Price","Size"'.
01.
05 WS-UNITS Pic S9(6) Comp.
05 RX Pic 9(02) Comp-5.
05 X1 Pic 9(02) Comp-5.
05 X2 Pic 9(02) Comp-5.
05 X3 Pic 9(02) Comp-5.
05 INPUT-CNT Pic 9(07) Value Zero.
05 OUTPUT-CNT Pic 9(07) Value Zero.
Procedure Division.
000-BEGIN.
Open Input INPUT-FILE
Open Output OUTPUT-FILE
Write OUTPUT-RECORD from LINE-0
Write OUTPUT-RECORD from LINE-1
Write OUTPUT-RECORD from LINE-2
Perform Until Exit
Read INPUT-FILE
At End
Exit Perform
End-Read
Perform 100-FORMAT-DETAIL
Write OUTPUT-RECORD
Display OUTPUT-CNT at 0201
End-Perform
Close INPUT-FILE
Close OUTPUT-FILE
Stop Run
.
100-FORMAT-DETAIL.
Move Space to OUTPUT-RECORD
Move Zero to RX
Set TCX to 1
Search TC-DATA
at End
Move IT-TRANSACTION-CODE to WS-WORD
Move '--unknown' to WS-WORD(3:9)
When TC-CODE(TCX) = IT-TRANSACTION-CODE
Move TC-NAME(TCX) to WS-WORD
End-Search
Perform A00-MOVE-ALPHA
Move IT-DATE to WW-DATE
Perform A00-MOVE-ALPHA
If IT-TRANSACTION-CODE = '2'
Move IT-SALES-HOUR to WW-HOUR
Move ':' to WW-COLON
Move IT-SALES-MINUTE to WW-MINUTE
End-If
Perform A00-MOVE-ALPHA
Perform 110-BASIC-DATA
Evaluate IT-TRANSACTION-CODE
When '2'
Perform 120-SALES
When '5'
Perform 130-RECEIPTS
When '6'
Perform 140-TRANSFERS
End-Evaluate
.
110-BASIC-DATA.
Move IT-STORE-NBR to WW-STORE
Perform N00-MOVE-NUMERIC
Move IT-SKU to WW-SKU
Perform N00-MOVE-NUMERIC
Move IT-WIDTH-CODE to WW-STORE
Perform N00-MOVE-NUMERIC
Move IT-BRAND-CODE to WS-WORD
Perform A00-MOVE-ALPHA
Move IT-STYLE to WS-WORD
Perform A00-MOVE-ALPHA
Move IT-COLOR-CODE to WS-WORD
Perform A00-MOVE-ALPHA
Move IT-DEPT to WS-WORD
Perform A00-MOVE-ALPHA
Move IT-CLASS-CODE to WS-WORD
Perform A00-MOVE-ALPHA
Move IT-SIZE-RUN-CODE to WS-WORD
Perform A00-MOVE-ALPHA
Move 'N' to WS-WORD
If IT-REORDER-FLAG = '*'
Move 'Y' to WS-WORD
End-If
Perform A00-MOVE-ALPHA
Move IT-DESCRIPTION to WS-WORD
Perform A00-MOVE-ALPHA
Move IT-MARKDOWNS-YTD to WW-AMT
Perform N00-MOVE-NUMERIC
Move IT-COST to WW-AMT
Perform N00-MOVE-NUMERIC
Move IT-RETAIL to WW-AMT
Perform N00-MOVE-NUMERIC
.
122-SALES.
Move IT-SALES-UNITS to WW-QTY
Perform N00-MOVE-NUMERIC
Move IT-CASHIER to WS-WORD
Perform N00-MOVE-NUMERIC
Move IT-UNITS-OVERSOLD to WW-QTY
Perform N00-MOVE-NUMERIC
Move IT-SALES-RETAIL to WW-AMT
Perform N00-MOVE-NUMERIC
Move IT-SIZE-X to WS-WORD
Perform A00-MOVE-ALPHA
.
123-RECEIPTS.
Move Zero to WS-UNITS
Perform Varying X1 from 1 by 1 Until X1 > 20
Add IT-SOH(X1) to WS-UNITS
End-Perform
Move WS-UNITS to WW-QTY
Perform N00-MOVE-NUMERIC
.
124-TRANSFERS.
Move Zero to WS-UNITS
Perform Varying X1 from 1 by 1 Until X1 > 20
Add IT-TRANS-QTY(X1) to WS-UNITS
End-Perform
Move WS-UNITS to WW-QTY
Perform N00-MOVE-NUMERIC
Move 'To Store:' to WS-WORD
Move IT-TO-STORE-NBR to WS-WORD(11:2)
Perform A00-MOVE-ALPHA
Move 'Cost:' to WS-WORD
Perform A00-MOVE-ALPHA
Move IT-TO-STORE-COST to WW-AMT
Perform N00-MOVE-NUMERIC
Move 'Retail:' to WS-WORD
Perform A00-MOVE-ALPHA
Move IT-TO-STORE-RETAIL to WW-AMT
Perform N00-MOVE-NUMERIC
.
A00-MOVE-ALPHA.
If RX > Zero
Move ',' to OUTPUT-RECORD(RX:1)
End-If
Add 1 to RX
Move '"' to OUTPUT-RECORD(RX:1)
Add 1 to RX
If WS-WORD not = Space
Move Zero to X2
Inspect WS-WORD Tallying X2 for Leading Spaces
Perform Varying X3 from Length of WS-WORD by -1
Until WS-WORD(X3:1) not = Space
Continue
End-Perform
Subtract X2 from X3
Add 1 to X2
Move WS-WORD(X2:X3) to OUTPUT-RECORD(RX:X3)
Add X3 to RX
Move Space to WS-WORD
End-If
Move '"' to OUTPUT-RECORD(RX:1)
Add 1 to RX
.
N00-MOVE-NUMERIC.
If RX > Zero
Move ',' to OUTPUT-RECORD(RX:1)
End-If
Add 1 to RX
If WS-WORD = Space
Exit Paragraph
End-If
Move Zero to X2
Inspect WS-WORD Tallying X2 for Leading Spaces
Perform Varying X3 from Length of WS-WORD by -1
Until WS-WORD(X3:1) not = Space
Continue
End-Perform
Subtract X2 from X3
Add 1 to X2
Move WS-WORD(X2:X3) to OUTPUT-RECORD(RX:X3)
Add X3 to RX
Move Space to WS-WORD
.