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:
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:
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
|