home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / text / dodsum93.zip / DOD.LST < prev    next >
File List  |  1993-06-27  |  115KB  |  1,706 lines

  1. DOD.CLA                                                                    CLARION COMPILER v2.0
  2.  
  3.                                                                          6/27/93  7:50 PM PAGE 1
  4.  
  5.    1       DOD          PROGRAM
  6.    2   1                INCLUDE('STD_KEYS.CLA')
  7.    3   1                INCLUDE('CTL_KEYS.CLA')
  8.    4   1                INCLUDE('ALT_KEYS.CLA')
  9.    5   1                INCLUDE('SHF_KEYS.CLA')
  10.    6   1   
  11.    7   1   REJECT_KEY   EQUATE(CTRL_ESC)
  12.    8   1   ACCEPT_KEY   EQUATE(CTRL_ENTER)
  13.    9   1   TRUE         EQUATE(1)
  14.   10   1   FALSE        EQUATE(0)
  15.   11       
  16.   12   1                MAP
  17.   13   2                  PROC(G_OPENFILES)
  18.   14   2                  PROC(MAIN)                        !DIRECTORY ON DISK, WINTER 93
  19.   15   2                  PROC(LISTED_COMP)
  20.   16   2                  PROC(VIEW_COMP)                   !LISTINGS BY COMPANY NAME
  21.   17   2                  PROC(UPDATE_LIST)                 !Company information
  22.   18   2                  PROC(VIEW_PROD)                   !VIEW COMPANIES BY PRODUCT
  23.   19   2                  PROC(VIEW_STATE)                  !VIEW COMPANIES BY LOCATION
  24.   20   2                  PROC(VIEW_CATEGO)                 !PRODUCT AND SERVICE CATEGORIES
  25.   21   2                  PROC(UPDATE_CAT)                  !Update categories
  26.   22   2                  PROC(PRINT_RECORD)                !Directory on disk listing
  27.   23   2                  PROC(PRINT_CAT)                   !Print categories
  28.   24   2                .
  29. DOD.CLA                                                                    CLARION COMPILER v2.0
  30.  
  31. FILE LAYOUTS                                                             6/27/93  7:50 PM PAGE 2
  32.  
  33.   26   1   LISTINGS     FILE,PRE(LIS),CREATE,RECLAIM
  34.   27   2   COMP_KEY       KEY(LIS:COMPANY_NAME),DUP,NOCASE,OPT
  35.   28   2   PRODUCT_KEY    KEY(LIS:PRODUCT),DUP,NOCASE,OPT
  36.   29   2   STATE_KEY      KEY(LIS:STATE),DUP,NOCASE,OPT
  37.   30   2   COMMENTS       MEMO(3000)                        !comments
  38.   31   2   RECORD         RECORD
  39.   32   3   COMPANY_NAME     STRING(30)                      !company name
  40.   33   3   CONTACT_NAME     STRING(35)                      !contact person
  41.   34   3   PRODUCT          STRING(19)                      !product
  42.   35   3   ADDRESS_1        STRING(30)                      !address
  43.   36   3   ADDRESS_2        STRING(20)                      !box or suite #
  44.   37   3   CITY             STRING(25)                      !city
  45.   38   3   STATE            STRING(2)                       !state
  46.   39   3   ZIP              STRING(10)
  47.   40   3   PHONE            DECIMAL(12,0)                   !phone
  48.   41   3   FAX              DECIMAL(12,0)                   !fax
  49.   42   3   E_MAIL           STRING(30)                      !e-mail
  50.   43   3   DESCRIPTION      STRING(50)                      !product/service description
  51.   44   3   REBATE           STRING(50)                      !rebate/discount or free item
  52.   45   3   EXPIRES          LONG                            !expiration date
  53.   46   3                . .
  54.   47   1                GROUP,OVER(LIS:COMMENTS)
  55.   48   2   LIS_MEMO_ROW   STRING(50),DIM(60)
  56.   49   2                .
  57.   50       
  58.   51   1   INDEX        FILE,PRE(IND),CREATE,RECLAIM
  59.   52   2   CAT_INDEX      KEY(IND:CATEGORY),DUP,NOCASE,OPT
  60.   53   2   RECORD         RECORD
  61.   54   3   CATEGORY         STRING(25)                      !INDEX OF CATEGORIES
  62.   55   3   COMMENT          STRING(30)                      !COMMENT ON CATERGORY
  63.   56   3                . .
  64.   57       
  65. DOD.CLA                                                                    CLARION COMPILER v2.0
  66.  
  67. GLOBAL MEMORY VARIABLES                                                  6/27/93  7:50 PM PAGE 3
  68.  
  69.   59   1   ACTION       SHORT                               !0 = NO ACTION
  70.   60                                                        !1 = ADD RECORD
  71.   61                                                        !2 = CHANGE RECORD
  72.   62                                                        !3 = DELETE RECORD
  73.   63                                                        !4 = LOOKUP FIELD
  74.   64   1                GROUP,PRE(MEM)
  75.   65   2   MESSAGE        STRING(30)                        !Global Message Area
  76.   66   2   PAGE           DECIMAL(3,0)                      !Report Page Number
  77.   67   2   LINE           DECIMAL(3,0)                      !Report Line Number
  78.   68   2   DEVICE         STRING(30)                        !Report Device Name
  79.   69   2                .
  80.   70       
  81. DOD.CLA                                                                    CLARION COMPILER v2.0
  82.  
  83. CODE SECTION                                                             6/27/93  7:50 PM PAGE 4
  84.  
  85.   72   1     CODE
  86.   73   1     SETHUE(7,0)                                    !SET WHITE ON BLACK
  87.   74   1     BLANK                                          !  AND BLANK
  88.   75   1     G_OPENFILES                                    !OPEN OR CREATE FILES
  89.   76   1     SETHUE()                                       !    THE SCREEN
  90.   77   1     MAIN                                           !DIRECTORY ON DISK, WINTER 93
  91.   78   1     RETURN                                         !EXIT TO DOS
  92.   79       
  93.   80   1   G_OPENFILES  PROCEDURE                           !OPEN FILES & CHECK FOR ERROR
  94.   81   1     CODE
  95.   82   1     SHOW(25,1,CENTER('OPENING FILE: ' & 'LISTINGS',80)) !DISPLAY FILE NAME
  96.   83   1     OPEN(LISTINGS)                                 !OPEN THE FILE
  97.   84   1     IF ERROR()                                     !OPEN RETURNED AN ERROR
  98.   85   2       CASE ERRORCODE()                             ! CHECK FOR SPECIFIC ERROR
  99.   86   3       OF 37                                        !  MISSING KEY FILE
  100.   87   3       OROF 46                                      !  KEYS NEED TO BE REQUILT
  101.   88   3         SETHUE(0,7)                                !  BLACK ON WHITE
  102.   89   3         SHOW(25,1,CENTER('REBUILDING KEY FILES FOR LISTINGS',80)) !INDICATE MSG
  103.   90   3         BUILD(LISTINGS)                            !  CALL THE BUILD PROCEDURE
  104.   91   3         SETHUE(7,0)                                !  WHITE ON BLACK
  105.   92   3         BLANK(25,1,1,80)                           !  BLANK THE MESSAGE
  106.   93   3       OF 2                                         !IF NOT FOUND,
  107.   94   3         CREATE(LISTINGS)                           ! CREATE
  108.   95   3       ELSE                                         ! ANY OTHER ERROR
  109.   96   3         LOOP;STOP('LISTINGS: ' & ERROR()).         !  STOP EXECUTION
  110.   97   3     . .
  111.   98       
  112.   99   1     SHOW(25,1,CENTER('OPENING FILE: ' & 'INDEX',80)) !DISPLAY FILE NAME
  113.  100   1     OPEN(INDEX)                                    !OPEN THE FILE
  114.  101   1     IF ERROR()                                     !OPEN RETURNED AN ERROR
  115.  102   2       CASE ERRORCODE()                             ! CHECK FOR SPECIFIC ERROR
  116.  103   3       OF 37                                        !  MISSING KEY FILE
  117.  104   3       OROF 46                                      !  KEYS NEED TO BE REQUILT
  118.  105   3         SETHUE(0,7)                                !  BLACK ON WHITE
  119.  106   3         SHOW(25,1,CENTER('REBUILDING KEY FILES FOR INDEX',80)) !INDICATE MSG
  120.  107   3         BUILD(INDEX)                               !  CALL THE BUILD PROCEDURE
  121.  108   3         SETHUE(7,0)                                !  WHITE ON BLACK
  122.  109   3         BLANK(25,1,1,80)                           !  BLANK THE MESSAGE
  123.  110   3       OF 2                                         !IF NOT FOUND,
  124.  111   3         CREATE(INDEX)                              ! CREATE
  125.  112   3       ELSE                                         ! ANY OTHER ERROR
  126.  113   3         LOOP;STOP('INDEX: ' & ERROR()).            !  STOP EXECUTION
  127.  114   3     . .
  128.  115       
  129.  116   1     BLANK                                          !BLANK THE SCREEN
  130.  117       
  131.  118       
  132. DOD.CLA                                                                    CLARION COMPILER v2.0
  133.  
  134. DIRECTORY ON DISK, WINTER 93                                             6/27/93  7:50 PM PAGE 5
  135.  
  136.  120   1   MAIN         PROCEDURE
  137.  121       
  138.  122   1   SCREEN       SCREEN       PRE(SCR),WINDOW(17,50),HUE(15,4)
  139.  123   2                  ROW(7,3)   PAINT(1,14),HUE(15,1)
  140.  124   2                  ROW(7,38)  PAINT(1,1),HUE(15,1)
  141.  125   2                  ROW(13,1)  PAINT(5,50),HUE(15,2)
  142.  126   2                  ROW(15,2)  PAINT(2,48),HUE(10,5)
  143.  127   2                  ROW(2,49)  PAINT(3,1),HUE(10,3)
  144.  128   2                  ROW(11,49) PAINT(2,1),HUE(30,0)
  145.  129   2                  ROW(11,2)  PAINT(2,47),HUE(14,0)
  146.  130   2                  ROW(2,2)   PAINT(3,47),HUE(0,3)
  147.  131   2                  ROW(1,1)   STRING('┌─{48}┐'),REV
  148.  132   2                  ROW(2,1)   REPEAT(4),EVERY(2);STRING('│<0{48}>│'),REV .
  149.  133   2                  ROW(3,1)   REPEAT(3),EVERY(4);STRING('│<0{48}>│'),REV .
  150.  134   2                  ROW(5,1)   REPEAT(2),EVERY(5);STRING('│─{48}┤'),REV .
  151.  135   2                  ROW(9,1)   REPEAT(2),EVERY(3);STRING('│<0{48}>│'),REV .
  152.  136   2                  ROW(13,1)  REPEAT(4);STRING('│<0{48}>│'),REV .
  153.  137   2                  ROW(17,1)  STRING('└─{48}┘'),REV
  154.  138   2                  ROW(2,12)  STRING('DIRECTORY ON DISK, SUMMER 93')
  155.  139   2                  ROW(3,11)  STRING('(c) Copyright 1993, INFOSERVE')
  156.  140   2                  ROW(4,15)  STRING('All rights reserved')
  157.  141   2                  ROW(9,14)  STRING('Use arrow keys to select')
  158.  142   2                  ROW(11,13) STRING('You may copy and pass on to')
  159.  143   2                  ROW(12,15) STRING('Friends and associates')
  160.  144   2                  ROW(13,7)  STRING('To get listed, see file "getlistd.dod"')
  161.  145   2                  ROW(14,8)  STRING('To subscribe, see file "subcribe.dod"')
  162.  146   2                  ROW(15,2)  STRING('INFOSERVE, (904)-724-6707, Compuserve 76440' |
  163.  147   2                               & ',1477')
  164.  148   2                  ROW(16,11) STRING('Prodigy wbmx59a,   AOL dodbargain')
  165.  149   2                             ENTRY,USE(?FIRST_FIELD)
  166.  150   2                             MENU,USE(MENU_FIELD"),REQ
  167.  151   3                  ROW(7,3)     STRING('VIEW COMPANIES'),ENH,SEL(0,2)
  168.  152   3                    COL(38)    STRING('EXIT TO DOS'),ENH,SEL(0,2)
  169.  153   3                .            .
  170.  154       
  171. DOD.CLA                                                                    CLARION COMPILER v2.0
  172.  
  173. DIRECTORY ON DISK, WINTER 93                                             6/27/93  7:50 PM PAGE 6
  174.  
  175.  156   1     CODE
  176.  157   1     OPEN(SCREEN)                                   !OPEN THE MENU SCREEN
  177.  158   1     SETCURSOR                                      !TURN OFF ANY CURSOR
  178.  159   1     LOOP                                           !LOOP UNTIL USER EXITS
  179.  160   2       ALERT                                        !TURN OFF ALL ALERTED KEYS
  180.  161   2       ALERT(REJECT_KEY)                            !ALERT SCREEN REJECT KEY
  181.  162   2       ALERT(ACCEPT_KEY)                            !ALERT SCREEN ACCEPT KEY
  182.  163   2       ACCEPT                                       !READ A FIELD OR MENU CHOICE
  183.  164   2       IF KEYCODE() = REJECT_KEY THEN RETURN.       !RETURN ON SCREEN REJECT
  184.  165       
  185.  166   2       EDIT_RANGE# = FIELD()                        !SET ONE FIELD EDIT RANGE
  186.  167   2       IF KEYCODE() = ACCEPT_KEY                    !ON SCREEN ACCEPT KEY
  187.  168   3         UPDATE                                     !  MOVE ALL FIELDS FROM SCREEN
  188.  169   3         EDIT_RANGE# = ?MENU_FIELD" - 1             !  AND EDIT REMAINING FIELDS
  189.  170   3         SELECT(?MENU_FIELD")                       !  IF OK THEN START HERE NEXT
  190.  171   3       .                                            !
  191.  172       
  192.  173   2       LOOP FIELD# = FIELD() TO EDIT_RANGE#         !EDIT FIELDS IN THE EDIT RANGE
  193.  174       
  194.  175   3         CASE FIELD#                                !JUMP TO FIELD EDIT ROUTINE
  195.  176   4         OF ?FIRST_FIELD                            !FROM THE FIRST FIELD
  196.  177   4           IF KEYCODE() = ESC_KEY THEN RETURN.      !  RETURN ON ESC KEY
  197.  178       
  198.  179   4         OF ?MENU_FIELD"                            !FROM THE MENU FIELD
  199.  180   4           EXECUTE CHOICE()                         !  CALL THE SELECTED PROCEDURE
  200.  181   5             LISTED_COMP                            !
  201.  182   5             RETURN
  202.  183   5     . . . .
  203. DOD.CLA                                                                    CLARION COMPILER v2.0
  204.  
  205. DIRECTORY ON DISK, WINTER 93                                             6/27/93  7:50 PM PAGE 7
  206.  
  207.  185   1   LISTED_COMP  PROCEDURE
  208.  186       
  209.  187   1   SCREEN       SCREEN       PRE(SCR),WINDOW(20,68),HUE(7,0)
  210.  188   2                  ROW(16,2)  PAINT(2,66),HUE(14,5)
  211.  189   2                  ROW(2,2)   PAINT(1,66),HUE(15,4)
  212.  190   2                  ROW(3,2)   PAINT(3,66),HUE(14,1)
  213.  191   2                  ROW(6,2)   PAINT(2,66),HUE(14,6)
  214.  192   2                  ROW(18,2)  PAINT(2,66),HUE(15,3)
  215.  193   2                  ROW(1,1)   STRING('╔═{66}╗'),REV
  216.  194   2                  ROW(2,1)   REPEAT(6);STRING('║<0{66}>║'),REV .
  217.  195   2                  ROW(8,1)   STRING('║<7{67}>'),REV
  218.  196   2                  ROW(9,1)   REPEAT(6);STRING('║<0{66}>║'),REV .
  219.  197   2                  ROW(15,1)  STRING('<7{68}>'),REV
  220.  198   2                  ROW(16,1)  REPEAT(4);STRING('║<0{66}>║'),REV .
  221.  199   2                  ROW(20,1)  STRING('╚═{66}╝'),REV
  222.  200   2                  ROW(2,11)  STRING('WELCOME TO THE DIRECTORY ON DISK, SUMMER 93' |
  223.  201   2                               & ' ISSUE')
  224.  202   2                  ROW(3,5)   STRING('All listed companies offer a rebate/discount'|
  225.  203   2                               & ' or a Free sample')
  226.  204   2                  ROW(4,26)  STRING('of their products.')
  227.  205   2                  ROW(5,6)   STRING('Save hundreds of dollars by shopping through'|
  228.  206   2                               & ' the directory')
  229.  207   2                  ROW(6,2)   STRING('For updates and changes on the offers '      |
  230.  208   2                               & 'listed, call The Bargain bbs')
  231.  209   2                  ROW(7,17)  STRING('904-724-3108, wildcat ANSI, 2400.9600')
  232.  210   2                  ROW(16,10) STRING('If you sell a product or service, get listed'|
  233.  211   2                               & ' NOW!')
  234.  212   2                  ROW(17,13) STRING('Limited disk space per issue, don''t miss '  |
  235.  213   2                               & 'out.')
  236.  214   2                  ROW(18,5)  STRING('For more FREEBIES! Subscribe to The D.O.D. &'|
  237.  215   2                               & ' The Bargain BBS')
  238.  216   2                  ROW(19,23) STRING('Windows version available')
  239.  217   2                             ENTRY,USE(?FIRST_FIELD)
  240.  218   2                             MENU,USE(MENU_FIELD"),REQ
  241.  219   3                  ROW(10,3)    STRING('View companies by name'),ENH,SEL(0,2)
  242.  220   3                    COL(40)    STRING('View companies by product'),ENH,SEL(0,2)
  243.  221   3                  ROW(12,3)    STRING('View companies by location'),ENH,SEL(0,2)
  244.  222   3                    COL(40)    STRING('View categories'),ENH,SEL(0,2)
  245.  223   3                    COL(59)    STRING('Exit'),ENH,SEL(0,2)
  246.  224   3                .            .
  247.  225       
  248. DOD.CLA                                                                    CLARION COMPILER v2.0
  249.  
  250. DIRECTORY ON DISK, WINTER 93                                             6/27/93  7:50 PM PAGE 8
  251.  
  252.  227   1     CODE
  253.  228   1     OPEN(SCREEN)                                   !OPEN THE MENU SCREEN
  254.  229   1     SETCURSOR                                      !TURN OFF ANY CURSOR
  255.  230   1     LOOP                                           !LOOP UNTIL USER EXITS
  256.  231   2       ALERT                                        !TURN OFF ALL ALERTED KEYS
  257.  232   2       ALERT(REJECT_KEY)                            !ALERT SCREEN REJECT KEY
  258.  233   2       ALERT(ACCEPT_KEY)                            !ALERT SCREEN ACCEPT KEY
  259.  234   2       ACCEPT                                       !READ A FIELD OR MENU CHOICE
  260.  235   2       IF KEYCODE() = REJECT_KEY THEN RETURN.       !RETURN ON SCREEN REJECT
  261.  236       
  262.  237   2       EDIT_RANGE# = FIELD()                        !SET ONE FIELD EDIT RANGE
  263.  238   2       IF KEYCODE() = ACCEPT_KEY                    !ON SCREEN ACCEPT KEY
  264.  239   3         UPDATE                                     !  MOVE ALL FIELDS FROM SCREEN
  265.  240   3         EDIT_RANGE# = ?MENU_FIELD" - 1             !  AND EDIT REMAINING FIELDS
  266.  241   3         SELECT(?MENU_FIELD")                       !  IF OK THEN START HERE NEXT
  267.  242   3       .                                            !
  268.  243       
  269.  244   2       LOOP FIELD# = FIELD() TO EDIT_RANGE#         !EDIT FIELDS IN THE EDIT RANGE
  270.  245       
  271.  246   3         CASE FIELD#                                !JUMP TO FIELD EDIT ROUTINE
  272.  247   4         OF ?FIRST_FIELD                            !FROM THE FIRST FIELD
  273.  248   4           IF KEYCODE() = ESC_KEY THEN RETURN.      !  RETURN ON ESC KEY
  274.  249       
  275.  250   4         OF ?MENU_FIELD"                            !FROM THE MENU FIELD
  276.  251   4           EXECUTE CHOICE()                         !  CALL THE SELECTED PROCEDURE
  277.  252   5             VIEW_COMP                              !  LISTINGS BY COMPANY NAME
  278.  253   5             VIEW_PROD                              !  VIEW COMPANIES BY PRODUCT
  279.  254   5             VIEW_STATE                             !  VIEW COMPANIES BY LOCATION
  280.  255   5             VIEW_CATEGO                            !  PRODUCT AND SERVICE CATEGORIES
  281.  256   5             RETURN
  282.  257   5     . . . .
  283. DOD.CLA                                                                    CLARION COMPILER v2.0
  284.  
  285. LISTINGS BY COMPANY NAME                                                 6/27/93  7:50 PM PAGE 9
  286.  
  287.  259   1   VIEW_COMP    PROCEDURE
  288.  260       
  289.  261   1   SCREEN       SCREEN       PRE(SCR),WINDOW(22,77),HUE(15,4)
  290.  262   2                  ROW(19,1)  PAINT(4,77),HUE(10,1)
  291.  263   2                  ROW(1,1)   STRING('┌─{75}┐'),ENH
  292.  264   2                  ROW(2,1)   REPEAT(2),EVERY(2);STRING('│<0{75}>│'),ENH .
  293.  265   2                  ROW(3,1)   REPEAT(2),EVERY(2);STRING('├─{75}┤'),ENH .
  294.  266   2                  ROW(6,1)   REPEAT(13);STRING('│<0{75}>│'),ENH .
  295.  267   2                  ROW(19,1)  STRING('├─{75}┤'),ENH
  296.  268   2                  ROW(20,1)  REPEAT(2);STRING('│<0{75}>│'),ENH .
  297.  269   2                  ROW(22,1)  STRING('└─{75}┘'),ENH
  298.  270   2                  ROW(2,27)  STRING('LISTINGS BY COMPANY NAME')
  299.  271   2                  ROW(4,2)   STRING('Company name {20}Contact person {21}State')
  300.  272   2                  ROW(20,22) STRING('(Use arrow keys to point and select)')
  301.  273   2                  ROW(21,11) STRING('Press(Enter) to view company info. (Esc) for'|
  302.  274   2                               & ' previous menu')
  303.  275   2                             ENTRY,USE(?FIRST_FIELD)
  304.  276   2                             REPEAT(13),EVERY(1),INDEX(NDX)
  305.  277   3                  ROW(6,2)     POINT(1,72),USE(?POINT),ESC(?-1)
  306.  278   3   COMPANY_NAME     COL(2)     STRING(30)
  307.  279   3   CONTACT_NAME     COL(34)    STRING(35)
  308.  280   3   STATE            COL(72)    STRING(2)
  309.  281   3                .            .
  310.  282       
  311.  283   1   NDX          BYTE                                !REPEAT INDEX FOR POINT FIELD
  312.  284   1   ROW          BYTE                                !ACTUAL ROW OF SCROLL AREA
  313.  285   1   COL          BYTE                                !ACTUAL COLUMN OF SCROLL AREA
  314.  286   1   MAX          LONG                                !LESSER OF COUNT AND RECORDS
  315.  287   1   COUNT        BYTE(13)                            !NUMBER OF ITEMS TO SCROLL
  316.  288   1   ROWS         BYTE(13)                            !NUMBER OF ROWS TO SCROLL
  317.  289   1   COLS         BYTE(72)                            !NUMBER OF COLUMNS TO SCROLL
  318.  290       
  319.  291       
  320. DOD.CLA                                                                    CLARION COMPILER v2.0
  321.  
  322. LISTINGS BY COMPANY NAME                                                6/27/93  7:50 PM PAGE 10
  323.  
  324.  293   1     CODE
  325.  294   1     ACTION# = ACTION                               !SAVE ACTION
  326.  295   1     OPEN(SCREEN)                                   !OPEN THE SCREEN
  327.  296   1     SETCURSOR                                      !TURN OFF ANY CURSOR
  328.  297   1     NDX = 1                                        !PUT SELECTOR BAR ON TOP ITEM
  329.  298   1     ROW = ROW(?POINT)                              !REMEMBER TOP ROW AND
  330.  299   1     COL = COL(?POINT)                              !  LEFT COLUMN OF SCROLL AREA
  331.  300   1     IF ACTION = 4                                  !IF THIS IS A LOOKUP REQUEST
  332.  301   2       SET(LIS:COMP_KEY,LIS:COMP_KEY)               !  FIND IT IN THE FILE
  333.  302   2       NEXT(LISTINGS)                               !    AND READ IT
  334.  303   2       POINTER# = POINTER(LISTINGS)                 !  SAVE POINTER TO CURRENT
  335.  304   2       SKIP(LISTINGS,-1)                            !  MAKE IT THE TOP RECORD
  336.  305   2       DO SHOW_TABLE                                !  FILL SCROLL AREA
  337.  306   2       GET(LISTINGS,POINTER#)                       !  AND REFRESH CURRENT RECORD
  338.  307   2     ELSE                                           !OTHERWISE
  339.  308   2       SET(LIS:COMP_KEY)                            !  SET TO FIRST RECORD IN FILE
  340.  309   2       DO SHOW_TABLE                                !  FILL SCROLL AREA
  341.  310   2     .
  342.  311   1     RECORDS# = TRUE                                !INITIALIZE RECORDS FLAG
  343.  312   1     LOOP                                           !LOOP UNTIL USER EXITS
  344.  313   2       MAX = RECORDS(LIS:COMP_KEY)                  !SET LESSER OF FILE RECORD
  345.  314   2       IF MAX > COUNT THEN MAX = COUNT.             !  COUNT AND SCROLL ITEM COUNT
  346.  315   2       ACTION = ACTION#                             !RESTORE ACTION
  347.  316   2       POINTER# = 0                                 !CLEAR ADD POINTER
  348.  317   2       IF ~RECORDS(LIS:COMP_KEY)                    !IF THERE ARE NO RECORDS
  349.  318   3         CLEAR(LIS:RECORD)                          !  CLEAR RECORD AREA
  350.  319   3         ACTION = 1                                 !  SET ACTION TO ADD
  351.  320   3         UPDATE_LIST                                !  CALL FORM FOR FIRST RECORD
  352.  321   3         IF ~RECORDS(LIS:COMP_KEY) THEN BREAK.      !  IF ADD ABORTED THEN EXIT
  353.  322   3         DO SHOW_RECORD
  354.  323   3         SET(LIS:COMP_KEY)                          !  SET TO NEW RECORD
  355.  324   3         DO SHOW_TABLE                              !  FILL SCROLL AREA
  356.  325   3         NDX = 1                                    !  PUT SELECTOR BAR ON TOP ITEM
  357.  326   3         MAX = 1                                    !  MAXIMUM DISPLAYED IS 1
  358.  327   3       .                                            !
  359.  328   2       ALERT                                        !RESET ALERTED KEYS
  360.  329   2       ALERT(REJECT_KEY)                            !ALERT SCREEN REJECT KEY
  361.  330   2       ALERT(ACCEPT_KEY)                            !ALERT SCREEN ACCEPT KEY
  362.  331   2       ACCEPT                                       !READ A FIELD
  363.  332   2       IF KEYCODE() = REJECT_KEY THEN BREAK.        !RETURN ON SCREEN REJECT KEY
  364.  333       
  365.  334   2       EDIT_RANGE# = FIELD()                        !SET ONE FIELD EDIT RANGE
  366.  335   2       IF KEYCODE() = ACCEPT_KEY AND |              !ON SCREEN ACCEPT KEY
  367.  336   2          EDIT_RANGE# <> ?POINT                     ! AND NOT ON THE POINT FIELD
  368.  337   3         UPDATE                                     !  MOVE ALL FIELDS FROM SCREEN
  369.  338   3         EDIT_RANGE# = ?POINT - 1                   !  AND EDIT REMAINING FIELDS
  370.  339   3         SELECT(?POINT)                             !  IF OK THEN START HERE NEXT
  371.  340   3       .                                            !
  372.  341       
  373.  342   2       LOOP FIELD# = FIELD() TO EDIT_RANGE#         !EDIT FIELDS IN THE EDIT RANGE
  374.  343       
  375.  344   3         CASE FIELD#                                !JUMP TO FIELD EDIT ROUTINE
  376.  345   4         OF ?FIRST_FIELD                            !FROM THE FIRST FIELD
  377.  346   4           IF KEYCODE() = ESC_KEY  OR |             !  RETURN ON ESC KEY
  378. DOD.CLA                                                                    CLARION COMPILER v2.0
  379.  
  380. LISTINGS BY COMPANY NAME                                                6/27/93  7:50 PM PAGE 11
  381.  
  382.  347   4              RECORDS# = FALSE                      !  OR NO RECORDS
  383.  348   5                RETURN
  384.  349   5           .
  385.  350   4           RECORDS# = TRUE                          !  ASSUME RECORDS ARE HERE
  386.  351   4         OF ?POINT                                  !FROM THE POINT FIELD
  387.  352   4           CASE KEYCODE()                           !  PROCESS THE KEYSTROKE
  388.  353   5           OF INS_KEY                               !INSERT KEY
  389.  354   5             CLEAR(LIS:RECORD)                      !  CLEAR RECORD AREA
  390.  355   5             ACTION = 1                             !  SET ACTION TO ADD
  391.  356   5             UPDATE_LIST                            !  CALL FORM FOR NEW RECORD
  392.  357   5             IF ~ACTION                             !  IF A NEW RECORD WAS ADDED
  393.  358   6               POINTER# = POINTER(LISTINGS)         !    REMEMBER WHICH RECORD
  394.  359   6               SET(LIS:COMP_KEY,LIS:COMP_KEY)       !    SET TO NEW RECORD AND
  395.  360   6               SKIP(LISTINGS,-1)                    !    MAKE IT THE TOP ITEM
  396.  361   6               DO SHOW_TABLE                        !    DISPLAY THAT PAGE
  397.  362   6             .
  398.  363   5           OF ENTER_KEY                             !ENTER KEY OR
  399.  364   5           OROF ACCEPT_KEY                          !CTRL ENTER KEY
  400.  365   5             DO GET_RECORD                          !  READ THE SELECTED RECORD
  401.  366   5             IF ACTION = 4 AND KEYCODE() = ENTER_KEY!  IF THIS IS A LOOKUP REQUEST
  402.  367   6               ACTION = 0                           !    SET ACTION TO COMPLETE
  403.  368   6               RETURN                               !    AND RETURN TO CALLER
  404.  369   6             .                                      !
  405.  370   5             ACTION = 2                             !  SET ACTION TO CHANGE
  406.  371   5             UPDATE_LIST                            !  CALL FORM TO CHANGE RECORD
  407.  372   5             IF ~ACTION                             !  IF THE RECORD WAS CHANGED
  408.  373   6               POINTER# = POINTER(LISTINGS)         !    REMEMBER WHICH RECORD
  409.  374   6               SET(LIS:COMP_KEY,LIS:COMP_KEY)       !    SET TO CHANGED RECORD
  410.  375   6               SKIP(LISTINGS,-1)                    !    MAKE IT THE TOP ITEM
  411.  376   6               DO SHOW_TABLE                        !    AND DISPLAY THAT PAGE
  412.  377   6             ELSE                                   !  OTHERWISE
  413.  378   6               SKIP(LISTINGS,(MAX-NDX))             !  SKIP BACK TO SAME PAGE
  414.  379   6             .
  415.  380   5           OF DEL_KEY                               !DELETE KEY
  416.  381   5             DO GET_RECORD                          !  READ THE SELECTED RECORD
  417.  382   5             ACTION = 3                             !  SET ACTION TO DELETE
  418.  383   5             UPDATE_LIST                            !  CALL FORM TO DELETE RECORD
  419.  384   5             IF ~ACTION                             !  IF RECORD WAS DELETED
  420.  385   6               SKIP(LISTINGS,-NDX)                  !    SET NEXT RECORD ON TOP
  421.  386   6               DO SHOW_TABLE                        !    AND DISPLAY THAT PAGE
  422.  387   6             ELSE                                   !  OTHERWISE
  423.  388   6               SKIP(LISTINGS,(MAX-NDX))             !  SKIP BACK TO SAME PAGE
  424.  389   6             .
  425.  390   5           OF DOWN_KEY                              !DOWN ARROW KEY
  426.  391   5             IF NOT EOF(LISTINGS)                   !  IF THERE ARE MORE RECORDS
  427.  392   6               SCROLL(ROW,COL,ROWS,COLS,ROWS(?POINT)) !  SCROLL THE SCREEN UP
  428.  393   6               NEXT(LISTINGS)                       !    READ THE BOTTOM RECORD
  429.  394   6               DO SHOW_RECORD                       !    AND DISPLAY IT
  430.  395   6             .
  431.  396   5           OF PGDN_KEY                              !PAGE DOWN KEY
  432.  397   5             IF EOF(LISTINGS)                       !  ON THE LAST PAGE
  433.  398   6               NDX = MAX                            !    POINT TO BOTTOM ITEM
  434.  399   6             ELSE                                   !  OTHERWISE
  435.  400   6               DO SHOW_TABLE                        !    DISPLAY NEXT PAGE
  436. DOD.CLA                                                                    CLARION COMPILER v2.0
  437.  
  438. LISTINGS BY COMPANY NAME                                                6/27/93  7:50 PM PAGE 12
  439.  
  440.  401   6             .
  441.  402   5           OF CTRL_PGDN                             !CTRL-PAGE DOWN KEY
  442.  403   5             NDX = MAX                              !  POINT TO BOTTOM ITEM
  443.  404   5             IF NOT EOF(LISTINGS)                   !  ON THE LAST PAGE
  444.  405   6               SET(LIS:COMP_KEY)                    !    SET TO BOTTOM RECORD MINUS
  445.  406   6               SKIP(LISTINGS,-COUNT)                !      ONE PAGE OF RECORDS
  446.  407   6               DO SHOW_TABLE                        !    DISPLAY THE LAST PAGE
  447.  408   6             .
  448.  409   5           OF UP_KEY                                !UP ARROW KEY
  449.  410   5             SKIP(LISTINGS,-(COUNT-1))              !    SET TO TOP RECORD MINUS 1
  450.  411   5             IF NOT BOF(LISTINGS)                   !  IF THERE IS A PRIOR RECORD
  451.  412   6               PREVIOUS(LISTINGS)                   !     READ THE TOP RECORD
  452.  413   6               IF NOT ERROR()                       !    IF READ A RECORD
  453.  414   7                 SCROLL(ROW,COL,ROWS,COLS,-(ROWS(?POINT)))! SCROLL THE SCREEN DOWN
  454.  415   7                 DO SHOW_RECORD                     !       AND DISPLAY IT
  455.  416   7               ELSIF ERRORCODE() = 33               !    ELSIF RECORD NOT AVAILABLE
  456.  417   7                 NEXT(LISTINGS)                     !       RETRIEVE FIRST ONE
  457.  418   7             . .
  458.  419   5             SKIP(LISTINGS,COUNT-1)                 !  SET RECORD FOR NEXT PAGE
  459.  420       
  460.  421   5           OF PGUP_KEY                              !PAGE UP KEY
  461.  422   5             SKIP(LISTINGS,-(COUNT-1))              !  SET TO TOP RECORD MINUS ONE
  462.  423   5             IF BOF(LISTINGS)                       !  IF THERE IS NO PRIOR RECORD
  463.  424   6               NDX = 1                              !    THEN POINT TO TOP ITEM
  464.  425   6               SKIP(LISTINGS,COUNT-1)               !    SET RECORD FOR THIS PAGE
  465.  426   6             ELSE                                   !  OTHERWISE
  466.  427   6               SKIP(LISTINGS,-(COUNT+1))            !    SET RECORD FOR PRIOR PAGE
  467.  428   6               DO SHOW_TABLE                        !    AND DISPLAY THE PAGE
  468.  429   6             .
  469.  430   5           OF CTRL_PGUP                             !CTRL-PAGE UP KEY
  470.  431   5             SET(LIS:COMP_KEY)                      !  SET TO FIRST RECORD
  471.  432   5             NDX = 1                                !  POINT TO TOP ITEM
  472.  433   5             DO SHOW_TABLE                          !  AND DISPLAY THE PAGE
  473.  434   5           .
  474.  435   4     . . .
  475.  436   1     RETURN                                         !RETURN TO CALLER
  476.  437       
  477.  438   1   SHOW_TABLE ROUTINE                               !DISPLAY A PAGE OF RECORDS
  478.  439   1     SKIP(LISTINGS,COUNT-1)                         !  SET TO THE BOTTOM RECORD
  479.  440   1     IF EOF(LISTINGS)                               !  FOR A PARTIAL PAGE
  480.  441   2       SET(LIS:COMP_KEY)                            !    SET TO THE LAST RECORD
  481.  442   2       SKIP(LISTINGS,-COUNT)                        !    AND BACK UP ONE PAGE
  482.  443   2     ELSE                                           !  OTHERWISE
  483.  444   2       SKIP(LISTINGS,-(COUNT-1))                    !    SET RECORD FOR THIS PAGE
  484.  445   2     .
  485.  446   1     NDX# = NDX                                     !  SAVE REPEAT INDEX
  486.  447   1     LOOP NDX = 1 TO COUNT                          !  LOOP THRU THE SCROLL AREA
  487.  448   2       IF EOF(LISTINGS) THEN BREAK.                 !    BREAK ON END OF FILE
  488.  449   2       NEXT(LISTINGS)                               !    READ THE NEXT RECORD
  489.  450   2       DO SHOW_RECORD                               !    AND DISPLAY IT
  490.  451   2       IF POINTER(LISTINGS) = POINTER#
  491.  452   3         NDX# = NDX                                 !  POINT TO CORRECT RECORD
  492.  453   3     . .
  493.  454   1     NDX = NDX#                                     !  RESTORE REPEAT INDEX
  494. DOD.CLA                                                                    CLARION COMPILER v2.0
  495.  
  496. LISTINGS BY COMPANY NAME                                                6/27/93  7:50 PM PAGE 13
  497.  
  498.  455   1     CLEAR(LIS:RECORD)                              !  CLEAR RECORD AREA
  499.  456   1     IF RECORDS(LIS:COMP_KEY) < COUNT               !  IF RECORDS DO NOT FILL
  500.  457   2        NDX#= RECORDS(LIS:COMP_KEY) * 1             !     GET NUMBER TIMES SIZE
  501.  458   2        BLANK(ROW + NDX#,COL,ROWS-NDX#,COLS)        !     BLANK REMAINING AREA
  502.  459   2     .
  503.  460       
  504.  461   1   SHOW_RECORD ROUTINE                              !DISPLAY A RECORD
  505.  462   1     SCR:COMPANY_NAME = LIS:COMPANY_NAME
  506.  463   1     SCR:CONTACT_NAME = LIS:CONTACT_NAME
  507.  464   1     SCR:STATE = LIS:STATE
  508.  465       
  509.  466   1   GET_RECORD ROUTINE                               !READ SELECTED RECORD
  510.  467   1     SKIP(LISTINGS,-(MAX-NDX+1))                    !  SET TO SELECTED RECORD
  511.  468   1     NEXT(LISTINGS)                                 !    AND READ IT
  512.  469       
  513.  470   1   FIND_RECORD ROUTINE                              !LOCATE REQUESTED RECORD
  514.  471   1     SET(LIS:COMP_KEY,LIS:COMP_KEY)                 !  SET TO REQUESTED RECORD
  515.  472   1     IF EOF(LISTINGS)                               !  IF BEYOND END OF FILE
  516.  473   2       PREVIOUS(LISTINGS)                           !    GET THE LAST RECORD
  517.  474   2     ELSE                                           !  ELSE
  518.  475   2       NEXT(LISTINGS)                               !    READ THIS RECORD
  519.  476   2     .
  520.  477   1     POINTER# = POINTER(LISTINGS)                   !  SAVE ITS RECORD POINTER
  521.  478   1     SKIP(LISTINGS,-1)                              !  MAKE IT THE TOP RECORD
  522.  479   1     DO SHOW_TABLE                                  !  AND FILL THE SCROLL AREA
  523.  480       
  524.  481   1   SAME_PAGE ROUTINE                                !SET TO SAME PAGE ROUTINE
  525.  482   1     POINTER# = POINTER(LISTINGS)                   !  SAVE ITS RECORD POINTER
  526.  483   1     GET(LISTINGS,POINTER#)                         !  GET THE RECORD
  527.  484   1     SET(LIS:COMP_KEY,LIS:COMP_KEY)                 !  SET TO THE SAME RECORD
  528.  485   1     SKIP(LISTINGS,-1)                              !  SKIP TO TOP OF SAME PAGE
  529.  486       
  530. DOD.CLA                                                                    CLARION COMPILER v2.0
  531.  
  532. Company information                                                     6/27/93  7:50 PM PAGE 14
  533.  
  534.  488   1   UPDATE_LIST  PROCEDURE
  535.  489       
  536.  490   1   SCREEN       SCREEN       PRE(SCR),WINDOW(24,69),HUE(15,4)
  537.  491   2                  ROW(22,1)  PAINT(3,69),HUE(10,1)
  538.  492   2                  ROW(1,1)   STRING('┌─{67}┐'),ENH
  539.  493   2                  ROW(2,1)   REPEAT(20);STRING('│<0{67}>│'),ENH .
  540.  494   2                  ROW(22,1)  REPEAT(2);STRING('│<0{67}>│'),ENH .
  541.  495   2                  ROW(24,1)  STRING('└─{67}┘'),ENH
  542.  496   2                  ROW(2,28)  STRING('Company information')
  543.  497   2                  ROW(4,4)   STRING('COMPANY NAME:')
  544.  498   2                  ROW(5,4)   STRING('CONTACT NAME:')
  545.  499   2                  ROW(6,4)   STRING('PRODUCT {5}:')
  546.  500   2                  ROW(7,4)   STRING('ADDRESS 1   :')
  547.  501   2                  ROW(8,4)   STRING('ADDRESS 2   :')
  548.  502   2                  ROW(9,4)   STRING('CITY {8}:')
  549.  503   2                  ROW(10,4)  STRING('STATE {7}:')
  550.  504   2                  ROW(11,4)  STRING('ZIP {9}:')
  551.  505   2                  ROW(12,4)  STRING('PHONE {7}:')
  552.  506   2                  ROW(13,4)  STRING('FAX {9}:')
  553.  507   2                  ROW(14,4)  STRING('E MAIL {6}:')
  554.  508   2                  ROW(15,4)  STRING('DESCRIPTION :')
  555.  509   2                  ROW(16,4)  STRING('REBATE {6}:')
  556.  510   2                  ROW(17,4)  STRING('EXPIRES {5}:')
  557.  511   2                  ROW(18,4)  STRING('COMMENTS    :')
  558.  512   2                  ROW(22,6)  STRING('Use arrow keys to scroll comments, (Esc) for'|
  559.  513   2                               & ' previous menu,')
  560.  514   2                  ROW(23,9)  STRING('(F2) to print this record and order form if' |
  561.  515   2                               & ' available.')
  562.  516   2   MESSAGE        ROW(3,21)  STRING(30)
  563.  517   2                             ENTRY,USE(?FIRST_FIELD)
  564.  518   2                  ROW(4,17)  ENTRY(@S30),USE(LIS:COMPANY_NAME),LFT,UPR,OVR,SEL(0,2)
  565.  519   2                  ROW(5,17)  ENTRY(@S35),USE(LIS:CONTACT_NAME),LFT,OVR,SEL(0,2)
  566.  520   2                  ROW(6,17)  ENTRY(@S19),USE(LIS:PRODUCT),LFT,OVR,SEL(0,2)
  567.  521   2                  ROW(7,17)  ENTRY(@S30),USE(LIS:ADDRESS_1),LFT,OVR,SEL(0,2)
  568.  522   2                  ROW(8,17)  ENTRY(@S20),USE(LIS:ADDRESS_2),LFT,OVR,SEL(0,2)
  569.  523   2                  ROW(9,17)  ENTRY(@S25),USE(LIS:CITY),LFT,OVR,SEL(0,2)
  570.  524   2                  ROW(10,17) ENTRY(@S2),USE(LIS:STATE),LFT,UPR,OVR,SEL(0,2)
  571.  525   2                  ROW(11,17) ENTRY(@S10),USE(LIS:ZIP),LFT,OVR,SEL(0,2)
  572.  526   2                  ROW(12,17) ENTRY(@P###-###-####P),USE(LIS:PHONE),OVR,SEL(0,2)
  573.  527   2                  ROW(13,17) ENTRY(@P###-###-####P),USE(LIS:FAX),OVR,SEL(0,2)
  574.  528   2                  ROW(14,17) ENTRY(@S30),USE(LIS:E_MAIL),LFT,OVR,SEL(0,2)
  575.  529   2                  ROW(15,17) ENTRY(@S50),USE(LIS:DESCRIPTION),LFT,OVR,SEL(0,2)
  576.  530   2                  ROW(16,17) ENTRY(@S50),USE(LIS:REBATE),LFT,OVR,SEL(0,2)
  577.  531   2                  ROW(17,17) ENTRY(@D1),USE(LIS:EXPIRES),OVR
  578.  532   2                  ROW(18,17) TEXT(4,50),USE(LIS:COMMENTS),LFT,INS,ENH,SEL(15,5)
  579.  533   2                             ENTRY,USE(?LAST_FIELD)
  580.  534   2                             PAUSE(''),USE(?DELETE_FIELD)
  581.  535   2                .
  582.  536       
  583. DOD.CLA                                                                    CLARION COMPILER v2.0
  584.  
  585. Company information                                                     6/27/93  7:50 PM PAGE 15
  586.  
  587.  538   1     CODE
  588.  539   1     OPEN(SCREEN)                                   !OPEN THE SCREEN
  589.  540   1     SETCURSOR                                      !TURN OFF ANY CURSOR
  590.  541   1     ACTION# = ACTION                               !SAVE ACTION VALUE
  591.  542   1     ACTION = ACTION#                               !RESET ACTION
  592.  543   1     DISPLAY                                        !DISPLAY THE FIELDS
  593.  544   1     EXECUTE ACTION                                 !SET THE CURRENT RECORD POINTER
  594.  545   2       POINTER# = 0                                 !  NO RECORD FOR ADD
  595.  546   2       POINTER# = POINTER(LISTINGS)                 !  CURRENT RECORD FOR CHANGE
  596.  547   2       POINTER# = POINTER(LISTINGS)                 !  CURRENT RECORD FOR CHANGE
  597.  548   2     .
  598.  549   1     LOOP                                           !LOOP THRU ALL THE FIELDS
  599.  550   2       MEM:MESSAGE = CENTER(MEM:MESSAGE,SIZE(MEM:MESSAGE)) !DISPLAY ACTION MESSAGE
  600.  551   2       SCR:MESSAGE = MEM:MESSAGE
  601.  552   2       ALERT                                        !RESET ALERTED KEYS
  602.  553   2       ALERT(ACCEPT_KEY)                            !ALERT SCREEN ACCEPT KEY
  603.  554   2       ALERT(REJECT_KEY)                            !ALERT SCREEN REJECT KEY
  604.  555   2       ALERT(F2_KEY)                                !ALERT HOT KEY
  605.  556   2       ACCEPT                                       !READ A FIELD
  606.  557   2         IF KEYCODE() = F2_KEY                      !ON HOT KEY
  607.  558   3           SAVACTN# = ACTION                        !  SAVE ACTION
  608.  559   3           PRINT_RECORD                             !  CALL HOT KEY PROCEDURE
  609.  560   3           ACTION = SAVACTN#                        !  RESTORE ACTION
  610.  561   3           SELECT(?)                                !  DO SAME FIELD AGAIN
  611.  562   3           CYCLE                                    !  AND LOOP AGAIN
  612.  563   3         .
  613.  564   2       IF KEYCODE() = REJECT_KEY THEN RETURN.       !RETURN ON SCREEN REJECT KEY
  614.  565   2       EXECUTE ACTION                               !SET ACTION MESSAGE
  615.  566   3         MEM:MESSAGE = 'Record will be Added'       !
  616.  567   3         MEM:MESSAGE = 'Record will be Changed'     !
  617.  568   3         MEM:MESSAGE = 'Press Enter to Delete'      !
  618.  569   3       .
  619.  570   2       EDIT_RANGE# = FIELD()                        !SET ONE FIELD EDIT RANGE
  620.  571   2       IF KEYCODE() = ACCEPT_KEY                    !ON SCREEN ACCEPT KEY
  621.  572   3         UPDATE                                     !  MOVE ALL FIELDS FROM SCREEN
  622.  573   3         EDIT_RANGE# = FIELDS()                     !  AND EDIT REMAINING FIELDS
  623.  574   3       .                                            !
  624.  575   2       LOOP FIELD# = FIELD() TO EDIT_RANGE#         !EDIT FIELDS IN THE EDIT RANGE
  625.  576   3         CASE FIELD#                                !JUMP TO FIELD EDIT ROUTINE
  626.  577   4         OF ?FIRST_FIELD                            !FROM THE FIRST FIELD
  627.  578   4           IF KEYCODE() = ESC_KEY THEN RETURN.      !  RETURN ON ESC KEY
  628.  579   4           IF ACTION = 3 THEN SELECT(?DELETE_FIELD).!  OR CONFIRM FOR DELETE
  629.  580       
  630.  581   4         OF ?LIS:COMPANY_NAME                       !company name
  631.  582   4           IF LIS:COMPANY_NAME = ''                 !IF REQUIRED FIELD IS EMPTY
  632.  583   5             BEEP                                   !  SOUND KEYBOARD ALARM
  633.  584   5             SELECT(?LIS:COMPANY_NAME)              !  AND STAY ON THIS FIELD
  634.  585   5             BREAK                                  !
  635.  586   5           .
  636.  587       
  637.  588   4         OF ?LIS:CONTACT_NAME                       !contact person
  638.  589   4           IF LIS:CONTACT_NAME = ''                 !IF REQUIRED FIELD IS EMPTY
  639.  590   5             BEEP                                   !  SOUND KEYBOARD ALARM
  640.  591   5             SELECT(?LIS:CONTACT_NAME)              !  AND STAY ON THIS FIELD
  641. DOD.CLA                                                                    CLARION COMPILER v2.0
  642.  
  643. Company information                                                     6/27/93  7:50 PM PAGE 16
  644.  
  645.  592   5             BREAK                                  !
  646.  593   5           .
  647.  594       
  648.  595   4         OF ?LIS:PRODUCT                            !product
  649.  596   4           IF LIS:PRODUCT = ''                      !IF REQUIRED FIELD IS EMPTY
  650.  597   5             BEEP                                   !  SOUND KEYBOARD ALARM
  651.  598   5             SELECT(?LIS:PRODUCT)                   !  AND STAY ON THIS FIELD
  652.  599   5             BREAK                                  !
  653.  600   5           .
  654.  601       
  655.  602   4         OF ?LIS:ADDRESS_1                          !address
  656.  603   4           IF LIS:ADDRESS_1 = ''                    !IF REQUIRED FIELD IS EMPTY
  657.  604   5             BEEP                                   !  SOUND KEYBOARD ALARM
  658.  605   5             SELECT(?LIS:ADDRESS_1)                 !  AND STAY ON THIS FIELD
  659.  606   5             BREAK                                  !
  660.  607   5           .
  661.  608       
  662.  609   4         OF ?LIS:ADDRESS_2                          !box or suite #
  663.  610       
  664.  611   4         OF ?LIS:CITY                               !city
  665.  612   4           IF LIS:CITY = ''                         !IF REQUIRED FIELD IS EMPTY
  666.  613   5             BEEP                                   !  SOUND KEYBOARD ALARM
  667.  614   5             SELECT(?LIS:CITY)                      !  AND STAY ON THIS FIELD
  668.  615   5             BREAK                                  !
  669.  616   5           .
  670.  617       
  671.  618   4         OF ?LIS:STATE                              !state
  672.  619   4           IF LIS:STATE = ''                        !IF REQUIRED FIELD IS EMPTY
  673.  620   5             BEEP                                   !  SOUND KEYBOARD ALARM
  674.  621   5             SELECT(?LIS:STATE)                     !  AND STAY ON THIS FIELD
  675.  622   5             BREAK                                  !
  676.  623   5           .
  677.  624       
  678.  625   4         OF ?LIS:ZIP
  679.  626   4           IF LIS:ZIP = ''                          !IF REQUIRED FIELD IS EMPTY
  680.  627   5             BEEP                                   !  SOUND KEYBOARD ALARM
  681.  628   5             SELECT(?LIS:ZIP)                       !  AND STAY ON THIS FIELD
  682.  629   5             BREAK                                  !
  683.  630   5           .
  684.  631       
  685.  632   4         OF ?LIS:PHONE                              !phone
  686.  633       
  687.  634   4         OF ?LIS:FAX                                !fax
  688.  635       
  689.  636   4         OF ?LIS:E_MAIL                             !e-mail
  690.  637       
  691.  638   4         OF ?LIS:DESCRIPTION                        !product/service description
  692.  639   4           IF LIS:DESCRIPTION = ''                  !IF REQUIRED FIELD IS EMPTY
  693.  640   5             BEEP                                   !  SOUND KEYBOARD ALARM
  694.  641   5             SELECT(?LIS:DESCRIPTION)               !  AND STAY ON THIS FIELD
  695.  642   5             BREAK                                  !
  696.  643   5           .
  697.  644       
  698.  645   4         OF ?LIS:REBATE                             !rebate/discount or free item
  699. DOD.CLA                                                                    CLARION COMPILER v2.0
  700.  
  701. Company information                                                     6/27/93  7:50 PM PAGE 17
  702.  
  703.  646   4           IF LIS:REBATE = ''                       !IF REQUIRED FIELD IS EMPTY
  704.  647   5             BEEP                                   !  SOUND KEYBOARD ALARM
  705.  648   5             SELECT(?LIS:REBATE)                    !  AND STAY ON THIS FIELD
  706.  649   5             BREAK                                  !
  707.  650   5           .
  708.  651       
  709.  652   4         OF ?LIS:EXPIRES                            !expiration date
  710.  653       
  711.  654   4         OF ?LIS:COMMENTS                           !comments
  712.  655       
  713.  656   4         OF ?LAST_FIELD                             !FROM THE LAST FIELD
  714.  657   4           EXECUTE ACTION                           !  UPDATE THE FILE
  715.  658   5             ADD(LISTINGS)                          !    ADD NEW RECORD
  716.  659   5             PUT(LISTINGS)                          !    CHANGE EXISTING RECORD
  717.  660   5             DELETE(LISTINGS)                       !    DELETE EXISTING RECORD
  718.  661   5           .
  719.  662   4           IF ERROR() THEN STOP(ERROR()).           !  CHECK FOR UNEXPECTED ERROR
  720.  663   4           ACTION = 0                               !  SET ACTION TO COMPLETE
  721.  664   4           RETURN                                   !  AND RETURN TO CALLER
  722.  665       
  723.  666   4         OF ?DELETE_FIELD                           !FROM THE DELETE FIELD
  724.  667   4           IF KEYCODE() = ENTER_KEY |               !  ON ENTER KEY
  725.  668   4           OR KEYCODE() = ACCEPT_KEY                !  OR CTRL-ENTER KEY
  726.  669   5             SELECT(?LAST_FIELD)                    !    DELETE THE RECORD
  727.  670   5           ELSE                                     !  OTHERWISE
  728.  671   5             BEEP                                   !    BEEP AND ASK AGAIN
  729.  672   5     . . . .
  730.  673       
  731. DOD.CLA                                                                    CLARION COMPILER v2.0
  732.  
  733. Directory on disk listing                                               6/27/93  7:50 PM PAGE 18
  734.  
  735.  675       
  736.  676   1   PRINT_RECORD PROCEDURE
  737.  677       
  738.  678   1   TITLE        REPORT       LENGTH(59),WIDTH(80),PRE(TTL)
  739.  679   2   RPT_HEAD                  DETAIL
  740.  680   3                .            .
  741.  681   1   REPORT       REPORT       LENGTH(59),WIDTH(80),PAGE(MEM:PAGE),LINE(MEM:LINE)   |
  742.  682   1                             PRE(RPT)
  743.  683   2   PAGE_HEAD                 HEADER
  744.  684   3                    COL(1)     STRING('Directory on disk listing') CTL(@LF2)
  745.  685   3                             .
  746.  686   2   DETAIL                    DETAIL
  747.  687   3                    COL(1)     STRING(30),USE(LIS:COMPANY_NAME)
  748.  688   3                    COL(33)    STRING(35),USE(LIS:CONTACT_NAME)
  749.  689   3                  ROW(+1,1)    STRING(19),USE(LIS:PRODUCT)
  750.  690   3                  ROW(+1,1)    STRING(30),USE(LIS:ADDRESS_1)
  751.  691   3                    COL(33)    STRING(20),USE(LIS:ADDRESS_2)
  752.  692   3                  ROW(+1,1)    STRING(25),USE(LIS:CITY)
  753.  693   3                    COL(33)    STRING(2),USE(LIS:STATE)
  754.  694   3                    COL(37)    STRING(10),USE(LIS:ZIP)
  755.  695   3                  ROW(+1,1)    STRING(@P###-###-####P),USE(LIS:PHONE)
  756.  696   3                    COL(16)    STRING(@P###-###-####P),USE(LIS:FAX)
  757.  697   3                    COL(33)    STRING(30),USE(LIS:E_MAIL)
  758.  698   3                  ROW(+1,1)    STRING(50),USE(LIS:COMMENTS) CTL(@LF)
  759.  699   3                             .
  760.  700   2   DETAILA                   DETAIL
  761.  701   3   MEMO_1           COL(1)     STRING(50) CTL(@LF)
  762.  702   3                             .
  763.  703   2   DETAILB                   DETAIL
  764.  704   3                               CTL(@LF)
  765.  705   3                             .
  766.  706   2   RPT_FOOT                  DETAIL
  767.  707   3                             .
  768.  708   2   PAGE_FOOT                 FOOTER
  769.  709   3                .            .
  770.  710       
  771.  711   1     CODE
  772.  712   1     PRINT(TTL:RPT_HEAD)                            !PRINT TITLE PAGE
  773.  713   1     CLOSE(TITLE)                                   !CLOSE TITLE REPORT
  774.  714   1     MEM:DEVICE = '+' & MEM:DEVICE                  !APPEND DISK RPT TO TITLE
  775.  715   1     OPEN(REPORT)                                   !OPEN REPORT BODY
  776.  716   1     PRINT(RPT:DETAIL)                              !PRINT DETAIL LINES
  777.  717   1       LOOP MEMO_1# = 60 TO 2 BY -1                 !BACKSCAN THE MEMO FIELD TO
  778.  718   2         IF LIS_MEMO_ROW[MEMO_1#] <> '' THEN BREAK. ! FIND NUMBER OF ROWS USED
  779.  719   2       .                                            ! END OF MEMOLEN
  780.  720   1     J# = 2                                         !START WITH ROW 2
  781.  721   1     LOOP                                           !LOOP THRU ALL USED ROWS
  782.  722   2       MEMODONE# = 0                                !  NO MEMOS DONE YET
  783.  723   2         IF J# <= MEMO_1#                           !IF IN THE RANGE OF THIS MEMO
  784.  724   3           RPT:MEMO_1 = LIS_MEMO_ROW[J#]            !  MOVE A MEMO FIELD ROW
  785.  725   3           MEMODONE# = 1                            !  MEMO HAS BEEN MOVED
  786.  726   3         ELSE                                       !OTHERWISE
  787.  727   3           RPT:MEMO_1 = ''                          !  NO MEMO TO DO
  788.  728   3         .                                          ! END OF SETMEMO
  789. DOD.CLA                                                                    CLARION COMPILER v2.0
  790.  
  791. Directory on disk listing                                               6/27/93  7:50 PM PAGE 19
  792.  
  793.  729   2       IF MEMODONE# = 0 THEN BREAK.                 !  ALL MEMOS PRINTED
  794.  730   2         PRINT(RPT:DETAILA)                         !PRINT THE DETAIL RECORD
  795.  731   2       J# += 1                                      !  INCREMENT COUNTER
  796.  732   2     .
  797.  733   1         PRINT(RPT:DETAILB)                         !PRINT THE DETAIL RECORD
  798.  734   1     PRINT(RPT:RPT_FOOT)                            !PRINT REPORT FOOTER
  799.  735   1     CLOSE(REPORT)                                  !CLOSE REPORT
  800.  736   1     MEM:DEVICE = SUB(MEM:DEVICE,2,LEN(MEM:DEVICE)-1) !TURN OFF APPEND REPORT
  801.  737   1     RETURN                                         !RETURN TO CALLER
  802.  738       
  803. DOD.CLA                                                                    CLARION COMPILER v2.0
  804.  
  805. VIEW COMPANIES BY PRODUCT                                               6/27/93  7:50 PM PAGE 20
  806.  
  807.  740   1   VIEW_PROD    PROCEDURE
  808.  741       
  809.  742   1   SCREEN       SCREEN       PRE(SCR),WINDOW(22,76),HUE(15,4)
  810.  743   2                  ROW(19,1)  PAINT(4,76),HUE(10,1)
  811.  744   2                  ROW(1,1)   STRING('┌─{74}┐'),ENH
  812.  745   2                  ROW(2,1)   REPEAT(2),EVERY(2);STRING('│<0{74}>│'),ENH .
  813.  746   2                  ROW(3,1)   REPEAT(2),EVERY(2);STRING('├─{74}┤'),ENH .
  814.  747   2                  ROW(6,1)   REPEAT(13);STRING('│<0{74}>│'),ENH .
  815.  748   2                  ROW(19,1)  STRING('├─{74}┤'),ENH
  816.  749   2                  ROW(20,1)  REPEAT(2);STRING('│<0{74}>│'),ENH .
  817.  750   2                  ROW(22,1)  STRING('└─{74}┘'),ENH
  818.  751   2                  ROW(2,27)  STRING('VIEW COMPANIES BY PRODUCT')
  819.  752   2                  ROW(4,2)   STRING('Product {21}Contact person {25}State')
  820.  753   2                  ROW(20,22) STRING('Use arrow keys to point and select')
  821.  754   2                  ROW(21,6)  STRING('Press (Enter) to view company information. ' |
  822.  755   2                               & '(Esc) for previous menu')
  823.  756   2                             ENTRY,USE(?FIRST_FIELD)
  824.  757   2                             REPEAT(13),EVERY(1),INDEX(NDX)
  825.  758   3                  ROW(6,2)     POINT(1,69),USE(?POINT),ESC(?-1)
  826.  759   3   PRODUCT          COL(2)     STRING(19)
  827.  760   3   CONTACT_NAME     COL(30)    STRING(35)
  828.  761   3   STATE            COL(69)    STRING(2)
  829.  762   3                .            .
  830.  763       
  831.  764   1   NDX          BYTE                                !REPEAT INDEX FOR POINT FIELD
  832.  765   1   ROW          BYTE                                !ACTUAL ROW OF SCROLL AREA
  833.  766   1   COL          BYTE                                !ACTUAL COLUMN OF SCROLL AREA
  834.  767   1   MAX          LONG                                !LESSER OF COUNT AND RECORDS
  835.  768   1   COUNT        BYTE(13)                            !NUMBER OF ITEMS TO SCROLL
  836.  769   1   ROWS         BYTE(13)                            !NUMBER OF ROWS TO SCROLL
  837.  770   1   COLS         BYTE(69)                            !NUMBER OF COLUMNS TO SCROLL
  838.  771       
  839.  772       
  840. DOD.CLA                                                                    CLARION COMPILER v2.0
  841.  
  842. VIEW COMPANIES BY PRODUCT                                               6/27/93  7:50 PM PAGE 21
  843.  
  844.  774   1     CODE
  845.  775   1     ACTION# = ACTION                               !SAVE ACTION
  846.  776   1     OPEN(SCREEN)                                   !OPEN THE SCREEN
  847.  777   1     SETCURSOR                                      !TURN OFF ANY CURSOR
  848.  778   1     NDX = 1                                        !PUT SELECTOR BAR ON TOP ITEM
  849.  779   1     ROW = ROW(?POINT)                              !REMEMBER TOP ROW AND
  850.  780   1     COL = COL(?POINT)                              !  LEFT COLUMN OF SCROLL AREA
  851.  781   1     IF ACTION = 4                                  !IF THIS IS A LOOKUP REQUEST
  852.  782   2       SET(LIS:PRODUCT_KEY,LIS:PRODUCT_KEY)         !  FIND IT IN THE FILE
  853.  783   2       NEXT(LISTINGS)                               !    AND READ IT
  854.  784   2       POINTER# = POINTER(LISTINGS)                 !  SAVE POINTER TO CURRENT
  855.  785   2       SKIP(LISTINGS,-1)                            !  MAKE IT THE TOP RECORD
  856.  786   2       DO SHOW_TABLE                                !  FILL SCROLL AREA
  857.  787   2       GET(LISTINGS,POINTER#)                       !  AND REFRESH CURRENT RECORD
  858.  788   2     ELSE                                           !OTHERWISE
  859.  789   2       SET(LIS:PRODUCT_KEY)                         !  SET TO FIRST RECORD IN FILE
  860.  790   2       DO SHOW_TABLE                                !  FILL SCROLL AREA
  861.  791   2     .
  862.  792   1     RECORDS# = TRUE                                !INITIALIZE RECORDS FLAG
  863.  793   1     LOOP                                           !LOOP UNTIL USER EXITS
  864.  794   2       MAX = RECORDS(LIS:PRODUCT_KEY)               !SET LESSER OF FILE RECORD
  865.  795   2       IF MAX > COUNT THEN MAX = COUNT.             !  COUNT AND SCROLL ITEM COUNT
  866.  796   2       ACTION = ACTION#                             !RESTORE ACTION
  867.  797   2       POINTER# = 0                                 !CLEAR ADD POINTER
  868.  798   2       IF ~RECORDS(LIS:PRODUCT_KEY)                 !IF THERE ARE NO RECORDS
  869.  799   3         CLEAR(LIS:RECORD)                          !  CLEAR RECORD AREA
  870.  800   3         ACTION = 1                                 !  SET ACTION TO ADD
  871.  801   3         UPDATE_LIST                                !  CALL FORM FOR FIRST RECORD
  872.  802   3         IF ~RECORDS(LIS:PRODUCT_KEY) THEN BREAK.   !  IF ADD ABORTED THEN EXIT
  873.  803   3         DO SHOW_RECORD
  874.  804   3         SET(LIS:PRODUCT_KEY)                       !  SET TO NEW RECORD
  875.  805   3         DO SHOW_TABLE                              !  FILL SCROLL AREA
  876.  806   3         NDX = 1                                    !  PUT SELECTOR BAR ON TOP ITEM
  877.  807   3         MAX = 1                                    !  MAXIMUM DISPLAYED IS 1
  878.  808   3       .                                            !
  879.  809   2       ALERT                                        !RESET ALERTED KEYS
  880.  810   2       ALERT(REJECT_KEY)                            !ALERT SCREEN REJECT KEY
  881.  811   2       ALERT(ACCEPT_KEY)                            !ALERT SCREEN ACCEPT KEY
  882.  812   2       ACCEPT                                       !READ A FIELD
  883.  813   2       IF KEYCODE() = REJECT_KEY THEN BREAK.        !RETURN ON SCREEN REJECT KEY
  884.  814       
  885.  815   2       EDIT_RANGE# = FIELD()                        !SET ONE FIELD EDIT RANGE
  886.  816   2       IF KEYCODE() = ACCEPT_KEY AND |              !ON SCREEN ACCEPT KEY
  887.  817   2          EDIT_RANGE# <> ?POINT                     ! AND NOT ON THE POINT FIELD
  888.  818   3         UPDATE                                     !  MOVE ALL FIELDS FROM SCREEN
  889.  819   3         EDIT_RANGE# = ?POINT - 1                   !  AND EDIT REMAINING FIELDS
  890.  820   3         SELECT(?POINT)                             !  IF OK THEN START HERE NEXT
  891.  821   3       .                                            !
  892.  822       
  893.  823   2       LOOP FIELD# = FIELD() TO EDIT_RANGE#         !EDIT FIELDS IN THE EDIT RANGE
  894.  824       
  895.  825   3         CASE FIELD#                                !JUMP TO FIELD EDIT ROUTINE
  896.  826   4         OF ?FIRST_FIELD                            !FROM THE FIRST FIELD
  897.  827   4           IF KEYCODE() = ESC_KEY  OR |             !  RETURN ON ESC KEY
  898. DOD.CLA                                                                    CLARION COMPILER v2.0
  899.  
  900. VIEW COMPANIES BY PRODUCT                                               6/27/93  7:50 PM PAGE 22
  901.  
  902.  828   4              RECORDS# = FALSE                      !  OR NO RECORDS
  903.  829   5                RETURN
  904.  830   5           .
  905.  831   4           RECORDS# = TRUE                          !  ASSUME RECORDS ARE HERE
  906.  832   4         OF ?POINT                                  !FROM THE POINT FIELD
  907.  833   4           CASE KEYCODE()                           !  PROCESS THE KEYSTROKE
  908.  834   5           OF INS_KEY                               !INSERT KEY
  909.  835   5             CLEAR(LIS:RECORD)                      !  CLEAR RECORD AREA
  910.  836   5             ACTION = 1                             !  SET ACTION TO ADD
  911.  837   5             UPDATE_LIST                            !  CALL FORM FOR NEW RECORD
  912.  838   5             IF ~ACTION                             !  IF A NEW RECORD WAS ADDED
  913.  839   6               POINTER# = POINTER(LISTINGS)         !    REMEMBER WHICH RECORD
  914.  840   6               SET(LIS:PRODUCT_KEY,LIS:PRODUCT_KEY) !    SET TO NEW RECORD AND
  915.  841   6               SKIP(LISTINGS,-1)                    !    MAKE IT THE TOP ITEM
  916.  842   6               DO SHOW_TABLE                        !    DISPLAY THAT PAGE
  917.  843   6             .
  918.  844   5           OF ENTER_KEY                             !ENTER KEY OR
  919.  845   5           OROF ACCEPT_KEY                          !CTRL ENTER KEY
  920.  846   5             DO GET_RECORD                          !  READ THE SELECTED RECORD
  921.  847   5             IF ACTION = 4 AND KEYCODE() = ENTER_KEY!  IF THIS IS A LOOKUP REQUEST
  922.  848   6               ACTION = 0                           !    SET ACTION TO COMPLETE
  923.  849   6               RETURN                               !    AND RETURN TO CALLER
  924.  850   6             .                                      !
  925.  851   5             ACTION = 2                             !  SET ACTION TO CHANGE
  926.  852   5             UPDATE_LIST                            !  CALL FORM TO CHANGE RECORD
  927.  853   5             IF ~ACTION                             !  IF THE RECORD WAS CHANGED
  928.  854   6               POINTER# = POINTER(LISTINGS)         !    REMEMBER WHICH RECORD
  929.  855   6               SET(LIS:PRODUCT_KEY,LIS:PRODUCT_KEY) !    SET TO CHANGED RECORD
  930.  856   6               SKIP(LISTINGS,-1)                    !    MAKE IT THE TOP ITEM
  931.  857   6               DO SHOW_TABLE                        !    AND DISPLAY THAT PAGE
  932.  858   6             ELSE                                   !  OTHERWISE
  933.  859   6               SKIP(LISTINGS,(MAX-NDX))             !  SKIP BACK TO SAME PAGE
  934.  860   6             .
  935.  861   5           OF DEL_KEY                               !DELETE KEY
  936.  862   5             DO GET_RECORD                          !  READ THE SELECTED RECORD
  937.  863   5             ACTION = 3                             !  SET ACTION TO DELETE
  938.  864   5             UPDATE_LIST                            !  CALL FORM TO DELETE RECORD
  939.  865   5             IF ~ACTION                             !  IF RECORD WAS DELETED
  940.  866   6               SKIP(LISTINGS,-NDX)                  !    SET NEXT RECORD ON TOP
  941.  867   6               DO SHOW_TABLE                        !    AND DISPLAY THAT PAGE
  942.  868   6             ELSE                                   !  OTHERWISE
  943.  869   6               SKIP(LISTINGS,(MAX-NDX))             !  SKIP BACK TO SAME PAGE
  944.  870   6             .
  945.  871   5           OF DOWN_KEY                              !DOWN ARROW KEY
  946.  872   5             IF NOT EOF(LISTINGS)                   !  IF THERE ARE MORE RECORDS
  947.  873   6               SCROLL(ROW,COL,ROWS,COLS,ROWS(?POINT)) !  SCROLL THE SCREEN UP
  948.  874   6               NEXT(LISTINGS)                       !    READ THE BOTTOM RECORD
  949.  875   6               DO SHOW_RECORD                       !    AND DISPLAY IT
  950.  876   6             .
  951.  877   5           OF PGDN_KEY                              !PAGE DOWN KEY
  952.  878   5             IF EOF(LISTINGS)                       !  ON THE LAST PAGE
  953.  879   6               NDX = MAX                            !    POINT TO BOTTOM ITEM
  954.  880   6             ELSE                                   !  OTHERWISE
  955.  881   6               DO SHOW_TABLE                        !    DISPLAY NEXT PAGE
  956. DOD.CLA                                                                    CLARION COMPILER v2.0
  957.  
  958. VIEW COMPANIES BY PRODUCT                                               6/27/93  7:50 PM PAGE 23
  959.  
  960.  882   6             .
  961.  883   5           OF CTRL_PGDN                             !CTRL-PAGE DOWN KEY
  962.  884   5             NDX = MAX                              !  POINT TO BOTTOM ITEM
  963.  885   5             IF NOT EOF(LISTINGS)                   !  ON THE LAST PAGE
  964.  886   6               SET(LIS:PRODUCT_KEY)                 !    SET TO BOTTOM RECORD MINUS
  965.  887   6               SKIP(LISTINGS,-COUNT)                !      ONE PAGE OF RECORDS
  966.  888   6               DO SHOW_TABLE                        !    DISPLAY THE LAST PAGE
  967.  889   6             .
  968.  890   5           OF UP_KEY                                !UP ARROW KEY
  969.  891   5             SKIP(LISTINGS,-(COUNT-1))              !    SET TO TOP RECORD MINUS 1
  970.  892   5             IF NOT BOF(LISTINGS)                   !  IF THERE IS A PRIOR RECORD
  971.  893   6               PREVIOUS(LISTINGS)                   !     READ THE TOP RECORD
  972.  894   6               IF NOT ERROR()                       !    IF READ A RECORD
  973.  895   7                 SCROLL(ROW,COL,ROWS,COLS,-(ROWS(?POINT)))! SCROLL THE SCREEN DOWN
  974.  896   7                 DO SHOW_RECORD                     !       AND DISPLAY IT
  975.  897   7               ELSIF ERRORCODE() = 33               !    ELSIF RECORD NOT AVAILABLE
  976.  898   7                 NEXT(LISTINGS)                     !       RETRIEVE FIRST ONE
  977.  899   7             . .
  978.  900   5             SKIP(LISTINGS,COUNT-1)                 !  SET RECORD FOR NEXT PAGE
  979.  901       
  980.  902   5           OF PGUP_KEY                              !PAGE UP KEY
  981.  903   5             SKIP(LISTINGS,-(COUNT-1))              !  SET TO TOP RECORD MINUS ONE
  982.  904   5             IF BOF(LISTINGS)                       !  IF THERE IS NO PRIOR RECORD
  983.  905   6               NDX = 1                              !    THEN POINT TO TOP ITEM
  984.  906   6               SKIP(LISTINGS,COUNT-1)               !    SET RECORD FOR THIS PAGE
  985.  907   6             ELSE                                   !  OTHERWISE
  986.  908   6               SKIP(LISTINGS,-(COUNT+1))            !    SET RECORD FOR PRIOR PAGE
  987.  909   6               DO SHOW_TABLE                        !    AND DISPLAY THE PAGE
  988.  910   6             .
  989.  911   5           OF CTRL_PGUP                             !CTRL-PAGE UP KEY
  990.  912   5             SET(LIS:PRODUCT_KEY)                   !  SET TO FIRST RECORD
  991.  913   5             NDX = 1                                !  POINT TO TOP ITEM
  992.  914   5             DO SHOW_TABLE                          !  AND DISPLAY THE PAGE
  993.  915   5           .
  994.  916   4     . . .
  995.  917   1     RETURN                                         !RETURN TO CALLER
  996.  918       
  997.  919   1   SHOW_TABLE ROUTINE                               !DISPLAY A PAGE OF RECORDS
  998.  920   1     SKIP(LISTINGS,COUNT-1)                         !  SET TO THE BOTTOM RECORD
  999.  921   1     IF EOF(LISTINGS)                               !  FOR A PARTIAL PAGE
  1000.  922   2       SET(LIS:PRODUCT_KEY)                         !    SET TO THE LAST RECORD
  1001.  923   2       SKIP(LISTINGS,-COUNT)                        !    AND BACK UP ONE PAGE
  1002.  924   2     ELSE                                           !  OTHERWISE
  1003.  925   2       SKIP(LISTINGS,-(COUNT-1))                    !    SET RECORD FOR THIS PAGE
  1004.  926   2     .
  1005.  927   1     NDX# = NDX                                     !  SAVE REPEAT INDEX
  1006.  928   1     LOOP NDX = 1 TO COUNT                          !  LOOP THRU THE SCROLL AREA
  1007.  929   2       IF EOF(LISTINGS) THEN BREAK.                 !    BREAK ON END OF FILE
  1008.  930   2       NEXT(LISTINGS)                               !    READ THE NEXT RECORD
  1009.  931   2       DO SHOW_RECORD                               !    AND DISPLAY IT
  1010.  932   2       IF POINTER(LISTINGS) = POINTER#
  1011.  933   3         NDX# = NDX                                 !  POINT TO CORRECT RECORD
  1012.  934   3     . .
  1013.  935   1     NDX = NDX#                                     !  RESTORE REPEAT INDEX
  1014. DOD.CLA                                                                    CLARION COMPILER v2.0
  1015.  
  1016. VIEW COMPANIES BY PRODUCT                                               6/27/93  7:50 PM PAGE 24
  1017.  
  1018.  936   1     CLEAR(LIS:RECORD)                              !  CLEAR RECORD AREA
  1019.  937   1     IF RECORDS(LIS:PRODUCT_KEY) < COUNT            !  IF RECORDS DO NOT FILL
  1020.  938   2        NDX#= RECORDS(LIS:PRODUCT_KEY) * 1          !     GET NUMBER TIMES SIZE
  1021.  939   2        BLANK(ROW + NDX#,COL,ROWS-NDX#,COLS)        !     BLANK REMAINING AREA
  1022.  940   2     .
  1023.  941       
  1024.  942   1   SHOW_RECORD ROUTINE                              !DISPLAY A RECORD
  1025.  943   1     SCR:PRODUCT = LIS:PRODUCT
  1026.  944   1     SCR:CONTACT_NAME = LIS:CONTACT_NAME
  1027.  945   1     SCR:STATE = LIS:STATE
  1028.  946       
  1029.  947   1   GET_RECORD ROUTINE                               !READ SELECTED RECORD
  1030.  948   1     SKIP(LISTINGS,-(MAX-NDX+1))                    !  SET TO SELECTED RECORD
  1031.  949   1     NEXT(LISTINGS)                                 !    AND READ IT
  1032.  950       
  1033.  951   1   FIND_RECORD ROUTINE                              !LOCATE REQUESTED RECORD
  1034.  952   1     SET(LIS:PRODUCT_KEY,LIS:PRODUCT_KEY)           !  SET TO REQUESTED RECORD
  1035.  953   1     IF EOF(LISTINGS)                               !  IF BEYOND END OF FILE
  1036.  954   2       PREVIOUS(LISTINGS)                           !    GET THE LAST RECORD
  1037.  955   2     ELSE                                           !  ELSE
  1038.  956   2       NEXT(LISTINGS)                               !    READ THIS RECORD
  1039.  957   2     .
  1040.  958   1     POINTER# = POINTER(LISTINGS)                   !  SAVE ITS RECORD POINTER
  1041.  959   1     SKIP(LISTINGS,-1)                              !  MAKE IT THE TOP RECORD
  1042.  960   1     DO SHOW_TABLE                                  !  AND FILL THE SCROLL AREA
  1043.  961       
  1044.  962   1   SAME_PAGE ROUTINE                                !SET TO SAME PAGE ROUTINE
  1045.  963   1     POINTER# = POINTER(LISTINGS)                   !  SAVE ITS RECORD POINTER
  1046.  964   1     GET(LISTINGS,POINTER#)                         !  GET THE RECORD
  1047.  965   1     SET(LIS:PRODUCT_KEY,LIS:PRODUCT_KEY)           !  SET TO THE SAME RECORD
  1048.  966   1     SKIP(LISTINGS,-1)                              !  SKIP TO TOP OF SAME PAGE
  1049.  967       
  1050. DOD.CLA                                                                    CLARION COMPILER v2.0
  1051.  
  1052. VIEW COMPANIES BY LOCATION                                              6/27/93  7:50 PM PAGE 25
  1053.  
  1054.  969   1   VIEW_STATE   PROCEDURE
  1055.  970       
  1056.  971   1   SCREEN       SCREEN       PRE(SCR),WINDOW(22,78),HUE(15,4)
  1057.  972   2                  ROW(19,1)  PAINT(4,78),HUE(10,1)
  1058.  973   2                  ROW(1,1)   STRING('┌─{76}┐'),ENH
  1059.  974   2                  ROW(2,1)   REPEAT(2),EVERY(2);STRING('│<0{76}>│'),ENH .
  1060.  975   2                  ROW(3,1)   REPEAT(2),EVERY(2);STRING('├─{76}┤'),ENH .
  1061.  976   2                  ROW(6,1)   REPEAT(13);STRING('│<0{76}>│'),ENH .
  1062.  977   2                  ROW(19,1)  STRING('├─{76}┤'),ENH
  1063.  978   2                  ROW(20,1)  REPEAT(2);STRING('│<0{76}>│'),ENH .
  1064.  979   2                  ROW(22,1)  STRING('└─{76}┘'),ENH
  1065.  980   2                  ROW(2,27)  STRING('VIEW COMPANIES BY LOCATION')
  1066.  981   2                  ROW(4,2)   STRING('Location {13}Company name {24}Product')
  1067.  982   2                  ROW(20,23) STRING('Use arrow keys to point and select')
  1068.  983   2                  ROW(21,7)  STRING('Press (Enter) to view company information. ' |
  1069.  984   2                               & '(Esc) for previous menu')
  1070.  985   2                             ENTRY,USE(?FIRST_FIELD)
  1071.  986   2                             REPEAT(13),EVERY(1),INDEX(NDX)
  1072.  987   3                  ROW(6,2)     POINT(1,76),USE(?POINT),ESC(?-1)
  1073.  988   3   STATE            COL(2)     STRING(2)
  1074.  989   3   COMPANY_NAME     COL(23)    STRING(30)
  1075.  990   3   PRODUCT          COL(59)    STRING(19)
  1076.  991   3                .            .
  1077.  992       
  1078.  993   1   NDX          BYTE                                !REPEAT INDEX FOR POINT FIELD
  1079.  994   1   ROW          BYTE                                !ACTUAL ROW OF SCROLL AREA
  1080.  995   1   COL          BYTE                                !ACTUAL COLUMN OF SCROLL AREA
  1081.  996   1   MAX          LONG                                !LESSER OF COUNT AND RECORDS
  1082.  997   1   COUNT        BYTE(13)                            !NUMBER OF ITEMS TO SCROLL
  1083.  998   1   ROWS         BYTE(13)                            !NUMBER OF ROWS TO SCROLL
  1084.  999   1   COLS         BYTE(76)                            !NUMBER OF COLUMNS TO SCROLL
  1085. 1000       
  1086. 1001       
  1087. DOD.CLA                                                                    CLARION COMPILER v2.0
  1088.  
  1089. VIEW COMPANIES BY LOCATION                                              6/27/93  7:50 PM PAGE 26
  1090.  
  1091. 1003   1     CODE
  1092. 1004   1     ACTION# = ACTION                               !SAVE ACTION
  1093. 1005   1     OPEN(SCREEN)                                   !OPEN THE SCREEN
  1094. 1006   1     SETCURSOR                                      !TURN OFF ANY CURSOR
  1095. 1007   1     NDX = 1                                        !PUT SELECTOR BAR ON TOP ITEM
  1096. 1008   1     ROW = ROW(?POINT)                              !REMEMBER TOP ROW AND
  1097. 1009   1     COL = COL(?POINT)                              !  LEFT COLUMN OF SCROLL AREA
  1098. 1010   1     IF ACTION = 4                                  !IF THIS IS A LOOKUP REQUEST
  1099. 1011   2       SET(LIS:STATE_KEY,LIS:STATE_KEY)             !  FIND IT IN THE FILE
  1100. 1012   2       NEXT(LISTINGS)                               !    AND READ IT
  1101. 1013   2       POINTER# = POINTER(LISTINGS)                 !  SAVE POINTER TO CURRENT
  1102. 1014   2       SKIP(LISTINGS,-1)                            !  MAKE IT THE TOP RECORD
  1103. 1015   2       DO SHOW_TABLE                                !  FILL SCROLL AREA
  1104. 1016   2       GET(LISTINGS,POINTER#)                       !  AND REFRESH CURRENT RECORD
  1105. 1017   2     ELSE                                           !OTHERWISE
  1106. 1018   2       SET(LIS:STATE_KEY)                           !  SET TO FIRST RECORD IN FILE
  1107. 1019   2       DO SHOW_TABLE                                !  FILL SCROLL AREA
  1108. 1020   2     .
  1109. 1021   1     RECORDS# = TRUE                                !INITIALIZE RECORDS FLAG
  1110. 1022   1     LOOP                                           !LOOP UNTIL USER EXITS
  1111. 1023   2       MAX = RECORDS(LIS:STATE_KEY)                 !SET LESSER OF FILE RECORD
  1112. 1024   2       IF MAX > COUNT THEN MAX = COUNT.             !  COUNT AND SCROLL ITEM COUNT
  1113. 1025   2       ACTION = ACTION#                             !RESTORE ACTION
  1114. 1026   2       POINTER# = 0                                 !CLEAR ADD POINTER
  1115. 1027   2       IF ~RECORDS(LIS:STATE_KEY)                   !IF THERE ARE NO RECORDS
  1116. 1028   3         CLEAR(LIS:RECORD)                          !  CLEAR RECORD AREA
  1117. 1029   3         ACTION = 1                                 !  SET ACTION TO ADD
  1118. 1030   3         UPDATE_LIST                                !  CALL FORM FOR FIRST RECORD
  1119. 1031   3         IF ~RECORDS(LIS:STATE_KEY) THEN BREAK.     !  IF ADD ABORTED THEN EXIT
  1120. 1032   3         DO SHOW_RECORD
  1121. 1033   3         SET(LIS:STATE_KEY)                         !  SET TO NEW RECORD
  1122. 1034   3         DO SHOW_TABLE                              !  FILL SCROLL AREA
  1123. 1035   3         NDX = 1                                    !  PUT SELECTOR BAR ON TOP ITEM
  1124. 1036   3         MAX = 1                                    !  MAXIMUM DISPLAYED IS 1
  1125. 1037   3       .                                            !
  1126. 1038   2       ALERT                                        !RESET ALERTED KEYS
  1127. 1039   2       ALERT(REJECT_KEY)                            !ALERT SCREEN REJECT KEY
  1128. 1040   2       ALERT(ACCEPT_KEY)                            !ALERT SCREEN ACCEPT KEY
  1129. 1041   2       ACCEPT                                       !READ A FIELD
  1130. 1042   2       IF KEYCODE() = REJECT_KEY THEN BREAK.        !RETURN ON SCREEN REJECT KEY
  1131. 1043       
  1132. 1044   2       EDIT_RANGE# = FIELD()                        !SET ONE FIELD EDIT RANGE
  1133. 1045   2       IF KEYCODE() = ACCEPT_KEY AND |              !ON SCREEN ACCEPT KEY
  1134. 1046   2          EDIT_RANGE# <> ?POINT                     ! AND NOT ON THE POINT FIELD
  1135. 1047   3         UPDATE                                     !  MOVE ALL FIELDS FROM SCREEN
  1136. 1048   3         EDIT_RANGE# = ?POINT - 1                   !  AND EDIT REMAINING FIELDS
  1137. 1049   3         SELECT(?POINT)                             !  IF OK THEN START HERE NEXT
  1138. 1050   3       .                                            !
  1139. 1051       
  1140. 1052   2       LOOP FIELD# = FIELD() TO EDIT_RANGE#         !EDIT FIELDS IN THE EDIT RANGE
  1141. 1053       
  1142. 1054   3         CASE FIELD#                                !JUMP TO FIELD EDIT ROUTINE
  1143. 1055   4         OF ?FIRST_FIELD                            !FROM THE FIRST FIELD
  1144. 1056   4           IF KEYCODE() = ESC_KEY  OR |             !  RETURN ON ESC KEY
  1145. DOD.CLA                                                                    CLARION COMPILER v2.0
  1146.  
  1147. VIEW COMPANIES BY LOCATION                                              6/27/93  7:50 PM PAGE 27
  1148.  
  1149. 1057   4              RECORDS# = FALSE                      !  OR NO RECORDS
  1150. 1058   5                RETURN
  1151. 1059   5           .
  1152. 1060   4           RECORDS# = TRUE                          !  ASSUME RECORDS ARE HERE
  1153. 1061   4         OF ?POINT                                  !FROM THE POINT FIELD
  1154. 1062   4           CASE KEYCODE()                           !  PROCESS THE KEYSTROKE
  1155. 1063   5           OF INS_KEY                               !INSERT KEY
  1156. 1064   5             CLEAR(LIS:RECORD)                      !  CLEAR RECORD AREA
  1157. 1065   5             ACTION = 1                             !  SET ACTION TO ADD
  1158. 1066   5             UPDATE_LIST                            !  CALL FORM FOR NEW RECORD
  1159. 1067   5             IF ~ACTION                             !  IF A NEW RECORD WAS ADDED
  1160. 1068   6               POINTER# = POINTER(LISTINGS)         !    REMEMBER WHICH RECORD
  1161. 1069   6               SET(LIS:STATE_KEY,LIS:STATE_KEY)     !    SET TO NEW RECORD AND
  1162. 1070   6               SKIP(LISTINGS,-1)                    !    MAKE IT THE TOP ITEM
  1163. 1071   6               DO SHOW_TABLE                        !    DISPLAY THAT PAGE
  1164. 1072   6             .
  1165. 1073   5           OF ENTER_KEY                             !ENTER KEY OR
  1166. 1074   5           OROF ACCEPT_KEY                          !CTRL ENTER KEY
  1167. 1075   5             DO GET_RECORD                          !  READ THE SELECTED RECORD
  1168. 1076   5             IF ACTION = 4 AND KEYCODE() = ENTER_KEY!  IF THIS IS A LOOKUP REQUEST
  1169. 1077   6               ACTION = 0                           !    SET ACTION TO COMPLETE
  1170. 1078   6               RETURN                               !    AND RETURN TO CALLER
  1171. 1079   6             .                                      !
  1172. 1080   5             ACTION = 2                             !  SET ACTION TO CHANGE
  1173. 1081   5             UPDATE_LIST                            !  CALL FORM TO CHANGE RECORD
  1174. 1082   5             IF ~ACTION                             !  IF THE RECORD WAS CHANGED
  1175. 1083   6               POINTER# = POINTER(LISTINGS)         !    REMEMBER WHICH RECORD
  1176. 1084   6               SET(LIS:STATE_KEY,LIS:STATE_KEY)     !    SET TO CHANGED RECORD
  1177. 1085   6               SKIP(LISTINGS,-1)                    !    MAKE IT THE TOP ITEM
  1178. 1086   6               DO SHOW_TABLE                        !    AND DISPLAY THAT PAGE
  1179. 1087   6             ELSE                                   !  OTHERWISE
  1180. 1088   6               SKIP(LISTINGS,(MAX-NDX))             !  SKIP BACK TO SAME PAGE
  1181. 1089   6             .
  1182. 1090   5           OF DEL_KEY                               !DELETE KEY
  1183. 1091   5             DO GET_RECORD                          !  READ THE SELECTED RECORD
  1184. 1092   5             ACTION = 3                             !  SET ACTION TO DELETE
  1185. 1093   5             UPDATE_LIST                            !  CALL FORM TO DELETE RECORD
  1186. 1094   5             IF ~ACTION                             !  IF RECORD WAS DELETED
  1187. 1095   6               SKIP(LISTINGS,-NDX)                  !    SET NEXT RECORD ON TOP
  1188. 1096   6               DO SHOW_TABLE                        !    AND DISPLAY THAT PAGE
  1189. 1097   6             ELSE                                   !  OTHERWISE
  1190. 1098   6               SKIP(LISTINGS,(MAX-NDX))             !  SKIP BACK TO SAME PAGE
  1191. 1099   6             .
  1192. 1100   5           OF DOWN_KEY                              !DOWN ARROW KEY
  1193. 1101   5             IF NOT EOF(LISTINGS)                   !  IF THERE ARE MORE RECORDS
  1194. 1102   6               SCROLL(ROW,COL,ROWS,COLS,ROWS(?POINT)) !  SCROLL THE SCREEN UP
  1195. 1103   6               NEXT(LISTINGS)                       !    READ THE BOTTOM RECORD
  1196. 1104   6               DO SHOW_RECORD                       !    AND DISPLAY IT
  1197. 1105   6             .
  1198. 1106   5           OF PGDN_KEY                              !PAGE DOWN KEY
  1199. 1107   5             IF EOF(LISTINGS)                       !  ON THE LAST PAGE
  1200. 1108   6               NDX = MAX                            !    POINT TO BOTTOM ITEM
  1201. 1109   6             ELSE                                   !  OTHERWISE
  1202. 1110   6               DO SHOW_TABLE                        !    DISPLAY NEXT PAGE
  1203. DOD.CLA                                                                    CLARION COMPILER v2.0
  1204.  
  1205. VIEW COMPANIES BY LOCATION                                              6/27/93  7:50 PM PAGE 28
  1206.  
  1207. 1111   6             .
  1208. 1112   5           OF CTRL_PGDN                             !CTRL-PAGE DOWN KEY
  1209. 1113   5             NDX = MAX                              !  POINT TO BOTTOM ITEM
  1210. 1114   5             IF NOT EOF(LISTINGS)                   !  ON THE LAST PAGE
  1211. 1115   6               SET(LIS:STATE_KEY)                   !    SET TO BOTTOM RECORD MINUS
  1212. 1116   6               SKIP(LISTINGS,-COUNT)                !      ONE PAGE OF RECORDS
  1213. 1117   6               DO SHOW_TABLE                        !    DISPLAY THE LAST PAGE
  1214. 1118   6             .
  1215. 1119   5           OF UP_KEY                                !UP ARROW KEY
  1216. 1120   5             SKIP(LISTINGS,-(COUNT-1))              !    SET TO TOP RECORD MINUS 1
  1217. 1121   5             IF NOT BOF(LISTINGS)                   !  IF THERE IS A PRIOR RECORD
  1218. 1122   6               PREVIOUS(LISTINGS)                   !     READ THE TOP RECORD
  1219. 1123   6               IF NOT ERROR()                       !    IF READ A RECORD
  1220. 1124   7                 SCROLL(ROW,COL,ROWS,COLS,-(ROWS(?POINT)))! SCROLL THE SCREEN DOWN
  1221. 1125   7                 DO SHOW_RECORD                     !       AND DISPLAY IT
  1222. 1126   7               ELSIF ERRORCODE() = 33               !    ELSIF RECORD NOT AVAILABLE
  1223. 1127   7                 NEXT(LISTINGS)                     !       RETRIEVE FIRST ONE
  1224. 1128   7             . .
  1225. 1129   5             SKIP(LISTINGS,COUNT-1)                 !  SET RECORD FOR NEXT PAGE
  1226. 1130       
  1227. 1131   5           OF PGUP_KEY                              !PAGE UP KEY
  1228. 1132   5             SKIP(LISTINGS,-(COUNT-1))              !  SET TO TOP RECORD MINUS ONE
  1229. 1133   5             IF BOF(LISTINGS)                       !  IF THERE IS NO PRIOR RECORD
  1230. 1134   6               NDX = 1                              !    THEN POINT TO TOP ITEM
  1231. 1135   6               SKIP(LISTINGS,COUNT-1)               !    SET RECORD FOR THIS PAGE
  1232. 1136   6             ELSE                                   !  OTHERWISE
  1233. 1137   6               SKIP(LISTINGS,-(COUNT+1))            !    SET RECORD FOR PRIOR PAGE
  1234. 1138   6               DO SHOW_TABLE                        !    AND DISPLAY THE PAGE
  1235. 1139   6             .
  1236. 1140   5           OF CTRL_PGUP                             !CTRL-PAGE UP KEY
  1237. 1141   5             SET(LIS:STATE_KEY)                     !  SET TO FIRST RECORD
  1238. 1142   5             NDX = 1                                !  POINT TO TOP ITEM
  1239. 1143   5             DO SHOW_TABLE                          !  AND DISPLAY THE PAGE
  1240. 1144   5           .
  1241. 1145   4     . . .
  1242. 1146   1     RETURN                                         !RETURN TO CALLER
  1243. 1147       
  1244. 1148   1   SHOW_TABLE ROUTINE                               !DISPLAY A PAGE OF RECORDS
  1245. 1149   1     SKIP(LISTINGS,COUNT-1)                         !  SET TO THE BOTTOM RECORD
  1246. 1150   1     IF EOF(LISTINGS)                               !  FOR A PARTIAL PAGE
  1247. 1151   2       SET(LIS:STATE_KEY)                           !    SET TO THE LAST RECORD
  1248. 1152   2       SKIP(LISTINGS,-COUNT)                        !    AND BACK UP ONE PAGE
  1249. 1153   2     ELSE                                           !  OTHERWISE
  1250. 1154   2       SKIP(LISTINGS,-(COUNT-1))                    !    SET RECORD FOR THIS PAGE
  1251. 1155   2     .
  1252. 1156   1     NDX# = NDX                                     !  SAVE REPEAT INDEX
  1253. 1157   1     LOOP NDX = 1 TO COUNT                          !  LOOP THRU THE SCROLL AREA
  1254. 1158   2       IF EOF(LISTINGS) THEN BREAK.                 !    BREAK ON END OF FILE
  1255. 1159   2       NEXT(LISTINGS)                               !    READ THE NEXT RECORD
  1256. 1160   2       DO SHOW_RECORD                               !    AND DISPLAY IT
  1257. 1161   2       IF POINTER(LISTINGS) = POINTER#
  1258. 1162   3         NDX# = NDX                                 !  POINT TO CORRECT RECORD
  1259. 1163   3     . .
  1260. 1164   1     NDX = NDX#                                     !  RESTORE REPEAT INDEX
  1261. DOD.CLA                                                                    CLARION COMPILER v2.0
  1262.  
  1263. VIEW COMPANIES BY LOCATION                                              6/27/93  7:50 PM PAGE 29
  1264.  
  1265. 1165   1     CLEAR(LIS:RECORD)                              !  CLEAR RECORD AREA
  1266. 1166   1     IF RECORDS(LIS:STATE_KEY) < COUNT              !  IF RECORDS DO NOT FILL
  1267. 1167   2        NDX#= RECORDS(LIS:STATE_KEY) * 1            !     GET NUMBER TIMES SIZE
  1268. 1168   2        BLANK(ROW + NDX#,COL,ROWS-NDX#,COLS)        !     BLANK REMAINING AREA
  1269. 1169   2     .
  1270. 1170       
  1271. 1171   1   SHOW_RECORD ROUTINE                              !DISPLAY A RECORD
  1272. 1172   1     SCR:STATE = LIS:STATE
  1273. 1173   1     SCR:COMPANY_NAME = LIS:COMPANY_NAME
  1274. 1174   1     SCR:PRODUCT = LIS:PRODUCT
  1275. 1175       
  1276. 1176   1   GET_RECORD ROUTINE                               !READ SELECTED RECORD
  1277. 1177   1     SKIP(LISTINGS,-(MAX-NDX+1))                    !  SET TO SELECTED RECORD
  1278. 1178   1     NEXT(LISTINGS)                                 !    AND READ IT
  1279. 1179       
  1280. 1180   1   FIND_RECORD ROUTINE                              !LOCATE REQUESTED RECORD
  1281. 1181   1     SET(LIS:STATE_KEY,LIS:STATE_KEY)               !  SET TO REQUESTED RECORD
  1282. 1182   1     IF EOF(LISTINGS)                               !  IF BEYOND END OF FILE
  1283. 1183   2       PREVIOUS(LISTINGS)                           !    GET THE LAST RECORD
  1284. 1184   2     ELSE                                           !  ELSE
  1285. 1185   2       NEXT(LISTINGS)                               !    READ THIS RECORD
  1286. 1186   2     .
  1287. 1187   1     POINTER# = POINTER(LISTINGS)                   !  SAVE ITS RECORD POINTER
  1288. 1188   1     SKIP(LISTINGS,-1)                              !  MAKE IT THE TOP RECORD
  1289. 1189   1     DO SHOW_TABLE                                  !  AND FILL THE SCROLL AREA
  1290. 1190       
  1291. 1191   1   SAME_PAGE ROUTINE                                !SET TO SAME PAGE ROUTINE
  1292. 1192   1     POINTER# = POINTER(LISTINGS)                   !  SAVE ITS RECORD POINTER
  1293. 1193   1     GET(LISTINGS,POINTER#)                         !  GET THE RECORD
  1294. 1194   1     SET(LIS:STATE_KEY,LIS:STATE_KEY)               !  SET TO THE SAME RECORD
  1295. 1195   1     SKIP(LISTINGS,-1)                              !  SKIP TO TOP OF SAME PAGE
  1296. 1196       
  1297. DOD.CLA                                                                    CLARION COMPILER v2.0
  1298.  
  1299. PRODUCT AND SERVICE CATEGORIES                                          6/27/93  7:50 PM PAGE 30
  1300.  
  1301. 1198   1   VIEW_CATEGO  PROCEDURE
  1302. 1199       
  1303. 1200   1   SCREEN       SCREEN       PRE(SCR),WINDOW(22,50),HUE(15,4)
  1304. 1201   2                  ROW(1,1)   STRING('┌─{48}┐'),ENH
  1305. 1202   2                  ROW(2,1)   REPEAT(2),EVERY(18);STRING('│<0{48}>│'),ENH .
  1306. 1203   2                  ROW(3,1)   REPEAT(2),EVERY(16);STRING('├─{48}┤'),ENH .
  1307. 1204   2                  ROW(4,1)   REPEAT(15);STRING('│<0{48}>│'),ENH .
  1308. 1205   2                  ROW(21,1)  STRING('│<0{48}>│'),ENH
  1309. 1206   2                  ROW(22,1)  STRING('└─{48}┘'),ENH
  1310. 1207   2                  ROW(2,11)  STRING('PRODUCT AND SERVICE CATEGORIES')
  1311. 1208   2                  ROW(20,12) STRING('Press (Esc) for previous menu')
  1312. 1209   2                  ROW(21,4)  STRING('Press (Enter) then F2 to print category list')
  1313. 1210   2                             ENTRY,USE(?FIRST_FIELD)
  1314. 1211   2                             REPEAT(15),EVERY(1),INDEX(NDX)
  1315. 1212   3                  ROW(4,2)     POINT(1,25),USE(?POINT),ESC(?-1)
  1316. 1213   3   CATEGORY         COL(2)     STRING(25)
  1317. 1214   3                .            .
  1318. 1215       
  1319. 1216   1   NDX          BYTE                                !REPEAT INDEX FOR POINT FIELD
  1320. 1217   1   ROW          BYTE                                !ACTUAL ROW OF SCROLL AREA
  1321. 1218   1   COL          BYTE                                !ACTUAL COLUMN OF SCROLL AREA
  1322. 1219   1   MAX          LONG                                !LESSER OF COUNT AND RECORDS
  1323. 1220   1   COUNT        BYTE(15)                            !NUMBER OF ITEMS TO SCROLL
  1324. 1221   1   ROWS         BYTE(15)                            !NUMBER OF ROWS TO SCROLL
  1325. 1222   1   COLS         BYTE(25)                            !NUMBER OF COLUMNS TO SCROLL
  1326. 1223       
  1327. 1224       
  1328. DOD.CLA                                                                    CLARION COMPILER v2.0
  1329.  
  1330. PRODUCT AND SERVICE CATEGORIES                                          6/27/93  7:50 PM PAGE 31
  1331.  
  1332. 1226   1     CODE
  1333. 1227   1     ACTION# = ACTION                               !SAVE ACTION
  1334. 1228   1     OPEN(SCREEN)                                   !OPEN THE SCREEN
  1335. 1229   1     SETCURSOR                                      !TURN OFF ANY CURSOR
  1336. 1230   1     NDX = 1                                        !PUT SELECTOR BAR ON TOP ITEM
  1337. 1231   1     ROW = ROW(?POINT)                              !REMEMBER TOP ROW AND
  1338. 1232   1     COL = COL(?POINT)                              !  LEFT COLUMN OF SCROLL AREA
  1339. 1233   1     IF ACTION = 4                                  !IF THIS IS A LOOKUP REQUEST
  1340. 1234   2       SET(IND:CAT_INDEX,IND:CAT_INDEX)             !  FIND IT IN THE FILE
  1341. 1235   2       NEXT(INDEX)                                  !    AND READ IT
  1342. 1236   2       POINTER# = POINTER(INDEX)                    !  SAVE POINTER TO CURRENT
  1343. 1237   2       SKIP(INDEX,-1)                               !  MAKE IT THE TOP RECORD
  1344. 1238   2       DO SHOW_TABLE                                !  FILL SCROLL AREA
  1345. 1239   2       GET(INDEX,POINTER#)                          !  AND REFRESH CURRENT RECORD
  1346. 1240   2     ELSE                                           !OTHERWISE
  1347. 1241   2       SET(IND:CAT_INDEX)                           !  SET TO FIRST RECORD IN FILE
  1348. 1242   2       DO SHOW_TABLE                                !  FILL SCROLL AREA
  1349. 1243   2     .
  1350. 1244   1     RECORDS# = TRUE                                !INITIALIZE RECORDS FLAG
  1351. 1245   1     LOOP                                           !LOOP UNTIL USER EXITS
  1352. 1246   2       MAX = RECORDS(IND:CAT_INDEX)                 !SET LESSER OF FILE RECORD
  1353. 1247   2       IF MAX > COUNT THEN MAX = COUNT.             !  COUNT AND SCROLL ITEM COUNT
  1354. 1248   2       ACTION = ACTION#                             !RESTORE ACTION
  1355. 1249   2       POINTER# = 0                                 !CLEAR ADD POINTER
  1356. 1250   2       IF ~RECORDS(IND:CAT_INDEX)                   !IF THERE ARE NO RECORDS
  1357. 1251   3         CLEAR(IND:RECORD)                          !  CLEAR RECORD AREA
  1358. 1252   3         ACTION = 1                                 !  SET ACTION TO ADD
  1359. 1253   3         UPDATE_CAT                                 !  CALL FORM FOR FIRST RECORD
  1360. 1254   3         IF ~RECORDS(IND:CAT_INDEX) THEN BREAK.     !  IF ADD ABORTED THEN EXIT
  1361. 1255   3         DO SHOW_RECORD
  1362. 1256   3         SET(IND:CAT_INDEX)                         !  SET TO NEW RECORD
  1363. 1257   3         DO SHOW_TABLE                              !  FILL SCROLL AREA
  1364. 1258   3         NDX = 1                                    !  PUT SELECTOR BAR ON TOP ITEM
  1365. 1259   3         MAX = 1                                    !  MAXIMUM DISPLAYED IS 1
  1366. 1260   3       .                                            !
  1367. 1261   2       ALERT                                        !RESET ALERTED KEYS
  1368. 1262   2       ALERT(REJECT_KEY)                            !ALERT SCREEN REJECT KEY
  1369. 1263   2       ALERT(ACCEPT_KEY)                            !ALERT SCREEN ACCEPT KEY
  1370. 1264   2       ACCEPT                                       !READ A FIELD
  1371. 1265   2       IF KEYCODE() = REJECT_KEY THEN BREAK.        !RETURN ON SCREEN REJECT KEY
  1372. 1266       
  1373. 1267   2       EDIT_RANGE# = FIELD()                        !SET ONE FIELD EDIT RANGE
  1374. 1268   2       IF KEYCODE() = ACCEPT_KEY AND |              !ON SCREEN ACCEPT KEY
  1375. 1269   2          EDIT_RANGE# <> ?POINT                     ! AND NOT ON THE POINT FIELD
  1376. 1270   3         UPDATE                                     !  MOVE ALL FIELDS FROM SCREEN
  1377. 1271   3         EDIT_RANGE# = ?POINT - 1                   !  AND EDIT REMAINING FIELDS
  1378. 1272   3         SELECT(?POINT)                             !  IF OK THEN START HERE NEXT
  1379. 1273   3       .                                            !
  1380. 1274       
  1381. 1275   2       LOOP FIELD# = FIELD() TO EDIT_RANGE#         !EDIT FIELDS IN THE EDIT RANGE
  1382. 1276       
  1383. 1277   3         CASE FIELD#                                !JUMP TO FIELD EDIT ROUTINE
  1384. 1278   4         OF ?FIRST_FIELD                            !FROM THE FIRST FIELD
  1385. 1279   4           IF KEYCODE() = ESC_KEY  OR |             !  RETURN ON ESC KEY
  1386. DOD.CLA                                                                    CLARION COMPILER v2.0
  1387.  
  1388. PRODUCT AND SERVICE CATEGORIES                                          6/27/93  7:50 PM PAGE 32
  1389.  
  1390. 1280   4              RECORDS# = FALSE                      !  OR NO RECORDS
  1391. 1281   5                RETURN
  1392. 1282   5           .
  1393. 1283   4           RECORDS# = TRUE                          !  ASSUME RECORDS ARE HERE
  1394. 1284   4         OF ?POINT                                  !FROM THE POINT FIELD
  1395. 1285   4           CASE KEYCODE()                           !  PROCESS THE KEYSTROKE
  1396. 1286   5           OF INS_KEY                               !INSERT KEY
  1397. 1287   5             CLEAR(IND:RECORD)                      !  CLEAR RECORD AREA
  1398. 1288   5             ACTION = 1                             !  SET ACTION TO ADD
  1399. 1289   5             UPDATE_CAT                             !  CALL FORM FOR NEW RECORD
  1400. 1290   5             IF ~ACTION                             !  IF A NEW RECORD WAS ADDED
  1401. 1291   6               POINTER# = POINTER(INDEX)            !    REMEMBER WHICH RECORD
  1402. 1292   6               SET(IND:CAT_INDEX,IND:CAT_INDEX)     !    SET TO NEW RECORD AND
  1403. 1293   6               SKIP(INDEX,-1)                       !    MAKE IT THE TOP ITEM
  1404. 1294   6               DO SHOW_TABLE                        !    DISPLAY THAT PAGE
  1405. 1295   6             .
  1406. 1296   5           OF ENTER_KEY                             !ENTER KEY OR
  1407. 1297   5           OROF ACCEPT_KEY                          !CTRL ENTER KEY
  1408. 1298   5             DO GET_RECORD                          !  READ THE SELECTED RECORD
  1409. 1299   5             IF ACTION = 4 AND KEYCODE() = ENTER_KEY!  IF THIS IS A LOOKUP REQUEST
  1410. 1300   6               ACTION = 0                           !    SET ACTION TO COMPLETE
  1411. 1301   6               RETURN                               !    AND RETURN TO CALLER
  1412. 1302   6             .                                      !
  1413. 1303   5             ACTION = 2                             !  SET ACTION TO CHANGE
  1414. 1304   5             UPDATE_CAT                             !  CALL FORM TO CHANGE RECORD
  1415. 1305   5             IF ~ACTION                             !  IF THE RECORD WAS CHANGED
  1416. 1306   6               POINTER# = POINTER(INDEX)            !    REMEMBER WHICH RECORD
  1417. 1307   6               SET(IND:CAT_INDEX,IND:CAT_INDEX)     !    SET TO CHANGED RECORD
  1418. 1308   6               SKIP(INDEX,-1)                       !    MAKE IT THE TOP ITEM
  1419. 1309   6               DO SHOW_TABLE                        !    AND DISPLAY THAT PAGE
  1420. 1310   6             ELSE                                   !  OTHERWISE
  1421. 1311   6               SKIP(INDEX,(MAX-NDX))                !  SKIP BACK TO SAME PAGE
  1422. 1312   6             .
  1423. 1313   5           OF DEL_KEY                               !DELETE KEY
  1424. 1314   5             DO GET_RECORD                          !  READ THE SELECTED RECORD
  1425. 1315   5             ACTION = 3                             !  SET ACTION TO DELETE
  1426. 1316   5             UPDATE_CAT                             !  CALL FORM TO DELETE RECORD
  1427. 1317   5             IF ~ACTION                             !  IF RECORD WAS DELETED
  1428. 1318   6               SKIP(INDEX,-NDX)                     !    SET NEXT RECORD ON TOP
  1429. 1319   6               DO SHOW_TABLE                        !    AND DISPLAY THAT PAGE
  1430. 1320   6             ELSE                                   !  OTHERWISE
  1431. 1321   6               SKIP(INDEX,(MAX-NDX))                !  SKIP BACK TO SAME PAGE
  1432. 1322   6             .
  1433. 1323   5           OF DOWN_KEY                              !DOWN ARROW KEY
  1434. 1324   5             IF NOT EOF(INDEX)                      !  IF THERE ARE MORE RECORDS
  1435. 1325   6               SCROLL(ROW,COL,ROWS,COLS,ROWS(?POINT)) !  SCROLL THE SCREEN UP
  1436. 1326   6               NEXT(INDEX)                          !    READ THE BOTTOM RECORD
  1437. 1327   6               DO SHOW_RECORD                       !    AND DISPLAY IT
  1438. 1328   6             .
  1439. 1329   5           OF PGDN_KEY                              !PAGE DOWN KEY
  1440. 1330   5             IF EOF(INDEX)                          !  ON THE LAST PAGE
  1441. 1331   6               NDX = MAX                            !    POINT TO BOTTOM ITEM
  1442. 1332   6             ELSE                                   !  OTHERWISE
  1443. 1333   6               DO SHOW_TABLE                        !    DISPLAY NEXT PAGE
  1444. DOD.CLA                                                                    CLARION COMPILER v2.0
  1445.  
  1446. PRODUCT AND SERVICE CATEGORIES                                          6/27/93  7:50 PM PAGE 33
  1447.  
  1448. 1334   6             .
  1449. 1335   5           OF CTRL_PGDN                             !CTRL-PAGE DOWN KEY
  1450. 1336   5             NDX = MAX                              !  POINT TO BOTTOM ITEM
  1451. 1337   5             IF NOT EOF(INDEX)                      !  ON THE LAST PAGE
  1452. 1338   6               SET(IND:CAT_INDEX)                   !    SET TO BOTTOM RECORD MINUS
  1453. 1339   6               SKIP(INDEX,-COUNT)                   !      ONE PAGE OF RECORDS
  1454. 1340   6               DO SHOW_TABLE                        !    DISPLAY THE LAST PAGE
  1455. 1341   6             .
  1456. 1342   5           OF UP_KEY                                !UP ARROW KEY
  1457. 1343   5             SKIP(INDEX,-(COUNT-1))                 !    SET TO TOP RECORD MINUS 1
  1458. 1344   5             IF NOT BOF(INDEX)                      !  IF THERE IS A PRIOR RECORD
  1459. 1345   6               PREVIOUS(INDEX)                      !     READ THE TOP RECORD
  1460. 1346   6               IF NOT ERROR()                       !    IF READ A RECORD
  1461. 1347   7                 SCROLL(ROW,COL,ROWS,COLS,-(ROWS(?POINT)))! SCROLL THE SCREEN DOWN
  1462. 1348   7                 DO SHOW_RECORD                     !       AND DISPLAY IT
  1463. 1349   7               ELSIF ERRORCODE() = 33               !    ELSIF RECORD NOT AVAILABLE
  1464. 1350   7                 NEXT(INDEX)                        !       RETRIEVE FIRST ONE
  1465. 1351   7             . .
  1466. 1352   5             SKIP(INDEX,COUNT-1)                    !  SET RECORD FOR NEXT PAGE
  1467. 1353       
  1468. 1354   5           OF PGUP_KEY                              !PAGE UP KEY
  1469. 1355   5             SKIP(INDEX,-(COUNT-1))                 !  SET TO TOP RECORD MINUS ONE
  1470. 1356   5             IF BOF(INDEX)                          !  IF THERE IS NO PRIOR RECORD
  1471. 1357   6               NDX = 1                              !    THEN POINT TO TOP ITEM
  1472. 1358   6               SKIP(INDEX,COUNT-1)                  !    SET RECORD FOR THIS PAGE
  1473. 1359   6             ELSE                                   !  OTHERWISE
  1474. 1360   6               SKIP(INDEX,-(COUNT+1))               !    SET RECORD FOR PRIOR PAGE
  1475. 1361   6               DO SHOW_TABLE                        !    AND DISPLAY THE PAGE
  1476. 1362   6             .
  1477. 1363   5           OF CTRL_PGUP                             !CTRL-PAGE UP KEY
  1478. 1364   5             SET(IND:CAT_INDEX)                     !  SET TO FIRST RECORD
  1479. 1365   5             NDX = 1                                !  POINT TO TOP ITEM
  1480. 1366   5             DO SHOW_TABLE                          !  AND DISPLAY THE PAGE
  1481. 1367   5           .
  1482. 1368   4     . . .
  1483. 1369   1     RETURN                                         !RETURN TO CALLER
  1484. 1370       
  1485. 1371   1   SHOW_TABLE ROUTINE                               !DISPLAY A PAGE OF RECORDS
  1486. 1372   1     SKIP(INDEX,COUNT-1)                            !  SET TO THE BOTTOM RECORD
  1487. 1373   1     IF EOF(INDEX)                                  !  FOR A PARTIAL PAGE
  1488. 1374   2       SET(IND:CAT_INDEX)                           !    SET TO THE LAST RECORD
  1489. 1375   2       SKIP(INDEX,-COUNT)                           !    AND BACK UP ONE PAGE
  1490. 1376   2     ELSE                                           !  OTHERWISE
  1491. 1377   2       SKIP(INDEX,-(COUNT-1))                       !    SET RECORD FOR THIS PAGE
  1492. 1378   2     .
  1493. 1379   1     NDX# = NDX                                     !  SAVE REPEAT INDEX
  1494. 1380   1     LOOP NDX = 1 TO COUNT                          !  LOOP THRU THE SCROLL AREA
  1495. 1381   2       IF EOF(INDEX) THEN BREAK.                    !    BREAK ON END OF FILE
  1496. 1382   2       NEXT(INDEX)                                  !    READ THE NEXT RECORD
  1497. 1383   2       DO SHOW_RECORD                               !    AND DISPLAY IT
  1498. 1384   2       IF POINTER(INDEX) = POINTER#
  1499. 1385   3         NDX# = NDX                                 !  POINT TO CORRECT RECORD
  1500. 1386   3     . .
  1501. 1387   1     NDX = NDX#                                     !  RESTORE REPEAT INDEX
  1502. DOD.CLA                                                                    CLARION COMPILER v2.0
  1503.  
  1504. PRODUCT AND SERVICE CATEGORIES                                          6/27/93  7:50 PM PAGE 34
  1505.  
  1506. 1388   1     CLEAR(IND:RECORD)                              !  CLEAR RECORD AREA
  1507. 1389   1     IF RECORDS(IND:CAT_INDEX) < COUNT              !  IF RECORDS DO NOT FILL
  1508. 1390   2        NDX#= RECORDS(IND:CAT_INDEX) * 1            !     GET NUMBER TIMES SIZE
  1509. 1391   2        BLANK(ROW + NDX#,COL,ROWS-NDX#,COLS)        !     BLANK REMAINING AREA
  1510. 1392   2     .
  1511. 1393       
  1512. 1394   1   SHOW_RECORD ROUTINE                              !DISPLAY A RECORD
  1513. 1395   1     SCR:CATEGORY = IND:CATEGORY
  1514. 1396       
  1515. 1397   1   GET_RECORD ROUTINE                               !READ SELECTED RECORD
  1516. 1398   1     SKIP(INDEX,-(MAX-NDX+1))                       !  SET TO SELECTED RECORD
  1517. 1399   1     NEXT(INDEX)                                    !    AND READ IT
  1518. 1400       
  1519. 1401   1   FIND_RECORD ROUTINE                              !LOCATE REQUESTED RECORD
  1520. 1402   1     SET(IND:CAT_INDEX,IND:CAT_INDEX)               !  SET TO REQUESTED RECORD
  1521. 1403   1     IF EOF(INDEX)                                  !  IF BEYOND END OF FILE
  1522. 1404   2       PREVIOUS(INDEX)                              !    GET THE LAST RECORD
  1523. 1405   2     ELSE                                           !  ELSE
  1524. 1406   2       NEXT(INDEX)                                  !    READ THIS RECORD
  1525. 1407   2     .
  1526. 1408   1     POINTER# = POINTER(INDEX)                      !  SAVE ITS RECORD POINTER
  1527. 1409   1     SKIP(INDEX,-1)                                 !  MAKE IT THE TOP RECORD
  1528. 1410   1     DO SHOW_TABLE                                  !  AND FILL THE SCROLL AREA
  1529. 1411       
  1530. 1412   1   SAME_PAGE ROUTINE                                !SET TO SAME PAGE ROUTINE
  1531. 1413   1     POINTER# = POINTER(INDEX)                      !  SAVE ITS RECORD POINTER
  1532. 1414   1     GET(INDEX,POINTER#)                            !  GET THE RECORD
  1533. 1415   1     SET(IND:CAT_INDEX,IND:CAT_INDEX)               !  SET TO THE SAME RECORD
  1534. 1416   1     SKIP(INDEX,-1)                                 !  SKIP TO TOP OF SAME PAGE
  1535. 1417       
  1536. DOD.CLA                                                                    CLARION COMPILER v2.0
  1537.  
  1538. Update categories                                                       6/27/93  7:50 PM PAGE 35
  1539.  
  1540. 1419   1   UPDATE_CAT   PROCEDURE
  1541. 1420       
  1542. 1421   1   SCREEN       SCREEN       PRE(SCR),WINDOW(7,45),HUE(15,4)
  1543. 1422   2                  ROW(1,1)   STRING('┌─{43}┐'),ENH
  1544. 1423   2                  ROW(2,1)   REPEAT(5);STRING('│<0{43}>│'),ENH .
  1545. 1424   2                  ROW(7,1)   STRING('└─{43}┘'),ENH
  1546. 1425   2                  ROW(2,15)  STRING('Update categories')
  1547. 1426   2                  ROW(4,4)   STRING('CATEGORY:')
  1548. 1427   2                  ROW(5,4)   STRING('COMMENT :')
  1549. 1428   2                  ROW(6,16)  STRING('TYPE F2 TO PRINT')
  1550. 1429   2   MESSAGE        ROW(3,9)   STRING(30)
  1551. 1430   2                             ENTRY,USE(?FIRST_FIELD)
  1552. 1431   2                  ROW(4,13)  ENTRY(@S25),USE(IND:CATEGORY),LFT,UPR,OVR
  1553. 1432   2                  ROW(5,13)  ENTRY(@S30),USE(IND:COMMENT),LFT,OVR
  1554. 1433   2                             ENTRY,USE(?LAST_FIELD)
  1555. 1434   2                             PAUSE(''),USE(?DELETE_FIELD)
  1556. 1435   2                .
  1557. 1436       
  1558. DOD.CLA                                                                    CLARION COMPILER v2.0
  1559.  
  1560. Update categories                                                       6/27/93  7:50 PM PAGE 36
  1561.  
  1562. 1438   1     CODE
  1563. 1439   1     OPEN(SCREEN)                                   !OPEN THE SCREEN
  1564. 1440   1     SETCURSOR                                      !TURN OFF ANY CURSOR
  1565. 1441   1     ACTION# = ACTION                               !SAVE ACTION VALUE
  1566. 1442   1     ACTION = ACTION#                               !RESET ACTION
  1567. 1443   1     DISPLAY                                        !DISPLAY THE FIELDS
  1568. 1444   1     EXECUTE ACTION                                 !SET THE CURRENT RECORD POINTER
  1569. 1445   2       POINTER# = 0                                 !  NO RECORD FOR ADD
  1570. 1446   2       POINTER# = POINTER(INDEX)                    !  CURRENT RECORD FOR CHANGE
  1571. 1447   2       POINTER# = POINTER(INDEX)                    !  CURRENT RECORD FOR CHANGE
  1572. 1448   2     .
  1573. 1449   1     LOOP                                           !LOOP THRU ALL THE FIELDS
  1574. 1450   2       MEM:MESSAGE = CENTER(MEM:MESSAGE,SIZE(MEM:MESSAGE)) !DISPLAY ACTION MESSAGE
  1575. 1451   2       SCR:MESSAGE = MEM:MESSAGE
  1576. 1452   2       ALERT                                        !RESET ALERTED KEYS
  1577. 1453   2       ALERT(ACCEPT_KEY)                            !ALERT SCREEN ACCEPT KEY
  1578. 1454   2       ALERT(REJECT_KEY)                            !ALERT SCREEN REJECT KEY
  1579. 1455   2       ALERT(F2_KEY)                                !ALERT HOT KEY
  1580. 1456   2       ACCEPT                                       !READ A FIELD
  1581. 1457   2         IF KEYCODE() = F2_KEY                      !ON HOT KEY
  1582. 1458   3           SAVACTN# = ACTION                        !  SAVE ACTION
  1583. 1459   3           PRINT_CAT                                !  CALL HOT KEY PROCEDURE
  1584. 1460   3           ACTION = SAVACTN#                        !  RESTORE ACTION
  1585. 1461   3           SELECT(?)                                !  DO SAME FIELD AGAIN
  1586. 1462   3           CYCLE                                    !  AND LOOP AGAIN
  1587. 1463   3         .
  1588. 1464   2       IF KEYCODE() = REJECT_KEY THEN RETURN.       !RETURN ON SCREEN REJECT KEY
  1589. 1465   2       EXECUTE ACTION                               !SET ACTION MESSAGE
  1590. 1466   3         MEM:MESSAGE = 'Record will be Added'       !
  1591. 1467   3         MEM:MESSAGE = 'Record will be Changed'     !
  1592. 1468   3         MEM:MESSAGE = 'Press Enter to Delete'      !
  1593. 1469   3       .
  1594. 1470   2       EDIT_RANGE# = FIELD()                        !SET ONE FIELD EDIT RANGE
  1595. 1471   2       IF KEYCODE() = ACCEPT_KEY                    !ON SCREEN ACCEPT KEY
  1596. 1472   3         UPDATE                                     !  MOVE ALL FIELDS FROM SCREEN
  1597. 1473   3         EDIT_RANGE# = FIELDS()                     !  AND EDIT REMAINING FIELDS
  1598. 1474   3       .                                            !
  1599. 1475   2       LOOP FIELD# = FIELD() TO EDIT_RANGE#         !EDIT FIELDS IN THE EDIT RANGE
  1600. 1476   3         CASE FIELD#                                !JUMP TO FIELD EDIT ROUTINE
  1601. 1477   4         OF ?FIRST_FIELD                            !FROM THE FIRST FIELD
  1602. 1478   4           IF KEYCODE() = ESC_KEY THEN RETURN.      !  RETURN ON ESC KEY
  1603. 1479   4           IF ACTION = 3 THEN SELECT(?DELETE_FIELD).!  OR CONFIRM FOR DELETE
  1604. 1480       
  1605. 1481   4         OF ?IND:CATEGORY                           !INDEX OF CATEGORIES
  1606. 1482   4           IF IND:CATEGORY = ''                     !IF REQUIRED FIELD IS EMPTY
  1607. 1483   5             BEEP                                   !  SOUND KEYBOARD ALARM
  1608. 1484   5             SELECT(?IND:CATEGORY)                  !  AND STAY ON THIS FIELD
  1609. 1485   5             BREAK                                  !
  1610. 1486   5           .
  1611. 1487       
  1612. 1488   4         OF ?IND:COMMENT                            !COMMENT ON CATERGORY
  1613. 1489       
  1614. 1490   4         OF ?LAST_FIELD                             !FROM THE LAST FIELD
  1615. 1491   4           EXECUTE ACTION                           !  UPDATE THE FILE
  1616. DOD.CLA                                                                    CLARION COMPILER v2.0
  1617.  
  1618. Update categories                                                       6/27/93  7:50 PM PAGE 37
  1619.  
  1620. 1492   5             ADD(INDEX)                             !    ADD NEW RECORD
  1621. 1493   5             PUT(INDEX)                             !    CHANGE EXISTING RECORD
  1622. 1494   5             DELETE(INDEX)                          !    DELETE EXISTING RECORD
  1623. 1495   5           .
  1624. 1496   4           IF ERROR() THEN STOP(ERROR()).           !  CHECK FOR UNEXPECTED ERROR
  1625. 1497   4           ACTION = 0                               !  SET ACTION TO COMPLETE
  1626. 1498   4           RETURN                                   !  AND RETURN TO CALLER
  1627. 1499       
  1628. 1500   4         OF ?DELETE_FIELD                           !FROM THE DELETE FIELD
  1629. 1501   4           IF KEYCODE() = ENTER_KEY |               !  ON ENTER KEY
  1630. 1502   4           OR KEYCODE() = ACCEPT_KEY                !  OR CTRL-ENTER KEY
  1631. 1503   5             SELECT(?LAST_FIELD)                    !    DELETE THE RECORD
  1632. 1504   5           ELSE                                     !  OTHERWISE
  1633. 1505   5             BEEP                                   !    BEEP AND ASK AGAIN
  1634. 1506   5     . . . .
  1635. 1507       
  1636. DOD.CLA                                                                    CLARION COMPILER v2.0
  1637.  
  1638. Print categories                                                        6/27/93  7:50 PM PAGE 38
  1639.  
  1640. 1509       
  1641. 1510   1   PRINT_CAT    PROCEDURE
  1642. 1511       
  1643. 1512   1   TITLE        REPORT       LENGTH(30),WIDTH(80),PRE(TTL)
  1644. 1513   2   RPT_HEAD                  DETAIL
  1645. 1514   3                .            .
  1646. 1515   1   REPORT       REPORT       LENGTH(30),WIDTH(80),PAGE(MEM:PAGE),LINE(MEM:LINE)   |
  1647. 1516   1                             PRE(RPT)
  1648. 1517   2   PAGE_HEAD                 HEADER
  1649. 1518   3                    COL(1)     STRING('Print categories') CTL(@LF2)
  1650. 1519   3                             .
  1651. 1520   2   DETAIL                    DETAIL
  1652. 1521   3                  ROW(+1,1)    STRING(25),USE(IND:CATEGORY) CTL(@LF2)
  1653. 1522   3                             .
  1654. 1523   2   RPT_FOOT                  DETAIL
  1655. 1524   3                             .
  1656. 1525   2   PAGE_FOOT                 FOOTER
  1657. 1526   3                .            .
  1658. 1527       
  1659. 1528       
  1660. 1529   1     CODE
  1661. 1530   1     DONE# = 0                                      !TURN OFF DONE FLAG
  1662. 1531   1     CLEAR(IND:RECORD)                              !MAKE SURE RECORD CLEARED
  1663. 1532   1     PRINT(TTL:RPT_HEAD)                            !PRINT TITLE PAGE
  1664. 1533   1     CLOSE(TITLE)                                   !CLOSE TITLE REPORT
  1665. 1534   1     SET(IND:CAT_INDEX)                             !SET TO FIRST RECORD
  1666. 1535   1     DO NEXT_RECORD                                 !READ FIRST RECORD
  1667. 1536   1     MEM:DEVICE = '+' & MEM:DEVICE                  !APPEND DISK RPT TO TITLE
  1668. 1537   1     OPEN(REPORT)                                   !OPEN THE REPORT
  1669. 1538   1     LOOP UNTIL DONE#                               !READ ALL RECORDS IN FILE
  1670. 1539   2       SAVE_LINE# = MEM:LINE                        !  SAVE LINE NUMBER
  1671. 1540   2       LAST_REC# = POINTER(INDEX)
  1672. 1541   2       PRINT(RPT:DETAIL)                            !  PRINT DETAIL LINES
  1673. 1542   2       DO CHECK_PAGE                                !  DO PAGE BREAK IF NEEDED
  1674. 1543   2       DO NEXT_RECORD                               !  GET NEXT RECORD
  1675. 1544   2     .                                              !
  1676. 1545   1     PRINT(RPT:RPT_FOOT)                            !PRINT GRAND TOTALS
  1677. 1546   1     DO CHECK_PAGE                                  !  DO PAGE BREAK IF NEEDED
  1678. 1547   1     CLOSE(REPORT)                                  !CLOSE REPORT
  1679. 1548   1     MEM:DEVICE = SUB(MEM:DEVICE,2,LEN(MEM:DEVICE)-1) !TURN OFF APPEND REPORT
  1680. 1549   1     RETURN                                         !RETURN TO CALLER
  1681. 1550       
  1682. 1551       
  1683. 1552   1   NEXT_RECORD ROUTINE                              !GET NEXT RECORD
  1684. 1553   1     LOOP UNTIL EOF(INDEX)                          !  READ UNTIL END OF FILE
  1685. 1554   2       NEXT(INDEX)                                  !    READ NEXT RECORD
  1686. 1555   2       EXIT                                         !    EXIT THE ROUTINE
  1687. 1556   2     .                                              !
  1688. 1557   1     DONE# = 1                                      !  ON EOF, SET DONE FLAG
  1689. 1558       
  1690. 1559   1   CHECK_PAGE ROUTINE                               !CHECK FOR NEW PAGE
  1691. 1560   1     IF MEM:LINE <= SAVE_LINE#                      !  ON PAGE OVERFLOW
  1692. 1561   2       SAVE_LINE# = MEM:LINE                        !    RESET LINE NUMBER
  1693. 1562   2     .
  1694. DOD.CLA                                                                    CLARION COMPILER v2.0
  1695.  
  1696. Print categories                                                        6/27/93  7:50 PM PAGE 39
  1697.  
  1698. 1563   1     LOOP UNTIL NOT KEYBOARD()                      !LOOK FOR KEYSTROKE
  1699. 1564   2       ASK
  1700. 1565   2       IF KEYCODE() = REJECT_KEY THEN RETURN.       !ABORT REPORT
  1701. 1566   2     .
  1702. 1567       
  1703. 1568       
  1704.  
  1705. NO MESSAGES THIS COMPILE
  1706.