Dieses Dokument enthält einige zusätzliche Beispielprogramme, auf die im Leitfaden zur Programmierung verwiesen wird.
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.
Auf das folgende Beispiel wird im Abschnitt Datenbankzugriffe verwiesen.
** 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
Auf die folgenden Beispiele wird im Abschnitt Datenbankzugriffe verwiesen.
** 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
** 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.
** 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
** 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 ***
** 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
Auf die folgenden Beispiele wird im Abschnitt Datenbank-Verarbeitungsschleifen verwiesen.
** 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
** 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
Auf die folgenden Beispiele wird im Abschnitt Datensätze mit ACCEPT / REJECT auswählen verwiesen.
** 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
** 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
** 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
Auf die folgenden Beispiele wird im Abschnitt AT START/END OF DATA-Statements verwiesen.
** 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
** 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
** 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
Auf die folgenden Beispiele wird im Abschnitt Statements DISPLAY und WRITE verwiesen.
** 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
** 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
** 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
** 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
Auf folgendes Beispiel wird im Abschnitt Seitenüberschriften, Seitenvorschübe und Leerzeilen verwiesen.
** 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 -------------------------------------------------------------------------------
Auf das folgende Beispiel wird im Abschnitt Spaltenüberschriften verwiesen.
** 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
** 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
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:
** 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
** 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
** 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 ***
** 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 ******
** 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 ******
** 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
Auf folgende Beispiele wird im Abschnitt Editiermasken − der EM-Parameter verwiesen.
** 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
** 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
** 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
** 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
Auf das folgende Beispiel wird im Abschnitt Gruppenwechsel verwiesen.
** 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
Auf die folgenden Beispiele wird im Abschnitt Datenberechnungen verwiesen.
** 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
** 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 ===================
** 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
Auf die folgenden Beispiele wird im Abschnitt Systemvariablen und Systemfunktionen verwiesen.
** 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
** 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
** 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
Auf die folgenden Beispiele wird im Abschnitt Systemvariablen und Systemfunktionen verwiesen.
** 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
** 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