Program generation

Description
When either the detail or report screen is being displayed, you can now enter the command GEN. This will cause Peek to create a source Natural program in the editor based on the current file access, including any starting values and where criteria. Any edit masks that were being applied will also be included. This program may be saved (and modified if required) and then used in batch to generate a report on the current file.
Below is an example program that was generated during a session browsing the EMPLOYEES file:
0010 * ---------------------------------------------------------------------- 0020 * Program name ...... 0030 * Generated by ...... USER01 Temporary User 0040 * Generation date ... 2001-08-02 08:46 0050 * Based on file ..... EMPLOYEES 0060 * ---------------------------------------------------------------------- 0070 DEFINE DATA 0080 LOCAL 0090 1 EMPLOYEES VIEW OF EMPLOYEES 0100 2 PERSONNEL-ID 0110 2 FIRST-NAME 0120 2 NAME 0130 2 MIDDLE-I 0140 2 MAR-STAT 0150 2 SEX 0160 2 BIRTH 0170 2 C*ADDRESS-LINE 0180 2 ADDRESS-LINE (1) 0190 2 CITY 0200 2 ZIP 0210 2 COUNTRY 0220 2 AREA-CODE 0230 2 PHONE 0240 2 DEPT 0250 2 JOB-TITLE 0260 2 C*INCOME 0270 2 INCOME (1) 0280 3 CURR-CODE 0290 3 SALARY 0300 2 LEAVE-DUE 0310 2 LEAVE-TAKEN 0320 2 C*LEAVE-BOOKED 0330 2 LEAVE-BOOKED (1) 0340 3 LEAVE-START 0350 3 LEAVE-END 0360 2 C*LANG 0370 2 LANG (1) 0380 LOCAL 0390 1 #CURRENT-PAGE (P3) INIT <1> 0400 1 #START-KEY (A20) /* Key variable 0410 * 0420 * Redefined file fields 0430 * 0440 1 #BIRTH-A9 (A9) 0450 * 0460 * Variables used by the mask routines 0470 * 0480 1 #DATE (D) 0490 1 #A50 (A50) 0500 * 0510 1 #N6 (N6) 0520 1 REDEFINE #N6 0530 2 #A6 (A6) 0540 END-DEFINE 0550 * 0560 FORMAT PS=60 LS=130 0570 * 0580 AT TOP OF PAGE 0590 WRITE *DATX 52T 'Report for file : EMPLOYEES' 0600 122T 'Page' *PAGE-NUMBER (NL=3 SG=OFF) / 0610 END-TOPPAGE 0620 * 0630 * Set start value 0640 * 0650 #START-KEY := 'SMITH' 0660 * 0670 READ EMPLOYEES BY NAME 0680 STARTING FROM #START-KEY 0690 * 0700 DECIDE ON FIRST VALUE OF #CURRENT-PAGE 0710 * 0720 VALUE 1 0730 * 0740 * Edit mask processing 0750 * 0760 #N6 := BIRTH 0770 PERFORM N6-TO-DDLLLYY 0780 #BIRTH-A9 := #A50 0790 * 0800 WRITE NOTITLE NOHDR (ZP=OFF) 0810 NAME 0820 PERSONNEL-ID 0830 FIRST-NAME 0840 MIDDLE-I 0850 MAR-STAT 0860 SEX 0870 #BIRTH-A9 0880 ADDRESS-LINE (1) 0890 CITY 0900 * 0910 VALUE 2 0920 WRITE NOTITLE NOHDR (ZP=OFF) 0930 NAME 0940 ZIP 0950 COUNTRY 0960 AREA-CODE 0970 PHONE 0980 DEPT 0990 JOB-TITLE 1000 CURR-CODE (1) 1010 SALARY (1) 1020 LEAVE-DUE 1030 LEAVE-TAKEN 1040 LEAVE-START (1) 1050 * 1060 VALUE 3 1070 WRITE NOTITLE NOHDR (ZP=OFF) 1080 NAME 1090 LEAVE-END (1) 1100 LANG (1) 1110 * 1120 NONE VALUES 1130 WRITE 'Invalid page value :' #CURRENT-PAGE 1140 ESCAPE BOTTOM 1150 END-DECIDE 1160 * 1170 END-READ 1180 * 1190 * ----------------------------- 1200 DEFINE SUBROUTINE N6-TO-DDLLLYY 1210 * ----------------------------- 1220 * 1230 IF #N6 = 0 1240 RESET #A50 1250 ESCAPE ROUTINE 1260 END-IF 1270 * 1280 IF #N6 = MASK (YYMMDD) 1290 MOVE EDITED #A6 TO #DATE (EM=YYMMDD) 1300 MOVE EDITED #DATE (EM=DD' 'LLL' 'YY) TO #A50 1310 ELSE 1320 COMPRESS '*' #N6 '*' 1330 INTO #A50 LEAVING NO SPACE 1340 END-IF 1350 * 1360 END-SUBROUTINE 1370 * 1380 END |