Referenzierte Beispielprogramme

#### Search Results

Search

# Referenzierte Beispielprogramme

Dieses Dokument enthält einige zusätzliche Beispielprogramme, auf die im Leitfaden zur Programmierung verwiesen wird.

#### Anmerkung zu Beispiel-Libraries:

- Den Quellcode der Beispielprogramme finden Sie in der Natural-Library `SYSEXPG`. Die Beispielprogramme greifen auf die Daten der Dateien `EMPLOYEES` (Personaldaten) und `VEHICLES` (Fahrzeugdaten) zu, die von der Software AG speziell zu Demonstrationszwecken erstellt wurden. Die Natural-Library `SYSEXPG` enthält auch Beispielprogramme für Functions.

- Weitere Beispielprogramme für die Verwendung von Natural-Statements finden Sie in der Natural-Library `SYSEXSYN`. Diese Beispiele sind außerdem im Abschnitt Referenzierte Beispielprogramme in der Statements-Dokumentation enthalten.

- Wenden Sie sich wegen der Verfügbarkeit dieser Bibliotheken in Ihrer Umgebung an Ihren Natural-Administrator.

- Damit die Natural-Beispielprogramme auf eine Adabas-Datenbank zugreifen können, muss der Adabas-Nucleus-Parameter `OPTIONS` auf `TRUNCATION` gesetzt sein.

- READ-Statement

- FIND-Statement

- Geschachtelte READ- und FIND-Statements

- ACCEPT- und REJECT-Statements

- AT START OF DATA- und AT END OF DATA-Statements

- DISPLAY- und WRITE-Statements

- DISPLAY-Statement

- Spaltenüberschriften

- Feldausgabe-relevante Parameter

- Editiermasken

- DISPLAY VERT mit WRITE-Statement

- AT BREAK-Statement

- Statements COMPUTE, MOVE und COMPRESS

- Systemvariablen

- Systemfunktionen

## READ-Statement

Auf das folgende Beispiel wird im Abschnitt Datenbankzugriffe verwiesen.

#### READX03 - READ-Statement (mit LOGICAL-Klausel)

    ** Example 'READX03': READ (with LOGICAL clause)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 PERSONNEL-ID
      2 JOB-TITLE
    END-DEFINE
    *
    LIMIT 8
    READ EMPLOY-VIEW LOGICAL BY PERSONNEL-ID
      DISPLAY NOTITLE  *ISN      NAME
                      'PERS-NO'  PERSONNEL-ID
                      'POSITION' JOB-TITLE
    END-READ
    END

Ausgabe des Programms `READX03`:

       ISN              NAME         PERS-NO          POSITION
    ----------- -------------------- -------- -------------------------

            204 SCHINDLER            11100102 PROGRAMMIERER
            205 SCHIRM               11100105 SYSTEMPROGRAMMIERER
            206 SCHMITT              11100106 OPERATOR
            207 SCHMIDT              11100107 SEKRETAERIN
            208 SCHNEIDER            11100108 SACHBEARBEITER
            209 SCHNEIDER            11100109 SEKRETAERIN
            210 BUNGERT              11100110 SYSTEMPROGRAMMIERER
            211 THIELE               11100111 SEKRETAERIN

## FIND-Statement

Auf die folgenden Beispiele wird im Abschnitt Datenbankzugriffe verwiesen.

#### FINDX07 - FIND-Statement (mit mehreren Klauseln)

    ** Example 'FINDX07': FIND  (with several clauses)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
      2 CITY
      2 SALARY    (1)
      2 CURR-CODE (1)
    END-DEFINE
    *
    FIND EMPLOY-VIEW WITH  PHONETIC-NAME = 'JONES' OR = 'BECKR'
                     AND   CITY          = 'BOSTON' THRU 'NEW YORK'
                     BUT NOT               'CHAPEL HILL'
                     SORTED BY NAME
                     WHERE SALARY (1)    < 28000
      DISPLAY NOTITLE NAME FIRST-NAME CITY SALARY (1)
    END-FIND
    END

Ausgabe des Programms `FINDX07`:

            NAME              FIRST-NAME              CITY           ANNUAL
                                                                     SALARY
    -------------------- -------------------- -------------------- ----------

    BAKER                PAULINE              DERBY                      4450
    JONES                MARTHA               KALAMAZOO                 21000
    JONES                KEVIN                DERBY                      7000

#### FINDX08 - FIND-Statement (mit LIMIT)

    ** Example 'FINDX08': FIND (with LIMIT)
    **                    Demonstrates FIND statement with LIMIT option to
    **                    terminate program with an error message if the
    **                    number of records selected exceeds a specified
    **                    limit (no output).
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 JOB-TITLE
    END-DEFINE
    *
    FIND EMPLOY-VIEW WITH LIMIT (5) JOB-TITLE = 'SALES PERSON'
      DISPLAY NAME JOB-TITLE
    END-FIND
    END

Von Programm `FINDX08` verursachter Laufzeitfehler:

`NAT1005 More records found than specified in search limit.`

#### FINDX09 - FIND-Statement (unter Verwendung von *NUMBER, *COUNTER, *ISN)

    ** Example 'FINDX09': FIND (using *NUMBER, *COUNTER, *ISN)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 DEPT
      2 NAME
    END-DEFINE
    *
    FIND EMPLOY-VIEW WITH CITY  = 'BOSTON'
                     WHERE DEPT = 'TECH00' THRU 'TECH10'
      DISPLAY NOTITLE
              'COUNTER' *COUNTER NAME DEPT 'ISN' *ISN
      AT START OF DATA
        WRITE '(TOTAL NUMBER IN BOSTON:' *NUMBER ')' /
      END-START
    END-FIND
    END

Ausgabe des Programms `FINDX09`:

      COUNTER           NAME         DEPARTMENT     ISN
                                        CODE
    ----------- -------------------- ---------- -----------

    (TOTAL NUMBER IN BOSTON:           7 )

              1 STANWOOD             TECH10             782
              2 PERREAULT            TECH10             842

#### FINDX10 − FIND-Statement (in Kombination mit READ)

    ** Example 'FINDX10': FIND (combined with READ)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 FIRST-NAME
    1 VEHIC-VIEW VIEW OF VEHICLES
      2 PERSONNEL-ID
      2 MAKE
    END-DEFINE
    *
    LIMIT 15
    *
    EMP. READ EMPLOY-VIEW BY NAME STARTING FROM 'JONES'
      VEH. FIND VEHIC-VIEW WITH PERSONNEL-ID = PERSONNEL-ID (EMP.)
        IF NO RECORDS FOUND
          MOVE '*** NO CAR ***' TO MAKE
        END-NOREC
        DISPLAY NOTITLE
                NAME (EMP.) (IS=ON)
                FIRST-NAME (EMP.) (IS=ON)
                MAKE (VEH.)
      END-FIND
    END-READ
    END

Ausgabe des Programms `FINDX10`:

            NAME              FIRST-NAME              MAKE
    -------------------- -------------------- --------------------

    JONES                VIRGINIA             CHRYSLER
                         MARSHA               CHRYSLER
                                              CHRYSLER
                         ROBERT               GENERAL MOTORS
                         LILLY                FORD
                                              MG
                         EDWARD               GENERAL MOTORS
                         MARTHA               GENERAL MOTORS
                         LAUREL               GENERAL MOTORS
                         KEVIN                DATSUN
                         GREGORY              FORD
    JOPER                MANFRED              *** NO CAR ***
    JOUSSELIN            DANIEL               RENAULT
    JUBE                 GABRIEL              *** NO CAR ***
    JUNG                 ERNST                *** NO CAR ***
    JUNKIN               JEREMY               *** NO CAR ***
    KAISER               REINER               *** NO CAR ***

