Codierbeispiel: Kommaseparierte Datei erstellen
Autor: Rainer Nehls

Mit Hilfe des Folgenden Codings wird eine Kommaseparierte Datei erstellt.
Zur Aufbereitung eines Datensatzes daraus siehe Codierbeispiel Satz aufbereiten

   IDENTIFICATION DIVISION.
   PROGRAM-ID.                 PV30.
   AUTHOR.                     RAINER NEHLS.
   DATE-WRITTEN.               20.02.94.

  ******************************************************************
  *
  *       KURZBESCHREIBUNG:    DAS PROGRAMM ERSTELLT EINE KOMMA-
  *                            SEPARIERTE DATEI.
  *
  *       INPUT:               FM30-DATEI  EINGABEDATEI
  *
  *       OUTPUT:              FV30-DATEI  KOMMASEPARIERTE DATEI
  *
  ******************************************************************
  *
  *       AENDERUNGEN:         VERSION 002 / 00.00.00 / NEHLS
  *                            XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  *
  ******************************************************************

   ENVIRONMENT DIVISION.
   SPECIAL-NAMES.
       DECIMAL-POINT IS COMMA.

   INPUT-OUTPUT SECTION.
   FILE-CONTROL.

       SELECT FM30-DATEI       ASSIGN TO Z-FM30
                               LOCK AUTOMATIC
                               FILE STATUS Z-STATUS.
       SELECT FV30-DATEI
                               ASSIGN TO Z-FV30
                               FILE STATUS Z-STATUS
                               LOCK AUTOMATIC
                               ORGANIZATION LINE SEQUENTIAL.

   DATA DIVISION.
   FILE SECTION.

   FD  FM30-DATEI.

   01  M30-RECRD.
       05  M30-KDNR            PIC 9(06).
       05  M30-NAME            PIC X(30).
       05  M30-UMSATZ          PIC S9(7)V99 COMP-3.

   FD  FV30-DATEI.

   01  V30-RECRD.
       05  FILLER              PIC X(50).

   WORKING-STORAGE SECTION.

   01  WS-FELDER.

       05  Z-FELDER.
           10  Z-PGRNM         PIC  X(05) VALUE "PV30".
           10  Z-VERS          PIC S9(03) COMP-3 VALUE 001.

           10  Z-FM30.
               15  Z-FILLER    PIC  X(08) VALUE "FM30.DAT".
           10  Z-FV30.
               15  Z-FILLER    PIC  X(12) VALUE "FV30.TXT".

   01  SW-FELDER.
       05  SW-ERROR            PIC  X(01) VALUE SPACE.

   01  U039-DATEN.
       05  U039-SWNEU          PIC  X(01) VALUE "J".
       05  U039-ANZST          PIC  9(01) COMP-X VALUE 15.
       05  U039-EIN-N          PIC -Z(10)9(1),9999 BLANK ZERO.
       05  U039-EIN-T          PIC  X(256).
       05  U039-EIN-1          REDEFINES
           U039-EIN-T          PIC  9(01).
       05  U039-EIN-2          REDEFINES
           U039-EIN-T          PIC  9(02).
       05  U039-EIN-3          REDEFINES
           U039-EIN-T          PIC  9(03).
       05  U039-EIN-4          REDEFINES
           U039-EIN-T          PIC  9(04).
       05  U039-EIN-5          REDEFINES
           U039-EIN-T          PIC  9(05).
       05  U039-EIN-6          REDEFINES
           U039-EIN-T          PIC  9(06).
       05  U039-EIN-7          REDEFINES
           U039-EIN-T          PIC  9(07).
       05  U039-EIN-8          REDEFINES
           U039-EIN-T          PIC  9(08).
       05  U039-EIN-9          REDEFINES
           U039-EIN-T          PIC  9(09).
       05  U039-AUS            PIC  X(4096).

   PROCEDURE DIVISION.

  *    A-00  :  HAUPTSTEUERLEISTE

   A-00 SECTION.
   A-10.
       PERFORM B-00.
       
       IF SW-ERROR     NOT   = "J"   PERFORM C-00.
   A-50.
       PERFORM Z-00.
   A-99.
       STOP RUN.

  *    B-00  :  VORLAUF

   B-00 SECTION.
   B-10.
       OPEN INPUT              FM30-DATEI.
       IF Z-STATUS           = ZERO          GO TO B-22.
   B-21.
       MOVE "J"                TO SW-ERROR.
       GO TO B-99.
   B-22.
       OPEN OUTPUT             FV30-DATEI.
       IF Z-STATUS           = ZERO          GO TO B-50.
       GO TO B-21.
   B-50.
  *                                          KOPFZEILE SCHREIBEN
       MOVE "J"                TO U039-SWNEU.
       MOVE "Kundennr."        TO U039-EIN-T.
       CALL "U039" USING       U039-DATEN.
       MOVE "Name"             TO U039-EIN-T.
       CALL "U039" USING       U039-DATEN.
       MOVE "Umsatz"           TO U039-EIN-T.
       CALL "U039" USING       U039-DATEN.
       PERFORM D-00.
   B-99.
       EXIT.

  *    C-00  :  AUSGABE

   C-00 SECTION.
   C-10.
       READ FM30-DATEI         AT END        GO TO C-99.
       MOVE "J"                TO U039-SWNEU.
       MOVE M30-KDNR           TO U039-EIN-6.
       CALL "U039" USING       U039-DATEN.
       MOVE M30-NAME           TO U039-EIN-T.
       CALL "U039" USING       U039-DATEN.
       MOVE M30-UMSATZ         TO U039-EIN-N.
       CALL "U039" USING       U039-DATEN.
       PERFORM D-00.
       GO TO C-10.
   C-99.
       EXIT.

  *    D-00  :  AUSGABESATZ SCHREIBEN

   D-00 SECTION.
   D-10.
       MOVE U039-AUS           TO V30-RECRD.
       WRITE V30-RECRD         BEFORE 1.
   D-99.
       EXIT.

  *    Z-00  :  ABSCHLUSSVERARBEITUNG

   Z-00 SECTION.
   Z-10.
       CLOSE FM30-DATEI
             FV30-DATEI.
   Z-99.
       EXIT.


...