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

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