#### FINDX11 - FIND NUMBER-Statement (mit *NUMBER)

    ** Example 'FINDX11': FIND NUMBER (with *NUMBER)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 FIRST-NAME
      2 NAME
      2 CITY
      2 JOB-TITLE
      2 SALARY        (1)
    *
    1 #PERCENT        (N.2)
    1 REDEFINE #PERCENT
      2 #WHOLE-NBR    (N2)
    1 #ALL-BOST       (N3.2)
    1 #SECR-ONLY      (N3.2)
    1 #BOST-NBR       (N3)
    1 #SECR-NBR       (N3)
    END-DEFINE
    *
    F1. FIND NUMBER EMPLOY-VIEW WITH CITY = 'BOSTON'
    F2. FIND NUMBER EMPLOY-VIEW WITH CITY = 'BOSTON'
                                AND JOB-TITLE = 'SECRETARY'
    *
    MOVE *NUMBER(F1.) TO #ALL-BOST  #BOST-NBR
    MOVE *NUMBER(F2.) TO #SECR-ONLY #SECR-NBR
    DIVIDE #ALL-BOST INTO #SECR-ONLY GIVING #PERCENT
    *
    WRITE TITLE LEFT JUSTIFIED UNDERLINED
      'There are' #BOST-NBR 'employees in the Boston offices.' /
      #SECR-NBR '(=' #WHOLE-NBR (EM=99%')') 'are secretaries.'
    *
    SKIP 1
    FIND EMPLOY-VIEW WITH CITY      = 'BOSTON'
                     AND  JOB-TITLE = 'SECRETARY'
      DISPLAY NAME FIRST-NAME JOB-TITLE SALARY (1)
    END-FIND
    END

Ausgabe des Programms `FINDX11`:

    There are    7 employees in the Boston offices.
       3 (= 42%) are secretaries.
    -------------------------------------------------------------------------------

            NAME              FIRST-NAME               CURRENT            ANNUAL
                                                      POSITION            SALARY
    -------------------- -------------------- ------------------------- ----------

    SHAW                 LESLIE               SECRETARY                      18000
    CREMER               WALT                 SECRETARY                      20000
    COHEN                JOHN                 SECRETARY                      16000

## Geschachtelte READ- und FIND-Statements

Auf die folgenden Beispiele wird im Abschnitt Datenbank-Verarbeitungsschleifen verwiesen.

