0010 *
0020 * TESTCON1
0030 *
0040 * THIS PROGRAM SHELL WAS "BORROWED" FROM CONSTRUCT.
0050 * THE GUTS OF A SIMPLE BROWSE WERE REMOVED TO PROVIDE
0060 * A SIMPLE SCROLL CAPABILITY (WITHOUT ALL THE CONTROLS
0070 * ENFORCED BY CONSTRUCT) FOR A NATURAL APPLICATION.
0080 *
0090 * IF YOU NEED A "SELECT" COLUMN THEN YOU NEED A BROWSE
0100 * SELECT SHELL: SEE TESTCON2
0110 *
0120 * COPY THIS PROGRAM AND RENAME IT BEFORE YOU BEGIN
0130 * MAKING ANY CHANGES.
0140 *
0150 * YOUR ONLY CHANGES SHOULD BE AT THE COMMENTS THAT
0160 * HAVE BEEN INSERTED THROUGHOUT. YOU'LL NEED TO
0170 * IDENTIFY A FILE VIEW, A PRIMARY KEY AND THINK
0180 * ABOUT HEADERS AND HOW MUCH SCROLLING YOU WANT TO
0190 * PROVIDE.
0200 *
0210 *
0220 * Set a GDA if needed and generate any local views used
0230 *
0240 DEFINE DATA /* GLOBAL USING
0250 LOCAL
0260 1 STAFF VIEW OF EMPLOYEES /* Replace this view with your data.
0270   2 PERSONNEL-ID
0280   2 NAME
0290   2 FIRST-NAME
0300   2 JOB-TITLE
0310   2 SALARY(1)
0320 *
0330 * Each screen contains 15 lines of detail. Set maximum pages to a value
0340 * that will apply for most of your lookups. For example, 40 breaks down
0350 * to 560 records to be displayed and scrolled through.
0360 *
0370 1 #MAX-PAGES(P3) CONST<40>
0380 1 #UNCONDITIONALLY(L) CONST<TRUE>
0390 1 #BKWD-TABLE-VALUE(P1)
0400 1 #END-OF-DATA(L)
0410 *
0420 * Set #FIRST.#KY to the format and length of your primary key
0430 *
0440 1 #FIRST
0450   2 #KY(A08)
0460   2 #ISN(P10)
0470 1 #FIRST-INPUT(L) INIT<TRUE>
0480 1 #FIRST-ISN-FOUND(L)
0490 1 #FORWARD(L) INIT<TRUE>
0500 *
0510 * Set the level 2 variable to the name, format and length of your
0520 * primary key
0530 *
0540 1 #INPUT
0550   2 PERSONNEL-ID(A08)
0560 1 REDEFINE #INPUT
0570   2 #FIRST-CHAR-ON-SCREEN(A1)
0580 1 #INSIDE-READ-LOOP(L)
0590 *
0600 * Set #KEY to the same format and length of your primary key
0610 *
0620 1 #KEY(A08)
0630 1 #KEY-CV(C) INIT <(AD=I)>
0640 1 #MATCH-FOUND(L)
0650 1 #SCR-CV(C) INIT<(AD=I)>
0660 1 #SCROLL-INDX(P3)
0670 *
0680 * Set #SCROLL-TBL.#KY to the format and length of your primary key
0690 *
0700 1 #SCROLL-TBL(1:#MAX-PAGES)
0710   2 #KY(A08)                      /* Same size as your main key
0720   2 #ISN(P10)
0730 *
0740 * Set #START.#KY to the format and length of your primary key
0750 *
0760 1 #START
0770   2 #KY(A08)                      /* Same note as above
0780   2 #ISN(P10)
0790 1 #END
0800   2 #KY(A08)
0810 1 #TOP-OF-PAGE(L)
0820 1 #TOTAL-PAGES(P3)
0830 1 #LAST-PAGE(P3)
0840 1 #INCOMING-ID(A8)
0850 END-DEFINE
0860 *
0870 * If you're passing starting values to this program and not through the
0880 * GDA, then this INPUT will have to be setup to match the passed values
0890 *
0900 INPUT #INCOMING-ID (AD=T)
0910 *
0920 * If no PF keys are displayed set KD=OFF.
0930 * Set PS to an appropriate value remembering that an extra line is
0940 * established for the "input" field otherwise leave it at 20.
0950 *
0960 FORMAT ES=ON KD=OFF SG=OFF ZP=OFF PS=20
0970 SET KEY ALL
0980 *
0990 MAIN-REPEAT. REPEAT
1000   #INPUT.PERSONNEL-ID := #START.#KY := #INCOMING-ID
1010   MOVE SUBSTRING(#START.#KY,1,1) TO #END.#KY
1020   COMPRESS #END.#KY '9999999' INTO #END.#KY LEAVING NO
1030   PERFORM PAGINATION-SETUP
1040 *
1050   PROG. REPEAT
1060     RESET #FIRST-ISN-FOUND #INSIDE-READ-LOOP #MATCH-FOUND
1070     IF #SCROLL-INDX LT 1 THEN
1080       ASSIGN #FORWARD = TRUE
1090     END-IF
1100 *
1110 * Set the first ASSIGN statement to the field that provides the
1120 * starting value
1130 *
1140     IF #FORWARD THEN
1150       ASSIGN #START.#KY = #INPUT.PERSONNEL-ID
1160       ASSIGN #MATCH-FOUND = TRUE
1170     ELSE
1180       ASSIGN #START.#KY = #SCROLL-TBL.#KY(#SCROLL-INDX)
1190       ASSIGN #START.#ISN = #SCROLL-TBL.#ISN(#SCROLL-INDX)
1200     END-IF
1210     NEW-READ. REPEAT
1220       IF #FIRST-INPUT THEN
1230         RESET #FIRST-INPUT
1240       END-IF
1250       RESET #END-OF-DATA
1260 *
1270 * Beginning of major READ loop
1280 *
1290       READ-FILE. READ STAFF BY PERSONNEL-ID   /* Change to your view name
1300           STARTING FROM #START.#KY            /* and primary key name.
1310           ENDING AT #END.#KY
1320         ASSIGN #INSIDE-READ-LOOP = TRUE
1330         ASSIGN #KEY = STAFF.PERSONNEL-ID      /* Modify to your view.
1340         DECIDE FOR FIRST CONDITION
1350           WHEN #FORWARD IGNORE
1360           WHEN #MATCH-FOUND IGNORE
1370           WHEN *ISN = #START.#ISN
1380             ASSIGN #MATCH-FOUND = TRUE
1390           WHEN NONE
1400             IF NOT #FIRST-ISN-FOUND THEN
1410               ASSIGN #FIRST.#ISN = *ISN(READ-FILE.)
1420               ASSIGN #FIRST.#KY = #KEY
1430               ASSIGN #FIRST-ISN-FOUND = TRUE
1440             END-IF
1450             IF #KEY GT #START.#KY THEN
1460               ASSIGN #SCROLL-TBL.#KY(#SCROLL-INDX) = #FIRST.#KY
1470               ASSIGN #SCROLL-TBL.#ISN(#SCROLL-INDX) = #FIRST.#ISN
1480               PERFORM EXIT-READ-LOOP
1490             ELSE
1500               REJECT #UNCONDITIONALLY
1510             END-IF
1520         END-DECIDE
1530 *
1540 * Tune this WRITE statement to your application needs.
1550 * "Header" and "titles" are generated in the AT TOP block.
1560 * A DISPLAY can be used but keep in mind the headers generated
1570 * when setting up your screen (or specify NOHDR).
1580 *
1590         COMPRESS STAFF.NAME STAFF.FIRST-NAME INTO STAFF.NAME
1600         WRITE NOTITLE NOHDR
1610           1X STAFF.PERSONNEL-ID STAFF.NAME STAFF.JOB-TITLE
1620           STAFF.SALARY(1) (EM=ZZZ,ZZZ,ZZZ)
1630 *
1640         AT TOP OF PAGE
1650           ASSIGN #TOP-OF-PAGE = TRUE
1660           ASSIGN #BKWD-TABLE-VALUE = 1
1670           IF #FORWARD AND #INSIDE-READ-LOOP THEN
1680             ADD 1 TO #SCROLL-INDX
1690             IF #SCROLL-INDX GT #MAX-PAGES THEN
1700               ASSIGN #SCROLL-INDX = #MAX-PAGES
1710               MOVE BY NAME #SCROLL-TBL(2:#MAX-PAGES)
1720                 TO #SCROLL-TBL(1:#MAX-PAGES - 1)
1730             END-IF
1740             ASSIGN #SCROLL-TBL.#KY(#SCROLL-INDX) = #KEY
1750             ASSIGN #SCROLL-TBL.#ISN(#SCROLL-INDX) = *ISN(READ-FILE.)
1760           END-IF
1770 *
1780 * Here's the spot where you'll set a title and header(s).
1790 * You'll have to test and balance the title and header(s) with the
1800 * actual scrolling region and amount of data displayed
1810 *
1820 * Since this "replicates" a map, I tried to keep the "title" in line
1830 * with some "standards". Use of the PRINT statement gave me a little
1840 * flexibility in dealing with text like "Page" "of" "pages" and
1850 * worked out very nicely. You'll need to keep the two variables,
1860 * #SCROLL-INDX and #TOTAL=PAGES in your header if you want to maintain
1870 * this information as your user scrolls forward and backward.
1880 *
1890       PRINT *DATX *TIMX(EM=ZH:IIAP)
1900             28T '* CON - Screen Titling *' 71T *PROGRAM
1910             / *INIT-USER
1920             28T '*  Function Subheader  *'
1930             61T 'Page' #SCROLL-INDX (AD=L) 'of'       /* Don't change!
1940             #TOTAL-PAGES (AD=L)'pages'                /* Don't change!
1950             // 1X 'Employee' 63T 'Annual'
1960             /  4X 'ID    Name' 32T 'Job' 63T 'Salary'
1970         END-TOPPAGE
1980         AT END OF PAGE
1990           REPEAT UNTIL *LINE-COUNT GT 20
2000             SKIP 1
2010           END-REPEAT
2020 *
2030 * If you changed the pagesize parameter than you'll need to adjust the
2040 * REPEAT statement above
2050 *
2060 * Tune this INPUT statement to your application
2070 * This is the "prompt" at the bottom of each page.
2080 * The PS parameter must set to one less line to accommodate
2090 * this INPUT statement.
2100 *
2110           INPUT (AD=ITL'_' CV=#SCR-CV SG=OFF IP=OFF ZP=OFF)
2120             1X #INPUT.PERSONNEL-ID(CV=#KEY-CV) '<<< New Personnel ID'
2130               3X 'PF3-Quit PF6-Top PF7-Backward PF8-Forward'
2140 *
2150 * User defined processing
2160 *
2170           IF #INPUT.PERSONNEL-ID = SCAN '.'
2180             ESCAPE ROUTINE
2190           END-IF
2200 *
2210           IF #INPUT.PERSONNEL-ID GT ' '
2220             IF #INPUT.PERSONNEL-ID IS (N8)
2230               RESET #FIRST-ISN-FOUND #MATCH-FOUND #SCROLL-INDX
2240               #INCOMING-ID := #INPUT.PERSONNEL-ID
2250               ESCAPE BOTTOM(PROG.)
2260             ELSE REINPUT 'New Personnel must be numeric; top = PF6'
2270             END-IF
2280           END-IF
2290 *
2300 * Any additional PF key selectivity should be inserted here as needed.
2310 *
2320           DECIDE ON FIRST *PF-KEY
2330             VALUE 'PF7'
2340               IF #SCROLL-INDX LE #BKWD-TABLE-VALUE THEN
2350 *
2360 * You can modify the REINPUT message to your application
2370 *
2380                 REINPUT 'Top of current scroll session reached' ALARM
2390               END-IF
2400               SUBTRACT #BKWD-TABLE-VALUE FROM #SCROLL-INDX
2410             VALUE 'PF6'
2420               RESET #FIRST-ISN-FOUND #MATCH-FOUND #SCROLL-INDX
2430 **            #INCOMING-ID := #INPUT.PERSONNEL-ID   /* User your primary
2440               ESCAPE BOTTOM(PROG.)                  /* key here.
2450             VALUE 'PF3'
2460               ESCAPE ROUTINE
2470             VALUE 'PF10','PF11'
2480               IGNORE
2490         ANY ASSIGN #FORWARD = FALSE
2500               PERFORM EXIT-READ-LOOP
2510             NONE
2520 *
2530 * You can modify the REINPUT message to your application
2540 *
2550               IF NOT(*PF-KEY = 'ENTR' OR = 'PF7' OR = 'PF8')
2560                 REINPUT 'Invalid program function key'
2570               END-IF
2580               ASSIGN #FORWARD = TRUE
2590           END-DECIDE
2600           DECIDE FOR FIRST CONDITION
2610             WHEN #KEY-CV MODIFIED
2620               RESET #SCROLL-INDX
2630               ASSIGN #FORWARD = TRUE
2640             WHEN ANY
2650               PERFORM EXIT-READ-LOOP
2660             WHEN NONE
2670 *
2680 * You can modify the REINPUT message to your application
2690 *
2700               IF #END-OF-DATA THEN  /* You can modify this message.
2710                 REINPUT 'End of data reached, enter new start value'
2720               END-IF
2730           END-DECIDE
2740         END-ENDPAGE
2750       END-READ
2760       ASSIGN #INSIDE-READ-LOOP = FALSE
2770       ASSIGN #END-OF-DATA = TRUE
2780       ASSIGN #TOP-OF-PAGE = FALSE
2790 *
2800 * You can modify these WRITE messages to your application
2810 *
2820       IF *COUNTER(READ-FILE.) = 0
2830         WRITE NOHDR 20T '***** No Matching Records *****'
2840       ELSE WRITE NOHDR 27T '***** End of Data *****'
2850       END-IF
2860       IF #TOP-OF-PAGE = TRUE THEN
2870         ASSIGN #BKWD-TABLE-VALUE = 0
2880       END-IF
2890       NEWPAGE
2900 *
2910 * Set the FIND-FILE statement to your primary file and key
2920 * This subroutine sets up the "Page n of n pages" screen message
2930 *
2940       DEFINE PAGINATION-SETUP
2950       FIND-FILE. FIND NUMBER STAFF WITH PERSONNEL-ID
2960         = #START.#KY THRU #END.#KY
2970       DIVIDE 15 INTO *NUMBER(FIND-FILE.)
2980         GIVING #TOTAL-PAGES REMAINDER #LAST-PAGE
2990       IF #LAST-PAGE GT 0
3000         ADD 1 TO #TOTAL-PAGES
3010       END-IF
3020       END-SUBROUTINE
3030       DEFINE SUBROUTINE EXIT-READ-LOOP
3040       ESCAPE BOTTOM(NEW-READ.) IMMEDIATE
3050       END-SUBROUTINE
3060 *
3070     END-REPEAT /* NEW-READ.
3080   END-REPEAT /* NEW-PROG.
3090 END-REPEAT /* MAIN-REPEAT.
3100 END
***** End of list *****
Check and run:

 
#INCOMING-ID 20000000

 

Type a starting value like the value above
 08/01/01  3:41PM           * CON - Screen Titling *                   TESTCON1 
 DDHAMIL                    *  Function Subheader  *         Page 1 of 21 pages 
                                                                                
  Employee                                                     Annual           
     ID    Name                 Job                            Salary           
  20000000 SMITH JUNE           DBA                            35,200           
  20000100 STANWOOD VERNON      PROGRAMMER                     16,000           
  20000200 WOOLSEY LOUISE       SALES PERSON                   28,600           
  20000300 SPIEGEL FRANCOISE    SALES PERSON                   30,800           
  20000400 SMITH MARK           SALES PERSON                   33,000           
  20000500 SVIRIDOV SEYMOUR     MANAGER                        39,600           
  20000600 MELKANOFF CLAUDE     MANAGER                        40,700           
  20000700 HALL JENNIFER        ANALYST                        45,100           
  20000800 JONES LILLY          SECRETARY                      26,400           
  20000900 WYLLIS HAZEL         DIRECTOR                       66,000           
  20001000 SMITH LOUISE         MANAGER                        40,150           
  20001100 JONES EDWARD         DBA                            41,360           
  20001200 SCHOEN TRACY         PROGRAMMER                     34,650           
  20001300 COLVILLE JR JOHN     PROGRAMMER                     35,200           
  20001400 KING HELEN           SALES PERSON                   33,000           
  ________ <<< New Personnel ID   PF3-Quit PF6-Top PF7-Backward PF8-Forward     
                                                                                
Press the ENTER key.

 08/01/01  3:42PM           * CON - Screen Titling *                   TESTCON1 
 DDHAMIL                    *  Function Subheader  *         Page 1 of 16 pages 
                                                                                
  Employee                                                     Annual           
     ID    Name                 Job                            Salary           
  20007000 COHEN JOHN           SECRETARY                      13,000           
  20007200 SENKO JEFFERSON      TRAINEE                        25,300           
  20007300 ALEXANDER PHIL       DIRECTOR                       52,800           
  20007400 SCHOEN BILL          MANAGER                        46,750           
  20007500 JONES VIRGINIA       MANAGER                        50,600           
  20007600 BORKO ARTHUR         PROGRAMMER                     36,850           
  20007700 KERR-WALLER SHIRLY   PROGRAMMER                     37,400           
  20007800 HELL JOHN            SALES PERSON                   41,800           
  20007900 WILSON LINDA         MANAGER                        44,000           
  20008000 WEINBERG CHARLY      ANALYST                        37,400           
  20008100 SWID SHIRLY          ANALYST                        38,500           
  20008200 HIGGONET DAN         SECRETARY                      19,800           
  20008300 RAMAMOORTHY TY       PRESIDENT                      83,600           
  20008400 JONES MARSHA         DIRECTOR                       55,000           
  20008500 KOLENCE MARSHA       MANAGER                        48,400           
  ________ <<< New Personnel ID   PF3-Quit PF6-Top PF7-Backward PF8-Forward     
                                                                                
                                                                                

 

So let's change TESTCON1 to do the same thing for VEHICLES.
 
As we walk down through the program, let's change the view to VEHICLES with the appropriate fields:
 
0240 DEFINE DATA /* GLOBAL USING                                      
0250 LOCAL                                                            
0260 1 STAFF VIEW OF EMPLOYEES /* Replace this view with your data.   
0270   2 PERSONNEL-ID                                                 
0280   2 NAME                                                         
0290   2 FIRST-NAME                                                   
0300   2 JOB-TITLE                                                    
0310   2 SALARY(1)                                                    
 
0240 DEFINE DATA /* GLOBAL USING                                      
0250 LOCAL                                                            
0260 1 CARS VIEW OF VEHICLES /* Replace this view with your data.   
0270   2 PERSONNEL-ID                                                 
0280   2 MAKE                                                         
0290   2 MODEL                                                   
0300   2 COLOR                                                    
0310   2 YEAR
Since the key on both files is the same, this statement doesn't need change:
0410 *                                                              
0420 * Set #FIRST.#KY to the format and length of your primary key  
0430 *                                                              
0440 1 #FIRST                                                       
0450   2 #KY(A08)                                                    
Same for this section of code as well:
0510 * Set the level 2 variable to the name, format and length of your 
0520 * primary key                                                     
0530 *                                                                 
0540 1 #INPUT                                                          
0550   2 PERSONNEL-ID(A08)                                             
and here:
0600 * Set #KEY to the same format and length of your primary key  
0610 *                                                             
0620 1 #KEY(A08)                                                   
and again here:
0760 1 #START                                                
0770   2 #KY(A08)                      /* Same note as above 
0780   2 #ISN(P10)                                           
0790 1 #END             
0800   2 #KY(A08)       
0810 1 #TOP-OF-PAGE(L)  
0820 1 #TOTAL-PAGES(P3) 
0830 1 #LAST-PAGE(P3)   
0840 1 #INCOMING-ID(A8)
 
1100 *                                                               
1110 * Set the first ASSIGN statement to the field that provides the 
1120 * starting value                                                
1130 *                                                               
1140     IF #FORWARD THEN                                            
1150       ASSIGN #START.#KY = #INPUT.PERSONNEL-ID                   
1160       ASSIGN #MATCH-FOUND = TRUE                                
1170     ELSE                                                        
Change the READ to match your user view name and primary key:
1260 *                                             
1270 * Beginning of major READ loop                
1280 *                                             
1290       READ-FILE. READ STAFF BY PERSONNEL-ID    
1300           STARTING FROM #START.#KY            
1310           ENDING AT #END.#KY
1320         ASSIGN #INSIDE-READ-LOOP = TRUE 
1330         ASSIGN #KEY = STAFF.PERSONNEL-ID                   
 
1290       READ-FILE. READ CARS BY PERSONNEL-ID    
 
1330         ASSIGN #KEY = CARS.PERSONNEL-ID                   
 
 
1530 *                                                                  
1540 * Tune this WRITE statement to your application needs.             
1550 * "Header" and "titles" are generated in the AT TOP block.         
1560 * A DISPLAY can be used but keep in mind the headers generated     
1570 * when setting up your screen (or specify NOHDR).                  
1580 *                                                                  
1590         COMPRESS STAFF.NAME STAFF.FIRST-NAME INTO STAFF.NAME       
1600         WRITE NOTITLE NOHDR                                        
1610           1X STAFF.PERSONNEL-ID STAFF.NAME STAFF.JOB-TITLE         
1620           STAFF.SALARY(1) (EM=ZZZ,ZZZ,ZZZ)                         
 
 
1590 **      COMPRESS STAFF.NAME STAFF.FIRST-NAME INTO STAFF.NAME       
1600         WRITE NOTITLE NOHDR                                        
1610           1X CARS.PERSONNEL-ID CARS.MAKE CARS.MODEL CARS.COLOR     
1620           CARS.YEAR
Change the header information:
1890       PRINT *DATX *TIMX(EM=ZH:IIAP)                                    
1900             28T '* CON - Screen Titling *' 71T *PROGRAM                
1910             / *INIT-USER                                               
1920             28T '*  Function Subheader  *'                             
1930             61T 'Page' #SCROLL-INDX (AD=L) 'of'       /* Don't change! 
1940             #TOTAL-PAGES (AD=L)'pages'                /* Don't change! 
1950             // 1X 'Employee' 63T 'Annual'                              
1960             /  4X 'ID    Name' 32T 'Job' 63T 'Salary'                  
1970         END-TOPPAGE                                                    
Here's where you need to make adjustments for your detail output:
1890       PRINT *DATX *TIMX(EM=ZH:IIAP)                                    
1900             28T '* CON - Screen Titling *' 71T *PROGRAM                
1910             / *INIT-USER                                               
1920             28T '*  Function Subheader  *'                             
1930             61T 'Page' #SCROLL-INDX (AD=L) 'of'       /* Don't change! 
1940             #TOTAL-PAGES (AD=L)'pages'                /* Don't change! 
1950             // 1X 'Owner'                              
1960             /  4X 'ID' 10X 'Make' 32T 'Model' 63T 'Color   Year'       
1970         END-TOPPAGE                                                    
Changes to the prompting message are applied in this block of code:
2070 * This is the "prompt" at the bottom of each page.                     
2080 * The PS parameter must set to one less line to accommodate            
2090 * this INPUT statement.                                                
2100 *                                                                      
2110           INPUT (AD=ITL'_' CV=#SCR-CV SG=OFF IP=OFF ZP=OFF)            
2120             1X #INPUT.PERSONNEL-ID(CV=#KEY-CV) '<<< New Personnel ID'  
2130               3X 'PF3-Quit PF6-Top PF7-Backward PF8-Forward'           
2140 *                                                                      
 
2120             1X #INPUT.PERSONNEL-ID(CV=#KEY-CV) '<<< New Owner ID'  
Note: if you used a different key then you'd have to replace all
instances of #INPUT.PERSONNEL with your key #INPUT.yourkeyname throughout
the program.
You might consider changing this error message to match your key field:
2210           IF #INPUT.PERSONNEL-ID GT ' '                             
2220             IF #INPUT.PERSONNEL-ID IS (N8)                          
2230               RESET #FIRST-ISN-FOUND #MATCH-FOUND #SCROLL-INDX      
2240               #INCOMING-ID := #INPUT.PERSONNEL-ID                   
2250               ESCAPE BOTTOM(PROG.)                                  
2260             ELSE REINPUT 'New Personnel must be numeric; top = PF6' 
2270             END-IF                                                  
2280           END-IF                                                    
 
2260             ELSE REINPUT 'New Owner ID must be numeric; top = PF6' 
Modify the user view in this block as well:
2900 *                                                                 
2910 * Set the FIND-FILE statement to your primary file and key        
2920 * This subroutine sets up the "Page n of n pages" screen message  
2930 *                                                                 
2940       DEFINE PAGINATION-SETUP                                     
2950       FIND-FILE. FIND NUMBER STAFF WITH PERSONNEL-ID              
2960         = #START.#KY THRU #END.#KY                                
2970       DIVIDE 15 INTO *NUMBER(FIND-FILE.)                          
 
2950       FIND-FILE. FIND NUMBER CARS WITH PERSONNEL-ID              
Check and run:

 
#INCOMING-ID 20000000

 

Type a starting value again and press the ENTER key.

 08/01/01  4:09PM           * CON - Screen Titling *                   TESTCONX 
 DDHAMIL                    *  Function Subheader  *         Page 1 of 23 pages 
                                                                                
  Owner                                                                         
     ID          Make           Model                          Color   Year     
  20000000 JAGUAR               XJ 6                 BLUE       83              
  20000100 CHRYSLER             PLYMOUTH             BLACK      83              
  20000100 FORD                 MERCURY              BLACK      86              
  20000200 FORD                 ESCORT               WHITE      83              
  20000300 GENERAL MOTORS       CHEVROLET            GREY       77              
  20000400 FORD                 LTD                  BLACK      84              
  20000500 VOLVO                DL                   GREEN      77              
  20000500 MAZDA                RX 7                 YELLOW     77              
  20000700 CHRYSLER             PLYMOUTH             RED        93              
  20000700 BMW                  2I                   WHITE      95              
  20000700 TOYOTA               CAMRY                GREEN      96              
  20000700 TOYOTA               CELICA               SILVER     97              
  20000800 FORD                 ESCORT               BLACK      79              
  20000800 MG                   MGB G                BLACK      79              
  20000900 FORD                 ESCORT               WHITE      77              
  ________ <<< New Owner ID   PF3-Quit PF6-Top PF7-Backward PF8-Forward     
                                                                                
                                                                                
 

 

As you can see, we need to make a few adjustments to the header but the
essence of the scrolling routine is still in place.
I made these changes to the header lines:
  1950            // 2X 'Owner'                                              
  1960            /  4X 'ID' 10X 'Make' 36T 'Model' 53T 'Color     Year'     
and got the following initial screen:

 08/01/01  4:13PM           * CON - Screen Titling *                   TESTCONX 
 DDHAMIL                    *  Function Subheader  *         Page 1 of 23 pages 
                                                                                
   Owner                                                                        
     ID          Make               Model            Color     Year             
  20000000 JAGUAR               XJ 6                 BLUE       83              
  20000100 CHRYSLER             PLYMOUTH             BLACK      83              
  20000100 FORD                 MERCURY              BLACK      86              
  20000200 FORD                 ESCORT               WHITE      83              
  20000300 GENERAL MOTORS       CHEVROLET            GREY       77              
  20000400 FORD                 LTD                  BLACK      84              
  20000500 VOLVO                DL                   GREEN      77              
  20000500 MAZDA                RX 7                 YELLOW     77              
  20000700 CHRYSLER             PLYMOUTH             RED        93              
  20000700 BMW                  2I                   WHITE      95              
  20000700 TOYOTA               CAMRY                GREEN      96              
  20000700 TOYOTA               CELICA               SILVER     97              
  20000800 FORD                 ESCORT               BLACK      79              
  20000800 MG                   MGB G                BLACK      79              
  20000900 FORD                 ESCORT               WHITE      77              
  ________ <<< New Owner ID   PF3-Quit PF6-Top PF7-Backward PF8-Forward