94 lines
2.8 KiB
COBOL
94 lines
2.8 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. CSV.
|
|
AUTHOR. Bill Gunshannon.
|
|
INSTALLATION. Home.
|
|
DATE-WRITTEN. 19 December 2021.
|
|
************************************************************
|
|
** Program Abstract:
|
|
** CSVs are something COBOL does pretty well.
|
|
** The commented out CONCATENATE statements are a
|
|
** second method other than the STRING method.
|
|
************************************************************
|
|
|
|
ENVIRONMENT DIVISION.
|
|
CONFIGURATION SECTION.
|
|
REPOSITORY.
|
|
FUNCTION ALL INTRINSIC.
|
|
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT CSV-File ASSIGN TO "csv.txt"
|
|
ORGANIZATION IS LINE SEQUENTIAL.
|
|
SELECT Out-File ASSIGN TO "new.csv.txt"
|
|
ORGANIZATION IS LINE SEQUENTIAL.
|
|
|
|
|
|
DATA DIVISION.
|
|
|
|
FILE SECTION.
|
|
|
|
FD CSV-File
|
|
DATA RECORD IS CSV-Record.
|
|
01 CSV-Record.
|
|
05 Field1 PIC X(64).
|
|
|
|
FD Out-File
|
|
DATA RECORD IS Out-Line.
|
|
01 Out-Line PIC X(80).
|
|
|
|
WORKING-STORAGE SECTION.
|
|
|
|
01 Eof PIC X VALUE 'F'.
|
|
|
|
01 CSV-Data.
|
|
05 CSV-Col1 PIC 9(5).
|
|
05 CSV-Col2 PIC 9(5).
|
|
05 CSV-Col3 PIC 9(5).
|
|
05 CSV-Col4 PIC 9(5).
|
|
05 CSV-Col5 PIC 9(5).
|
|
|
|
01 CSV-Sum PIC ZZZ9.
|
|
01 CSV-Sum-Alpha
|
|
REDEFINES CSV-Sum PIC X(4).
|
|
|
|
PROCEDURE DIVISION.
|
|
|
|
Main-Program.
|
|
OPEN INPUT CSV-File
|
|
OPEN OUTPUT Out-File
|
|
PERFORM Read-a-Record
|
|
PERFORM Build-Header
|
|
PERFORM UNTIL Eof = 'T'
|
|
PERFORM Read-a-Record
|
|
IF Eof NOT EQUAL 'T' PERFORM Process-a-Record
|
|
END-PERFORM
|
|
CLOSE CSV-File
|
|
CLOSE Out-File
|
|
STOP RUN.
|
|
|
|
Read-a-Record.
|
|
READ CSV-File
|
|
AT END MOVE 'T' TO Eof
|
|
END-READ.
|
|
|
|
Build-Header.
|
|
** MOVE CONCATENATE(TRIM(CSV-Record), ",SUM"
|
|
** TO Out-Line.
|
|
STRING TRIM(CSV-Record), ",SUM" INTO Out-Line.
|
|
WRITE Out-Line.
|
|
MOVE SPACES TO Out-Line.
|
|
|
|
Process-a-Record.
|
|
UNSTRING CSV-Record DELIMITED BY ',' INTO
|
|
CSV-Col1 CSV-Col2 CSV-Col3 CSV-Col4 CSV-Col5.
|
|
COMPUTE CSV-Sum =
|
|
CSV-Col1 + CSV-Col2 + CSV-Col3 + CSV-Col4 + CSV-Col5.
|
|
** MOVE CONCATENATE(TRIM(CSV-Record), "," TRIM(CSV-Sum-Alpha))
|
|
** TO Out-Line.
|
|
STRING TRIM(CSV-Record), "," TRIM(CSV-Sum-Alpha)
|
|
INTO Out-Line.
|
|
WRITE Out-Line.
|
|
MOVE SPACES TO Out-Line.
|
|
|
|
END-PROGRAM.
|