#### READX04 − READ-Statement (in Kombination mit FIND und den Systemvariablen *NUMBER und *COUNTER)

    ** Example 'READX04': READ (in combination with FIND and the system
    **                    variables *NUMBER and *COUNTER)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 FIRST-NAME
    1 VEHIC-VIEW VIEW OF VEHICLES
      2 PERSONNEL-ID
      2 MAKE
    END-DEFINE
    *
    LIMIT 10
    RD. READ EMPLOY-VIEW BY NAME STARTING FROM 'JONES'
      FD. FIND VEHIC-VIEW WITH PERSONNEL-ID = PERSONNEL-ID (RD.)
        IF NO RECORDS FOUND
          ENTER
        END-NOREC
        /*
        DISPLAY NOTITLE
                *COUNTER (RD.)(NL=8) NAME         (AL=15) FIRST-NAME (AL=10)
                *NUMBER  (FD.)(NL=8) *COUNTER (FD.)(NL=8) MAKE
      END-FIND
    END-READ
    END

Ausgabe des Programms `READX04`:

      CNT          NAME       FIRST-NAME   NMBR      CNT             MAKE
    --------- --------------- ---------- --------- --------- --------------------

            1 JONES           VIRGINIA           1         1 CHRYSLER
            2 JONES           MARSHA             2         1 CHRYSLER
            2 JONES           MARSHA             2         2 CHRYSLER
            3 JONES           ROBERT             1         1 GENERAL MOTORS
            4 JONES           LILLY              2         1 FORD
            4 JONES           LILLY              2         2 MG
            5 JONES           EDWARD             1         1 GENERAL MOTORS
            6 JONES           MARTHA             1         1 GENERAL MOTORS
            7 JONES           LAUREL             1         1 GENERAL MOTORS
            8 JONES           KEVIN              1         1 DATSUN
            9 JONES           GREGORY            1         1 FORD
           10 JOPER           MANFRED            0         0

#### LIMITX01 - LIMIT-Statement (für READ- und FIND-Schleifenverarbeitung)

    ** Example 'LIMITX01': LIMIT  (for READ, FIND loop processing)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 FIRST-NAME
      2 NAME
    1 VEH-VIEW VIEW OF VEHICLES
      2 PERSONNEL-ID
      2 MAKE
    END-DEFINE
    *
    LIMIT 4
    *
    READ EMPLOY-VIEW BY NAME STARTING FROM 'A'
      FIND VEH-VIEW WITH PERSONNEL-ID = EMPLOY-VIEW.PERSONNEL-ID
        IF NO RECORDS FOUND
          MOVE 'NO CAR' TO MAKE
        END-NOREC
        DISPLAY PERSONNEL-ID NAME FIRST-NAME MAKE
      END-FIND
    END-READ
    END

Ausgabe des Programms `LIMITX01`:

    Page      1                                                  04-12-13  14:01:57

    PERSONNEL-ID         NAME              FIRST-NAME              MAKE
    ------------ -------------------- -------------------- --------------------

                 ABELLAN              KEPA                 NO CAR
    30000231     ACHIESON             ROBERT               FORD
                 ADAM                 SIMONE               NO CAR
    20008800     ADKINSON             JEFF                 GENERAL MOTORS

## ACCEPT- und REJECT-Statements

Auf die folgenden Beispiele wird im Abschnitt Datensätze mit ACCEPT / REJECT auswählen verwiesen.

#### ACCEPX04 - ACCEPT IF ... LESS THAN ...-Statement

    ** Example 'ACCEPX04': ACCEPT IF ... LES THAN ...
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 JOB-TITLE
      2 SALARY (1)
    END-DEFINE
    *
    LIMIT 20
    READ EMPLOY-VIEW BY PERSONNEL-ID = '20017000'
      ACCEPT IF SALARY (1) LESS THAN 38000
      DISPLAY NOTITLE PERSONNEL-ID NAME JOB-TITLE SALARY (1)
    END-READ
    END

Ausgabe des Programms `ACCEPX04`:

    PERSONNEL         NAME                  CURRENT            ANNUAL
       ID                                  POSITION            SALARY
    --------- -------------------- ------------------------- ----------

    20017000  CREMER               ANALYST                        34000
    20017100  MARKUSH              TRAINEE                        22000
    20017400  NEEDHAM              PROGRAMMER                     32500
    20017500  JACKSON              PROGRAMMER                     33000
    20017600  PIETSCH              SECRETARY                      22000
    20017700  PAUL                 SECRETARY                      23000
    20018000  FARRIS               PROGRAMMER                     30500
    20018100  EVANS                PROGRAMMER                     31000
    20018200  HERZOG               PROGRAMMER                     31500
    20018300  LORIE                SALES PERSON                   28000
    20018400  HALL                 SALES PERSON                   30000
    20018500  JACKSON              MANAGER                        36000
    20018800  SMITH                SECRETARY                      24000
    20018900  LOWRY                SECRETARY                      25000

#### ACCEPX05 − ACCEPT IF ... AND ...-Statement

    ** Example 'ACCEPX05': ACCEPT IF ... AND ...
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 CITY
      2 JOB-TITLE
      2 SALARY (1:2)
    END-DEFINE
    *
    LIMIT 6
    READ EMPLOY-VIEW PHYSICAL WHERE SALARY(2) > 0
      ACCEPT IF  SALARY(1) > 10000
             AND SALARY(1) < 50000
      DISPLAY (AL=15) 'SALARY I' SALARY (1) 'SALARY II'  SALARY (2)
                       NAME JOB-TITLE  CITY
    END-READ
    END

Ausgabe des Programms `ACCEPX05`:

    Page      1                                                  04-12-13  14:05:28

     SALARY I  SALARY II       NAME           CURRENT          CITY
                                             POSITION
    ---------- ---------- --------------- --------------- ---------------

         48000      46000 SPENGLER        SACHBEARBEITER  DARMSTADT
         45000      40000 SPECK           SACHBEARBEITER  DARMSTADT
         48000      46000 SCHINDLER       PROGRAMMIERER   HEPPENHEIM
         36000      32000 SCHMIDT         SEKRETAERIN     HEPPENHEIM

#### ACCEPX06 − REJECT IF ... OR ...-Statement

    ** Example 'ACCEPX06': REJECT IF ... OR ...
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 SALARY (1)
      2 JOB-TITLE
      2 CITY
      2 NAME
    END-DEFINE
    *
    LIMIT 20
    READ EMPLOY-VIEW LOGICAL BY PERSONNEL-ID = '20017000'
      REJECT IF SALARY (1) < 20000
             OR SALARY (1) > 26000
      DISPLAY NOTITLE SALARY (1) NAME JOB-TITLE CITY
    END-READ
    END

Ausgabe des Programms `ACCEPX06`:

      ANNUAL           NAME                  CURRENT                  CITY
      SALARY                                POSITION
    ---------- -------------------- ------------------------- --------------------

         22000 MARKUSH              TRAINEE                   LOS ANGELES
         22000 PIETSCH              SECRETARY                 VISTA
         23000 PAUL                 SECRETARY                 NORFOLK
         24000 SMITH                SECRETARY                 SILVER SPRING
         25000 LOWRY                SECRETARY                 LEXINGTON

## AT START OF DATA- und AT END OF DATA-Statements

Auf die folgenden Beispiele wird im Abschnitt AT START/END OF DATA-Statements verwiesen.

#### ATENDX01 − AT END OF DATA-Statement

    ** Example 'ATENDX01': AT END OF DATA
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 JOB-TITLE
    END-DEFINE
    *
    READ (6) EMPLOY-VIEW BY PERSONNEL-ID FROM '20017000'
      DISPLAY NOTITLE NAME JOB-TITLE
      AT END OF DATA
        WRITE / 'LAST PERSON SELECTED:' OLD(NAME)
      END-ENDDATA
    END-READ
    END

Ausgabe des Programms `ATENDX01`:

            NAME                  CURRENT
                                 POSITION
    -------------------- -------------------------

    CREMER               ANALYST
    MARKUSH              TRAINEE
    GEE                  MANAGER
    KUNEY                DBA
    NEEDHAM              PROGRAMMER
    JACKSON              PROGRAMMER

    LAST PERSON SELECTED: JACKSON

#### ATSTAX02 − AT START OF DATA-Statement

    ** Example 'ATSTAX02': AT START OF DATA
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 FIRST-NAME
      2 NAME
      2 SALARY    (1)
      2 CURR-CODE (1)
      2 BONUS     (1,1)
    END-DEFINE
    *
    LIMIT 3
    FIND EMPLOY-VIEW WITH CITY = 'MADRID'
      DISPLAY NAME FIRST-NAME SALARY(1) BONUS(1,1) CURR-CODE (1)
      /*
      AT START OF DATA
        WRITE NOTITLE *DAT4E /
      END-START
    END-FIND
    END

Ausgabe des Programms `ATSTAX02`:

            NAME              FIRST-NAME        ANNUAL     BONUS    CURRENCY
                                                SALARY                CODE
    -------------------- -------------------- ---------- ---------- --------

    13/12/2004

    DE JUAN              JAVIER                  1988000          0 PTA
    DE LA MADRID         ANSELMO                 3120000          0 PTA
    PINERO               PAULA                   1756000          0 PTA

#### WRITEX09 − WRITE-Statement (in Kombination mit AT END OF DATA)

    ** Example 'WRITEX09': WRITE (in combination with AT END OF DATA )
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 NAME
      2 BIRTH
      2 JOB-TITLE
      2 DEPT
    END-DEFINE
    *
    READ (3) EMPLOY-VIEW BY CITY
      DISPLAY NOTITLE NAME BIRTH (EM=YYYY-MM-DD) JOB-TITLE
      WRITE 38T 'DEPT CODE:' DEPT
      /*
      AT END OF DATA
        WRITE / 'LAST PERSON SELECTED:' OLD(NAME)
      END-ENDDATA
      SKIP 1
    END-READ
    END

Ausgabe des Programms `WRITEX09`:

            NAME            DATE             CURRENT
                             OF             POSITION
                           BIRTH
    -------------------- ---------- -------------------------

    SENKO                1971-09-11 PROGRAMMER
                                         DEPT CODE: TECH10

    GODEFROY             1949-01-09 COMPTABLE
                                         DEPT CODE: COMP02

    CANALE               1942-01-01 CONSULTANT
                                         DEPT CODE: TECH03

    LAST PERSON SELECTED: CANALE

## DISPLAY- und WRITE-Statements

Auf die folgenden Beispiele wird im Abschnitt Statements DISPLAY und WRITE verwiesen.

#### DISPLX13 − DISPLAY-Statement (zum Vergleich mit WRITEX08 mit WRITE)

    ** Example 'DISPLX13': DISPLAY (compare with WRITEX08 using WRITE)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 FIRST-NAME
      2 NAME
      2 SALARY (2)
      2 BONUS  (1,1)
      2 CITY
    END-DEFINE
    *
    LIMIT 2
    READ EMPLOY-VIEW WITH CITY = 'CHAPEL HILL' WHERE BONUS(1,1) NE 0
      /*
      DISPLAY 'PERS/ID' PERSONNEL-ID  NAME / FIRST-NAME
              '**' '=' SALARY(1:2) 'BONUS' BONUS(1,1) CITY (AL=15)
      /*
      SKIP 1
    END-READ
    END

Ausgabe des Programms `DISPLX13`:

    Page      1                                                  04-12-13  14:11:28

      PERS           NAME            ANNUAL       BONUS         CITY
       ID         FIRST-NAME         SALARY
    -------- -------------------- ------------- ---------- ---------------

    20027000 CUMMINGS             **      41000       1500 CHAPEL HILL
             PUALA                        38900

    20000200 WOOLSEY              **      26000       3000 CHAPEL HILL
             LOUISE                       24700

#### WRITEX08 − WRITE-Statement (zum Vergleich mit DISPLX13 mit DISPLAY)

    ** Example 'WRITEX08': WRITE  (compare with DISPLX13 using DISPLAY)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 FIRST-NAME
      2 NAME
      2 SALARY (2)
      2 BONUS  (1,1)
      2 CITY
    END-DEFINE
    *
    LIMIT 2
    READ EMPLOY-VIEW WITH CITY = 'CHAPEL HILL' WHERE BONUS(1,1) NE 0
      /*
      WRITE 'PERS/ID' PERSONNEL-ID  NAME / FIRST-NAME
            '**' '=' SALARY(1:2) 'BONUS' BONUS(1,1) CITY (AL=15)
      /*
      SKIP 1
    END-READ
    END

Ausgabe des Programms `WRITEX08`:

    Page      1                                                  04-12-13  14:12:43

    PERS/ID 20027000 CUMMINGS
    PUALA                ** ANNUAL SALARY:      41000      38900 BONUS       1500
    CHAPEL HILL

    PERS/ID 20000200 WOOLSEY
    LOUISE               ** ANNUAL SALARY:      26000      24700 BONUS       3000
    CHAPEL HILL

#### DISPLX14 − DISPLAY-Statement (mit AL, SF und nX)

    ** Example 'DISPLX14': DISPLAY  (with AL, SF and nX)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 FIRST-NAME
      2 NAME
      2 ADDRESS-LINE (1)
      2 TELEPHONE
        3 AREA-CODE
        3 PHONE
      2 CITY
    END-DEFINE
    *
    READ (3) EMPLOY-VIEW BY NAME STARTING FROM 'W'
      DISPLAY (AL=15 SF=5) NAME CITY / ADDRESS-LINE(1) 2X TELEPHONE
      SKIP 1
    END-READ
    END

Ausgabe des Programms `DISPLX14`:

    Page      1                                                  04-12-13  14:14:00

         NAME                CITY                     TELEPHONE
                            ADDRESS
                                              AREA              TELEPHONE
                                              CODE
    ---------------     ---------------  ---------------     ---------------

    WABER               HEIDELBERG       06221               456452
                        ERBACHERSTR. 78

    WADSWORTH           DERBY            0332                515365
                        56 PINECROFT CO

    WAGENBACH           FRANKFURT        069                 983218
                        BECKERSTR. 4

#### WRITEX09 − WRITE-Statement (in Kombination mit AT END OF DATA)

    ** Example 'WRITEX09': WRITE (in combination with AT END OF DATA )
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 NAME
      2 BIRTH
      2 JOB-TITLE
      2 DEPT
    END-DEFINE
    *
    READ (3) EMPLOY-VIEW BY CITY
      DISPLAY NOTITLE NAME BIRTH (EM=YYYY-MM-DD) JOB-TITLE
      WRITE 38T 'DEPT CODE:' DEPT
      /*
      AT END OF DATA
        WRITE / 'LAST PERSON SELECTED:' OLD(NAME)
      END-ENDDATA
      SKIP 1
    END-READ
    END

Ausgabe des Programms `WRITEX09`:

            NAME            DATE             CURRENT
                             OF             POSITION
                           BIRTH
    -------------------- ---------- -------------------------

    SENKO                1971-09-11 PROGRAMMER
                                         DEPT CODE: TECH10

    GODEFROY             1949-01-09 COMPTABLE
                                         DEPT CODE: COMP02

    CANALE               1942-01-01 CONSULTANT
                                         DEPT CODE: TECH03

    LAST PERSON SELECTED: CANALE

## DISPLAY-Statement

Auf folgendes Beispiel wird im Abschnitt Seitenüberschriften, Seitenvorschübe und Leerzeilen verwiesen.

#### DISPLX21 − DISPLAY-Statement (mit Schrägstrich ’/’ und zum Vergleich mit WRITE)

    ** Example 'DISPLX21': DISPLAY (usage of slash '/' in DISPLAY and WRITE)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 NAME
      2 FIRST-NAME
      2 ADDRESS-LINE (1)
    END-DEFINE
    *
    WRITE TITLE LEFT JUSTIFIED UNDERLINED
           *TIME
       5X  'PEOPLE LIVING IN SALT LAKE CITY'
       21X 'PAGE:' *PAGE-NUMBER /
       15X 'AS OF' *DAT4E //
    *
    WRITE TRAILER UNDERLINED 'REGISTER OF' / 'SALT LAKE CITY'
    *
    READ (2) EMPLOY-VIEW WITH CITY = 'SALT LAKE CITY'
      DISPLAY  NAME /
               FIRST-NAME
               'HOME/CITY' CITY
               'STREET/OR BOX NO.' ADDRESS-LINE (1)
      SKIP 1
    END-READ
    END

Ausgabe des Programms `DISPLX21`:

    14:15:50.1     PEOPLE LIVING IN SALT LAKE CITY                     PAGE:      1
                   AS OF 13/12/2004

    -------------------------------------------------------------------------------
            NAME                 HOME                STREET
         FIRST-NAME              CITY              OR BOX NO.
    -------------------- -------------------- --------------------

    ANDERSON             SALT LAKE CITY       3701 S. GEORGE MASON
    JENNY

    SAMUELSON            SALT LAKE CITY       7610 W. 86TH STREET
    MARTIN

                                      REGISTER OF
                                    SALT LAKE CITY
    -------------------------------------------------------------------------------

## Spaltenüberschriften

Auf das folgende Beispiel wird im Abschnitt Spaltenüberschriften verwiesen.

#### DISPLX15 − DISPLAY-Statement (mit FC, UC)

    ** Example 'DISPLX15': DISPLAY  (with FC, UC)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 FIRST-NAME
      2 NAME
      2 ADDRESS-LINE (1)
      2 CITY
      2 TELEPHONE
        3 AREA-CODE
        3 PHONE
    END-DEFINE
    *
    FORMAT AL=12 GC== UC=%
    *
    READ (3) EMPLOY-VIEW BY NAME STARTING FROM 'R'
      DISPLAY NOTITLE (FC=*)
              NAME FIRST-NAME CITY  (FC=- UC=-) /
              ADDRESS-LINE(1) TELEPHONE
      SKIP 1
    END-READ
    END

Ausgabe des Programms `DISPLX15`:

    ****NAME**** *FIRST-NAME* ----CITY---- ========TELEPHONE========
                              **ADDRESS***
                                           ****AREA**** *TELEPHONE**
                                           ****CODE****
    %%%%%%%%%%%% %%%%%%%%%%%% ------------ %%%%%%%%%%%% %%%%%%%%%%%%

    RACKMANN     MARIAN       FRANKFURT    069          375849
                              FINKENSTR. 1

    RAMAMOORTHY  TY           SEPULVEDA    209          175-1885
                              12018 BROOKS

    RAMAMOORTHY  TIMMIE       SEATTLE      206          151-4673
                              921-178TH PL

#### DISPLX16 − DISPLAY-Statement (mit '/', 'text', 'text/text')

    ** Example 'DISPLX16': DISPLAY  (with '/', 'text', 'text/text')
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 FIRST-NAME
      2 NAME
      2 ADDRESS-LINE (1)
      2 CITY
      2 TELEPHONE
        3 AREA-CODE
        3 PHONE
    END-DEFINE
    *
    READ (5) EMPLOY-VIEW BY NAME STARTING FROM 'E'
      DISPLAY NOTITLE
        '/'          NAME       (AL=12) /* suppressed header
        'FIRST/NAME' FIRST-NAME (AL=10) /* two-line user-defined header
        'ADDRESS'    CITY /             /* user-defined header
        ' '          ADDRESS-LINE(1)    /* 'blank' header
                     TELEPHONE (HC=L)   /* default header
      SKIP 1
    END-READ
    END

Ausgabe des Programms `DISPLX16`:

                   FIRST          ADDRESS        TELEPHONE
                    NAME
                                                 AREA   TELEPHONE
                                                 CODE
                 ---------- -------------------- ------ ---------------

    EAVES        TREVOR     DERBY                0332   657623
                            17 HARTON ROAD

    ECKERT       KARL       OBERRAMSTADT         06154  99722
                            FORSTWEG 22

    ECKHARDT     RICHARD    DARMSTADT
                            BRESLAUERPL. 4

    EDMUNDSON    LES        TULSA                918    945-4916
                            2415 ALSOP CT.

    EGGERT       HERMANN    STUTTGART            0711   981237
                            RABENGASSE 8

## Feldausgabe-relevante Parameter

Auf die folgenden Beispiele wird im Abschnitt Parameter zur Beeinflussung der Ausgabe von Feldern verwiesen.

Sie stehen zur Verfügung, um die Benutzung der Parameter `LC`, `IC`, `TC`, `AL`, `NL`, `IS`, `ZP` und `ES` und des Statements `SUSPEND IDENTICAL SUPPRESS` zu demonstrieren:

#### DISPLX17 - DISPLAY-Statement (mit NL, AL, IC, LC, TC)

    ** Example 'DISPLX17': DISPLAY (with NL, AL, IC, LC, TC)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 FIRST-NAME
      2 NAME
      2 SALARY (1)
      2 BONUS  (1,1)
    END-DEFINE
    *
    READ (3) EMPLOY-VIEW BY NAME STARTING FROM 'JONES'
      DISPLAY NOTITLE (IS=ON NL=15)
                        NAME
        '-' '='         FIRST-NAME (AL=12)
        'ANNUAL SALARY' SALARY(1)  (LC=USD   TC=.00)   /
        '+ BONUSES'     BONUS(1,1) (IC='+  ' TC=.00)
      SKIP 1
    END-READ
    END

Ausgabe des Programms `DISPLX17`:

            NAME           FIRST-NAME       ANNUAL SALARY
                                              + BONUSES
    -------------------- -------------- ----------------------

    JONES                - VIRGINIA     USD           46000.00
                                                    +  9000.00

                         - MARSHA       USD           50000.00
                                                       +  0.00

                         - ROBERT       USD           31000.00
                                                       +  0.00

#### DISPLX18 − DISPLAY-Statement (Benutzung von Voreinstellungen für SF, AL, UC, LC, IC, TC und zum Vergleich mit DISPLX19)

    ** Example 'DISPLX18': DISPLAY  (using default settings for SF, AL, UC,
    **                     LC, IC, TC and compare with DISPLX19)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
      2 CITY
      2 SALARY    (1)
      2 BONUS     (1,1)
    END-DEFINE
    *
    FIND (6) EMPLOY-VIEW WITH CITY = 'CHAPEL HILL'
      DISPLAY NAME FIRST-NAME SALARY(1) BONUS(1,1)
    END-FIND
    END

Ausgabe des Programms `DISPLX18`:

    Page      1                                                  04-12-13  14:20:48

            NAME              FIRST-NAME        ANNUAL     BONUS
                                                SALARY
    -------------------- -------------------- ---------- ----------

    KESSLER              CLARE                     41000          0
    ADKINSON             DAVID                     24000          0
    GEE                  TOMMIE                    39500          0
    HERZOG               JOHN                      31500          0
    QUILLION             TIMOTHY                   30500          0
    CUMMINGS             PUALA                     41000       1500

#### DISPLX19 - DISPLAY-Statement (mit SF, AL, LC, IC, TC und zum Vergleich mit DISPLX18)

    ** Example 'DISPLX19': DISPLAY  (with SF, AL, LC, IC, TC and compare
    **                     with DISPLX19)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 FIRST-NAME
      2 CITY
      2 SALARY (1)
      2 BONUS  (1,1)
    END-DEFINE
    *
    FORMAT SF=3 AL=15 UC==
    *
    FIND (6) EMPLOY-VIEW WITH CITY = 'CHAPEL HILL'
      DISPLAY (NL=10)
        NAME
        FIRST-NAME  (LC='- ' UC=-)
        SALARY (1)  (LC=USD)
        BONUS (1,1) (IC='*** ' TC=' ***')
    END-FIND
    END

Ausgabe des Programms `DISPLX19`:

    Page      1                                                  04-12-13  14:21:57

         NAME            FIRST-NAME           ANNUAL              BONUS
                                              SALARY
    ===============   -----------------   ==============   ===================

    KESSLER           - CLARE             USD      41000             *** 0 ***
    ADKINSON          - DAVID             USD      24000             *** 0 ***
    GEE               - TOMMIE            USD      39500             *** 0 ***
    HERZOG            - JOHN              USD      31500             *** 0 ***
    QUILLION          - TIMOTHY           USD      30500             *** 0 ***
    CUMMINGS          - PUALA             USD      41000          *** 1500 ***

#### SUSPEX01 - SUSPEND IDENTICAL SUPPRESS-Statement (in Verbindung mit den Parametern IS, ES, ZP bei DISPLAY)

    ** Example 'SUSPEX01': SUSPEND IDENTICAL SUPPRESS (in conjunction with
    **                     parameters IS, ES, ZP in DISPLAY)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 FIRST-NAME
      2 NAME
      2 CITY
    1 VEH-VIEW VIEW OF VEHICLES
      2 PERSONNEL-ID
      2 MAKE
    END-DEFINE
    *
    LIMIT 15
    RD. READ EMPLOY-VIEW BY NAME STARTING FROM 'JONES'
      SUSPEND IDENTICAL SUPPRESS
      FD. FIND VEH-VIEW WITH PERSONNEL-ID = PERSONNEL-ID (RD.)
        IF NO RECORDS FOUND
          MOVE '******' TO MAKE
        END-NOREC
        DISPLAY NOTITLE (ES=OFF IS=ON ZP=ON AL=15)
                NAME       (RD.)
                FIRST-NAME (RD.)
                MAKE       (FD.) (IS=OFF)
      END-FIND
    END-READ
    END

Ausgabe des Programms `SUSPEX01`:

         NAME         FIRST-NAME         MAKE
    --------------- --------------- ---------------

    JONES           VIRGINIA        CHRYSLER
    JONES           MARSHA          CHRYSLER
                                    CHRYSLER
    JONES           ROBERT          GENERAL MOTORS
    JONES           LILLY           FORD
                                    MG
    JONES           EDWARD          GENERAL MOTORS
    JONES           MARTHA          GENERAL MOTORS
    JONES           LAUREL          GENERAL MOTORS
    JONES           KEVIN           DATSUN
    JONES           GREGORY         FORD
    JOPER           MANFRED         ******
    JOUSSELIN       DANIEL          RENAULT
    JUBE            GABRIEL         ******
    JUNG            ERNST           ******
    JUNKIN          JEREMY          ******
    KAISER          REINER          ******

#### SUSPEX02 - SUSPEND IDENTICAL SUPPRESS-Statement (in Verbindung mit den Parametern IS, ES, ZP in DISPLAY). Identisch mit SUSPEX01, aber mit IS=OFF.

    ** Example 'SUSPEX02': SUSPEND IDENTICAL SUPPRESS (in conjunction with
    **                     parameters IS, ES, ZP in DISPLAY)
    **                     Identical to SUSPEX01, but with IS=OFF.
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 FIRST-NAME
      2 NAME
      2 CITY
    1 VEH-VIEW VIEW OF VEHICLES
      2 PERSONNEL-ID
      2 MAKE
    END-DEFINE
    *
    LIMIT 15
    RD. READ EMPLOY-VIEW BY NAME STARTING FROM 'JONES'
      SUSPEND IDENTICAL SUPPRESS
      FD. FIND VEH-VIEW WITH PERSONNEL-ID = PERSONNEL-ID (RD.)
        IF NO RECORDS FOUND
          MOVE '******' TO MAKE
        END-NOREC
        DISPLAY NOTITLE (ES=OFF IS=OFF ZP=ON AL=15)
                NAME       (RD.)
                FIRST-NAME (RD.)
                MAKE       (FD.) (IS=OFF)
      END-FIND
    END-READ
    END

Ausgabe des Programms `SUSPEX02`:

         NAME         FIRST-NAME         MAKE
    --------------- --------------- ---------------

    JONES           VIRGINIA        CHRYSLER
    JONES           MARSHA          CHRYSLER
    JONES           MARSHA          CHRYSLER
    JONES           ROBERT          GENERAL MOTORS
    JONES           LILLY           FORD
    JONES           LILLY           MG
    JONES           EDWARD          GENERAL MOTORS
    JONES           MARTHA          GENERAL MOTORS
    JONES           LAUREL          GENERAL MOTORS
    JONES           KEVIN           DATSUN
    JONES           GREGORY         FORD
    JOPER           MANFRED         ******
    JOUSSELIN       DANIEL          RENAULT
    JUBE            GABRIEL         ******
    JUNG            ERNST           ******
    JUNKIN          JEREMY          ******
    KAISER          REINER          ******

#### COMPRX03 - COMPRESS-Statement (in Verbindung mit LC und TC)

    ** Example 'COMPRX03': COMPRESS (using parameters LC and TC)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 SALARY     (1)
      2 CURR-CODE  (1)
      2 LEAVE-DUE
      2 NAME
      2 FIRST-NAME
      2 JOB-TITLE
    *
    1 #SALARY      (N9)
    1 #FULL-SALARY (A25)
    1 #VACATION    (A11)
    END-DEFINE
    *
    READ (3) EMPLOY-VIEW WITH CITY = 'BOSTON'
      MOVE SALARY(1) TO #SALARY
      COMPRESS 'SALARY  :' CURR-CODE(1) #SALARY INTO #FULL-SALARY
      COMPRESS 'VACATION:' LEAVE-DUE            INTO #VACATION
      /*
      DISPLAY NOTITLE NAME FIRST-NAME
               'JOB DESCRIPTION' JOB-TITLE  (LC='JOB     : ')  /
               '/'               #FULL-SALARY                  /
               '/'               #VACATION  (TC='DAYS')
      SKIP 1
    END-READ
    END

Ausgabe des Programms `COMPRX03`:

            NAME              FIRST-NAME                JOB DESCRIPTION
    -------------------- -------------------- -----------------------------------

    SHAW                 LESLIE               JOB     : SECRETARY
                                              SALARY  : USD 18000
                                              VACATION: 2DAYS

    STANWOOD             VERNON               JOB     : PROGRAMMER
                                              SALARY  : USD 31000
                                              VACATION: 1DAYS

    CREMER               WALT                 JOB     : SECRETARY
                                              SALARY  : USD 20000
                                              VACATION: 3DAYS

## Editiermasken

Auf folgende Beispiele wird im Abschnitt Editiermasken − der EM-Parameter verwiesen.

#### EDITMX03 - Editiermaske (unterschiedliche EM-Angabe bei alphanumerischen Feldern)

    ** Example 'EDITMX03': Edit mask (different EM for alpha-numeric fields)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 FIRST-NAME
      2 NAME
      2 CITY
      2 SALARY(1)
    END-DEFINE
    *
    LIMIT 3
    READ EMPLOY-VIEW BY PERSONNEL-ID FROM '20018000'
                     WHERE SALARY(1) = 28000 THRU 30000
      DISPLAY 'N A M E'  NAME       (EM=X^^X^^X^^X^^X^^X^^X^^X^^X^^X^^X) /
              'NAME HEX' NAME       (EM=H^H^H^H^H^H^H^H^H^H^H)
                         FIRST-NAME (EM=' - 'X(15)*)
                         CITY       (EM=X..X(10))
      SKIP 1
    END-READ
    END

Ausgabe des Programms `EDITMX03`:

    Page      1                                                  04-12-13  14:26:57

                N A M E                  FIRST-NAME         CITY
                NAME HEX
    -------------------------------- ------------------ -------------

    L  O  R  I  E                    - JEAN-PAUL      * C..LEVELAND
    D3 D6 D9 C9 C5 40 40 40 40 40 40

    H  A  L  L                       - ARTHUR         * A..NN ARBER
    C8 C1 D3 D3 40 40 40 40 40 40 40

    V  A  S  W  A  N  I              - TOMMIE         * M..ONTERREY
    E5 C1 E2 E6 C1 D5 C9 40 40 40 40

#### EDITMX04 - Editiermaske (unterschiedliche EM-Angaben bei numerischen Feldern)

    ** Example 'EDITMX04': Edit mask (different EM for numeric fields)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 FIRST-NAME
      2 NAME
      2 SALARY (1)
      2 BONUS  (1,1)
      2 LEAVE-DUE
    END-DEFINE
    *
    LIMIT 2
    READ EMPLOY-VIEW BY PERSONNEL-ID = '20018000'
                     WHERE SALARY(1) = 28000 THRU 30000
      DISPLAY (SF=4)
              'N A M E'    NAME
              'SALARY'     SALARY(1)  (EM=*USD^ZZZ,999)
              'BONUS (ZZ)' BONUS(1,1) (EM=S*ZZZ,999) /
              'BONUS (Z9)' BONUS(1,1) (EM=SZ99,999+) /
              '->' '='     BONUS(1,1) (EM=-999,999)
              'VAC/DUE'    LEAVE-DUE  (EM=+999)
      SKIP 1
    END-READ
    END

Ausgabe des Programms `EDITMX04`:

    Page      1                                                  04-12-13  14:27:43

          N A M E             SALARY       BONUS (ZZ)     VAC
                                           BONUS (Z9)     DUE
                                              BONUS
    --------------------    -----------    -----------    ---

    LORIE                   USD *28,000    +**4,000       +13
                                           + 04,000+
                                           ->  004,000

    HALL                    USD *30,000    +**5,000       +14
                                           + 05,000+
                                           ->  005,000

#### EDITMX05 - Editiermaske (EM-Angaben für Datums- und Uhrzeit-Systemvariablen)

    ** Example 'EDITMX05': Edit mask (EM for date and time system variables)
    ************************************************************************
    WRITE NOTITLE //
      'DATE INTERNAL :' *DATX (DF=L) /
      '              :' *DATX (EM=N(9)' 'ZW.'WEEK 'YYYY)  /
      '              :' *DATX (EM=ZZJ'.DAY 'YYYY)        /
      '     ROMAN    :' *DATX (EM=R)  /
      '     AMERICAN :' *DATX (EM=MM/DD/YYYY)      12X 'OR  ' *DAT4U /
      '     JULIAN   :' *DATX (EM=YYYYJJJ)         15X 'OR  ' *DAT4J /
      '     GREGORIAN:' *DATX (EM=ZD.''L(10)''YYYY) 5X 'OR  ' *DATG ///
      'TIME INTERNAL :' *TIMX                      14X 'OR  ' *TIME /
      '              :' *TIMX (EM=HH.II.SS.T) /
      '              :' *TIMX (EM=HH.II.SS' 'AP) /
      '              :' *TIMX (EM=HH)
    END

Ausgabe des Programms `EDITMX05`:

    DATE INTERNAL : 2004-12-13
                  : Monday 51.WEEK 2004
                  : 348.DAY 2004
         ROMAN    : MMIV
         AMERICAN : 12/13/2004            OR   12/13/2004
         JULIAN   : 2004348               OR   2004348
         GREGORIAN: 13.December2004       OR   13December 2004

    TIME INTERNAL : 14:28:49              OR   14:28:49.1
                  : 14.28.49.1
                  : 02.28.49 PM
                  : 14

## DISPLAY VERT mit WRITE-Statement

#### WRITEX10 - WRITE-Statement (mit nT, T*field und P*field)

    ** Example 'WRITEX10': WRITE (with nT, T*field and P*field)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 JOB-TITLE
      2 NAME
      2 SALARY (1)
      2 BONUS  (1,1)
    END-DEFINE
    *
    READ (3) EMPLOY-VIEW WITH JOB-TITLE FROM 'SALES PERSON'
      DISPLAY NOTITLE NAME 30T JOB-TITLE
              VERT AS 'SALARY/BONUS' SALARY(1) BONUS(1,1)
      AT BREAK OF JOB-TITLE
        WRITE 20T 'AVERAGE' T*JOB-TITLE OLD(JOB-TITLE) (AL=15)
                  '(SAL)'   P*SALARY AVER(SALARY(1))  /
              46T '(BON)'   P*BONUS  AVER(BONUS(1,1)) /
      END-BREAK
      SKIP 1
    END-READ
    END

Ausgabe des Programms `WRITEX10`:

            NAME                          CURRENT            SALARY
                                         POSITION            BONUS
    --------------------         ------------------------- ----------

    SAMUELSON                    SALES PERSON                   32000
                                                                 6000

    PAPAYANOPOULOS               SALES PERSON                   34000
                                                                 7000

    HELL                         SALES PERSON                   38000
                                                                 9000

                       AVERAGE   SALES PERSON    (SAL)          34666
                                                 (BON)           7333

## AT BREAK-Statement

Auf das folgende Beispiel wird im Abschnitt Gruppenwechsel verwiesen.

#### ATBREX06 - AT BREAK OF-Statement (zum Vergleichen von NMIN, NAVER, NCOUNT mit MIN, AVER, COUNT)

    ** Example 'ATBREX06': AT BREAK OF (comparing NMIN, NAVER, NCOUNT with
    **                     MIN, AVER, COUNT)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 SALARY (1:2)
    END-DEFINE
    *
    WRITE TITLE '-- SALARY STATISTICS BY CITY --' /
    *
    READ (2) EMPLOY-VIEW WITH CITY = 'NEW YORK'
      DISPLAY CITY  'SALARY (1)' SALARY(1) 15X 'SALARY (2)' SALARY(2)
      AT BREAK OF CITY
        WRITE /
          14T 'S A L A R Y   (1)'         39T 'S A L A R Y  (2)'          /
          13T '-   MIN:' MIN(SALARY(1))   38T '-   MIN:' MIN(SALARY(2))   /
          13T '-  AVER:' AVER(SALARY(1))  38T '-  AVER:' AVER(SALARY(2))  /
          16T COUNT(SALARY(1)) 'RECORDS'  41T COUNT(SALARY(2)) 'RECORDS'  //
          13T '-  NMIN:' NMIN(SALARY(1))  38T '-  NMIN:' NMIN(SALARY(2))  /
          13T '- NAVER:' NAVER(SALARY(1)) 38T '- NAVER:' NAVER(SALARY(2)) /
          16T NCOUNT(SALARY(1)) 'RECORDS' 41T NCOUNT(SALARY(2)) 'RECORDS'
      END-BREAK
    END-READ
    END

Ausgabe des Programms `ATBREX06`:

                            -- SALARY STATISTICS BY CITY --

            CITY         SALARY (1)               SALARY (2)
    -------------------- ----------               ----------

    NEW YORK                  17000                    16100
    NEW YORK                  38000                    34900

                 S A L A R Y   (1)        S A L A R Y  (2)
                -   MIN:      17000      -   MIN:      16100
                -  AVER:      27500      -  AVER:      25500
                          2 RECORDS                2 RECORDS

                -  NMIN:      17000      -  NMIN:      16100
                - NAVER:      27500      - NAVER:      25500
                          2 RECORDS                2 RECORDS

## Statements COMPUTE, MOVE und COMPRESS

Auf die folgenden Beispiele wird im Abschnitt Datenberechnungen verwiesen.

#### WRITEX11 − WRITE-Statement (mit nX, n/n und COMPRESS)

    ** Example 'WRITEX11': WRITE (with nX, n/n and COMPRESS)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 SALARY       (1)
      2 FIRST-NAME
      2 NAME
      2 CITY
      2 ZIP
      2 CURR-CODE    (1)
      2 JOB-TITLE
      2 LEAVE-DUE
      2 ADDRESS-LINE (1)
    *
    1 #SALARY        (A8)
    1 #FULL-NAME     (A25)
    1 #FULL-CITY     (A25)
    1 #FULL-SALARY   (A25)
    1 #VACATION      (A16)
    END-DEFINE
    *
    READ (3) EMPLOY-VIEW LOGICAL BY PERSONNEL-ID = '2001800'
      MOVE SALARY(1) TO  #SALARY
      COMPRESS FIRST-NAME NAME                    INTO #FULL-NAME
      COMPRESS ZIP        CITY                    INTO #FULL-CITY
      COMPRESS 'SALARY  :'  CURR-CODE(1)  #SALARY INTO #FULL-SALARY
      COMPRESS 'VACATION:'  LEAVE-DUE    'DAYS'   INTO #VACATION
      /*
      DISPLAY NOTITLE 'NAME AND ADDRESS' NAME
                   5X 'PERS-NO.'         PERSONNEL-ID
                   3X 'JOB TITLE'        JOB-TITLE (LC='JOB     : ')
      WRITE   1/5 #FULL-NAME        1/37  #FULL-SALARY
              2/5 ADDRESS-LINE(1)   2/37  #VACATION
              3/5 #FULL-CITY
      SKIP 1
    END-READ
    END

Ausgabe des Programms `WRITEX11`:

      NAME AND ADDRESS       PERS-NO.                JOB TITLE
    --------------------     --------   -----------------------------------

    FARRIS                   20018000   JOB     : PROGRAMMER
        JACKIE FARRIS                   SALARY  : USD 30500
        918 ELM STREET                  VACATION: 10 DAY
        32306 TALLAHASSEE

    EVANS                    20018100   JOB     : PROGRAMMER
        JO EVANS                        SALARY  : USD 31000
        1058 REDSTONE LANE              VACATION: 11 DAY
        68508 LINCOLN

    HERZOG                   20018200   JOB     : PROGRAMMER
        JOHN HERZOG                     SALARY  : USD 31500
        255 ZANG STREET #253            VACATION: 12 DAY
        27514 CHAPEL HILL

#### IFX03 - IF-Statement

    ** Example 'IFX03': IF
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 NAME
      2 CITY
      2 BONUS  (1,1)
      2 SALARY (1)
    *
    1 #INCOME  (N9)
    1 #TEXT    (A26)
    END-DEFINE
    *
    WRITE TITLE '-- DISTRIBUTION OF CATALOGS I AND II --' /
    *
    READ (3) EMPLOY-VIEW BY CITY = 'SAN FRANSISCO'
      COMPUTE #INCOME = BONUS(1,1) + SALARY(1)
      /*
      IF #INCOME > 40000
        MOVE 'CATALOGS I AND II' TO #TEXT
      ELSE
        MOVE 'CATALOG I'         TO #TEXT
      END-IF
      /*
      DISPLAY NAME 5X 'SALARY' SALARY(1) / BONUS(1,1)
      WRITE T*SALARY '-'(10) /
            16X 'INCOME:' T*SALARY #INCOME 3X #TEXT /
            16X '='(19)
      SKIP 1
    END-READ
    END

Ausgabe des Programms `IFX03`:

                        -- DISTRIBUTION OF CATALOGS I AND II --

            NAME               SALARY
                               BONUS
    --------------------     ----------

    COLVILLE JR                   56000
                                      0
                             ----------
                    INCOME:       56000   CATALOGS I AND II
                    ===================

    RICHMOND                       9150
                                      0
                             ----------
                    INCOME:        9150   CATALOG I
                    ===================

    MONKTON                       13500
                                    600
                             ----------
                    INCOME:       14100   CATALOG I
                    ===================

#### COMPRX03 - COMPRESS-Statement (mit Parametern LC and TC)

    ** Example 'COMPRX03': COMPRESS (using parameters LC and TC)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 SALARY     (1)
      2 CURR-CODE  (1)
      2 LEAVE-DUE
      2 NAME
      2 FIRST-NAME
      2 JOB-TITLE
    *
    1 #SALARY      (N9)
    1 #FULL-SALARY (A25)
    1 #VACATION    (A11)
    END-DEFINE
    *
    READ (3) EMPLOY-VIEW WITH CITY = 'BOSTON'
      MOVE SALARY(1) TO #SALARY
      COMPRESS 'SALARY  :' CURR-CODE(1) #SALARY INTO #FULL-SALARY
      COMPRESS 'VACATION:' LEAVE-DUE            INTO #VACATION
      /*
      DISPLAY NOTITLE NAME FIRST-NAME
               'JOB DESCRIPTION' JOB-TITLE  (LC='JOB     : ')  /
               '/'               #FULL-SALARY                  /
               '/'               #VACATION  (TC='DAYS')
      SKIP 1
    END-READ
    END

Ausgabe des Programms `COMPRX03`:

            NAME              FIRST-NAME                JOB DESCRIPTION
    -------------------- -------------------- -----------------------------------

    SHAW                 LESLIE               JOB     : SECRETARY
                                              SALARY  : USD 18000
                                              VACATION: 2DAYS

    STANWOOD             VERNON               JOB     : PROGRAMMER
                                              SALARY  : USD 31000
                                              VACATION: 1DAYS

    CREMER               WALT                 JOB     : SECRETARY
                                              SALARY  : USD 20000
                                              VACATION: 3DAYS

## Systemvariablen

Auf die folgenden Beispiele wird im Abschnitt Systemvariablen und Systemfunktionen verwiesen.

#### EDITMX05 − Editiermaske (EM bei Datums- und Uhrzeit-Systemvariablen)

    ** Example 'EDITMX05': Edit mask (EM for date and time system variables)
    ************************************************************************
    WRITE NOTITLE //
      'DATE INTERNAL :' *DATX (DF=L) /
      '              :' *DATX (EM=N(9)' 'ZW.'WEEK 'YYYY)  /
      '              :' *DATX (EM=ZZJ'.DAY 'YYYY)        /
      '     ROMAN    :' *DATX (EM=R)  /
      '     AMERICAN :' *DATX (EM=MM/DD/YYYY)      12X 'OR  ' *DAT4U /
      '     JULIAN   :' *DATX (EM=YYYYJJJ)         15X 'OR  ' *DAT4J /
      '     GREGORIAN:' *DATX (EM=ZD.''L(10)''YYYY) 5X 'OR  ' *DATG ///
      'TIME INTERNAL :' *TIMX                      14X 'OR  ' *TIME /
      '              :' *TIMX (EM=HH.II.SS.T) /
      '              :' *TIMX (EM=HH.II.SS' 'AP) /
      '              :' *TIMX (EM=HH)
    END

Ausgabe des Programms `EDITMX05`:

    DATE INTERNAL : 2004-12-13
                  : Monday 51.WEEK 2004
                  : 348.DAY 2004
         ROMAN    : MMIV
         AMERICAN : 12/13/2004            OR   12/13/2004
         JULIAN   : 2004348               OR   2004348
         GREGORIAN: 13.December2004       OR   13December 2004

    TIME INTERNAL : 14:36:58              OR   14:36:58.8
                  : 14.36.58.8
                  : 02.36.58 PM
                  : 14

#### READX04 - READ-Statement (in Verbindung mit FIND und den Systemvariablen *NUMBER und *COUNTER)

    ** Example 'READX04': READ (in combination with FIND and the system
    **                    variables *NUMBER and *COUNTER)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 FIRST-NAME
    1 VEHIC-VIEW VIEW OF VEHICLES
      2 PERSONNEL-ID
      2 MAKE
    END-DEFINE
    *
    LIMIT 10
    RD. READ EMPLOY-VIEW BY NAME STARTING FROM 'JONES'
      FD. FIND VEHIC-VIEW WITH PERSONNEL-ID = PERSONNEL-ID (RD.)
        IF NO RECORDS FOUND
          ENTER
        END-NOREC
        /*
        DISPLAY NOTITLE
                *COUNTER (RD.)(NL=8) NAME         (AL=15) FIRST-NAME (AL=10)
                *NUMBER  (FD.)(NL=8) *COUNTER (FD.)(NL=8) MAKE
      END-FIND
    END-READ
    END

Ausgabe des Programms `READX04`:

      CNT          NAME       FIRST-NAME   NMBR      CNT             MAKE
    --------- --------------- ---------- --------- --------- --------------------

            1 JONES           VIRGINIA           1         1 CHRYSLER
            2 JONES           MARSHA             2         1 CHRYSLER
            2 JONES           MARSHA             2         2 CHRYSLER
            3 JONES           ROBERT             1         1 GENERAL MOTORS
            4 JONES           LILLY              2         1 FORD
            4 JONES           LILLY              2         2 MG
            5 JONES           EDWARD             1         1 GENERAL MOTORS
            6 JONES           MARTHA             1         1 GENERAL MOTORS
            7 JONES           LAUREL             1         1 GENERAL MOTORS
            8 JONES           KEVIN              1         1 DATSUN
            9 JONES           GREGORY            1         1 FORD
           10 JOPER           MANFRED            0         0

#### WTITLX01 − WRITE TITLE-Statement (mit *PAGE−NUMBER)

    ** Example 'WTITLX01': WRITE TITLE (with *PAGE-NUMBER)
    ************************************************************************
    DEFINE DATA LOCAL
    1 VEHIC-VIEW VIEW OF VEHICLES
      2 MAKE
      2 YEAR
      2 MAINT-COST (1)
    END-DEFINE
    *
    LIMIT 5
    *
    READ VEHIC-VIEW
    END-ALL
    SORT BY YEAR USING MAKE MAINT-COST (1)
      DISPLAY NOTITLE YEAR MAKE MAINT-COST (1)
      AT BREAK OF YEAR
        MOVE 1 TO *PAGE-NUMBER
        NEWPAGE
      END-BREAK
      /*
      WRITE TITLE LEFT JUSTIFIED
            'YEAR:' YEAR 15X 'PAGE' *PAGE-NUMBER
    END-SORT
    END

Ausgabe des Programms `WTITLX01`:

    YEAR:  1980               PAGE      1
    YEAR          MAKE         MAINT-COST
    ----- -------------------- ----------

     1980 RENAULT                 20000
     1980 RENAULT                 20000
     1980 PEUGEOT                 20000

## Systemfunktionen

Auf die folgenden Beispiele wird im Abschnitt Systemvariablen und Systemfunktionen verwiesen.

#### ATBREX06 - AT BREAK OF-Statement (zum Vergleichen von NMIN, NAVER, NCOUNT mit MIN, AVER, COUNT)

    ** Example 'ATBREX06': AT BREAK OF (comparing NMIN, NAVER, NCOUNT with
    **                     MIN, AVER, COUNT)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 SALARY (1:2)
    END-DEFINE
    *
    WRITE TITLE '-- SALARY STATISTICS BY CITY --' /
    *
    READ (2) EMPLOY-VIEW WITH CITY = 'NEW YORK'
      DISPLAY CITY  'SALARY (1)' SALARY(1) 15X 'SALARY (2)' SALARY(2)
      AT BREAK OF CITY
        WRITE /
          14T 'S A L A R Y   (1)'         39T 'S A L A R Y  (2)'          /
          13T '-   MIN:' MIN(SALARY(1))   38T '-   MIN:' MIN(SALARY(2))   /
          13T '-  AVER:' AVER(SALARY(1))  38T '-  AVER:' AVER(SALARY(2))  /
          16T COUNT(SALARY(1)) 'RECORDS'  41T COUNT(SALARY(2)) 'RECORDS'  //
          13T '-  NMIN:' NMIN(SALARY(1))  38T '-  NMIN:' NMIN(SALARY(2))  /
          13T '- NAVER:' NAVER(SALARY(1)) 38T '- NAVER:' NAVER(SALARY(2)) /
          16T NCOUNT(SALARY(1)) 'RECORDS' 41T NCOUNT(SALARY(2)) 'RECORDS'
      END-BREAK
    END-READ
    END

Ausgabe des Programms `ATBREX06`:

                            -- SALARY STATISTICS BY CITY --

            CITY         SALARY (1)               SALARY (2)
    -------------------- ----------               ----------

    NEW YORK                  17000                    16100
    NEW YORK                  38000                    34900

                 S A L A R Y   (1)        S A L A R Y  (2)
                -   MIN:      17000      -   MIN:      16100
                -  AVER:      27500      -  AVER:      25500
                          2 RECORDS                2 RECORDS

                -  NMIN:      17000      -  NMIN:      16100
                - NAVER:      27500      - NAVER:      25500
                          2 RECORDS                2 RECORDS

#### ATENPX01 - AT END OF PAGE-Statement (mit der durch GIVE SYSTEM FUNCTIONS in DISPLAY verfügbaren Systemfunktion)

    ** Example 'ATENPX01': AT END OF PAGE (with system function available
    **                     via GIVE SYSTEM FUNCTIONS in DISPLAY)
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 JOB-TITLE
      2 SALARY (1)
    END-DEFINE
    *
    READ (10) EMPLOY-VIEW BY PERSONNEL-ID = '20017000'
      DISPLAY NOTITLE GIVE SYSTEM FUNCTIONS
              NAME JOB-TITLE 'SALARY' SALARY(1)
      /*
      AT END OF PAGE
        WRITE / 24T 'AVERAGE SALARY: ...' AVER(SALARY(1))
      END-ENDPAGE
    END-READ
    END

Ausgabe des Programms `ATENPX01`:

            NAME                  CURRENT            SALARY
                                 POSITION
    -------------------- ------------------------- ----------

    CREMER               ANALYST                        34000
    MARKUSH              TRAINEE                        22000
    GEE                  MANAGER                        39500
    KUNEY                DBA                            40200
    NEEDHAM              PROGRAMMER                     32500
    JACKSON              PROGRAMMER                     33000
    PIETSCH              SECRETARY                      22000
    PAUL                 SECRETARY                      23000
    HERZOG               MANAGER                        48500
    DEKKER               DBA                            48000

                           AVERAGE SALARY: ...      34270

### On this page

- READ-Statement
- FIND-Statement
- Geschachtelte READ- und FIND-Statements
- ACCEPT- und REJECT-Statements
- AT START OF DATA- und AT END OF DATA-Statements
- DISPLAY- und WRITE-Statements
- DISPLAY-Statement
- Spaltenüberschriften
- Feldausgabe-relevante Parameter
- Editiermasken
- DISPLAY VERT mit WRITE-Statement
- AT BREAK-Statement
- Statements COMPUTE, MOVE und COMPRESS
- Systemvariablen
- Systemfunktionen