Skip to content

Instantly share code, notes, and snippets.

@DougieLawson
Created April 6, 2020 21:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DougieLawson/3955823b3cca52d579faefef350dc6d3 to your computer and use it in GitHub Desktop.
Save DougieLawson/3955823b3cca52d579faefef350dc6d3 to your computer and use it in GitHub Desktop.
COBOL basics
000100 TITLE 'DOUGIE''S TEST COBOL PROGRAM'
000200 IDENTIFICATION DIVISION.
000300 PROGRAM-ID. DGL.
000400 ENVIRONMENT DIVISION.
000500 INPUT-OUTPUT SECTION.
000600 FILE-CONTROL.
000700 SELECT INPUT-FILE
000800 ASSIGN TO INFILE
000900 ORGANIZATION IS SEQUENTIAL.
001000 SELECT OUTPUT-FILE
001100 ASSIGN TO OUTFILE
001200 ORGANIZATION IS SEQUENTIAL.
001300 DATA DIVISION.
001400 FILE SECTION.
001500 FD INPUT-FILE
001600 BLOCK 0 RECORDS
001700* RECORD 80 CHARACTERS
001800 LABEL RECORDS OMITTED
001900 DATA RECORD IS INPUT-RECORD.
002000 01 INPUT-RECORD.
002100 05 IN-DATE PIC X(8).
002200 05 RECD-TYPE PIC X(1).
002300 88 H-RECORD VALUE 'H'.
002400 88 D-RECORD VALUE 'D'.
002500 88 T-RECORD VALUE 'T'.
002600 05 FILLER PIC X(1) .
002700 05 IN-TEXT PIC X(60).
002800 05 FILLER PIC X(10).
002900 FD OUTPUT-FILE
003000 BLOCK 0 RECORDS
003100 RECORD 80 CHARACTERS
003200 LABEL RECORDS OMITTED
003300 DATA RECORD IS OUTPUT-RECORD.
003400 01 OUTPUT-RECORD.
003500 05 RECORD-TYPE PIC X(8).
003600 88 HEADER-RECORD VALUE ' HEADER '.
003700 88 DATA-RECORD VALUE '* DATA *'.
003800 88 TRAILER-RECORD VALUE ' TRAILER'.
003900 05 FILLER PIC X(2) VALUE ' '.
004000 05 OUT-TEXT PIC X(60).
004100 05 FILLER PIC X(2) VALUE ' '.
004200 05 OUT-DATE PIC X(8).
004300 WORKING-STORAGE SECTION.
004400 01 INPUT-FILE-EOF PIC X(5).
004500 88 EOF-MET VALUE 'E-O-F'.
004600 PROCEDURE DIVISION.
004700 PROCEDURE-HEADER-000.
004800 OPEN INPUT INPUT-FILE
004900 OPEN OUTPUT OUTPUT-FILE
005000 PERFORM WITH TEST BEFORE UNTIL EOF-MET
005100 READ INPUT-FILE
005200 AT END
005300 SET EOF-MET TO TRUE
005400 END-READ
005500 IF NOT EOF-MET THEN
005600 MOVE IN-TEXT TO OUT-TEXT
005700 MOVE IN-DATE TO OUT-DATE
005800 IF D-RECORD THEN SET DATA-RECORD TO TRUE
005900 ELSE IF H-RECORD THEN SET HEADER-RECORD TO TRUE
006000 ELSE IF T-RECORD THEN SET TRAILER-RECORD TO TRUE
006100 END-IF
006200 END-IF
006300 END-IF
006400 WRITE OUTPUT-RECORD
006500 END-IF
006600 END-PERFORM
006700 CLOSE INPUT-FILE
006800 CLOSE OUTPUT-FILE
006900 STOP RUN.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment