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