CSV data manipulation: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) m (→{{header|11l}}) |
No edit summary |
||
Line 898: | Line 898: | ||
(ds/write! (add-sum (ds/->dataset "resources/input.csv")) "resources/output.csv") |
(ds/write! (add-sum (ds/->dataset "resources/input.csv")) "resources/output.csv") |
||
</lang> |
</lang> |
||
=={{header|COBOL}}== |
|||
<lang COBOL> |
|||
IDENTIFICATION DIVISION. |
|||
PROGRAM-ID. CSV. |
|||
AUTHOR. Bill Gunshannon. |
|||
INSTALLATION. Home. |
|||
DATE-WRITTEN. 19 December 2021. |
|||
************************************************************ |
|||
** Program Abstract: |
|||
** CSV's 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. |
|||
</lang> |
|||
=={{header|Common Lisp}}== |
=={{header|Common Lisp}}== |