home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / tkmengen.zip / FORM.CLA < prev    next >
Text File  |  1989-08-24  |  9KB  |  186 lines

  1.              MEMBER('MAKEMENU')
  2. !========================================== FORM Procedure form =====
  3. form         PROCEDURE
  4.                               !================ SCREEN for form =====
  5. screen       SCREEN       WINDOW(25,80),AT(1,1),PRE(scr),HUE(15,1)
  6.                ROW(8,3)   PAINT(15,76),HUE(0,7)
  7.                ROW(1,1)   STRING('╔═{78}╗')
  8.                ROW(2,1)   REPEAT(2),EVERY(2);STRING('║<0{78}>║') .
  9.                ROW(3,1)   REPEAT(2),EVERY(3);STRING('╟─{78}╢') .
  10.                ROW(5,1)   REPEAT(2),EVERY(19);STRING('║<0{78}>║') .
  11.                ROW(7,1)   REPEAT(16);STRING('║<0{78}>║') .
  12.                ROW(23,1)  STRING('╟─{78}╢')
  13.                ROW(25,1)  STRING('╚═{78}╝')
  14.                ROW(4,3)   STRING('MAIN MENU SELECTION NO')
  15.                ROW(7,3)   STRING('SUBMENU    MENU DESCRIPTION {35}PROCEDURE')
  16.                ROW(24,3)  STRING('  F1  '),HUE(15,4)
  17.                  COL(11)  STRING('HELP'),HUE(11,1)
  18.                  COL(30)  STRING('  F9  '),HUE(15,4)
  19.                  COL(38)  STRING('NO CHANGE'),HUE(11,1)
  20.                  COL(56)  STRING('  F10  '),HUE(15,4)
  21.                  COL(64)  STRING(' ACCEPT'),HUE(11,1)
  22. title          ROW(2,21)  STRING(40),HUE(14,2)
  23. recno          ROW(4,27)  STRING(@P##P),HUE(15,1)
  24.                  COL(31)  STRING(':')
  25.                  COL(38)  ENTRY(@S25),USE(men:mainmenu),LFT
  26.                ROW(5,3)   STRING('DESCRIPTION :')
  27.                  COL(19)  ENTRY(@S60),USE(men:mdesc),LFT
  28.                           REPEAT(15),INDEX(line)
  29.                ROW(8,3)     POINT(1,76),USE(?line),ESC(?men:mdesc)
  30.                  COL(3)     ENTRY(@S10),USE(dsp:s15smenu),ESC(?line)
  31.                  COL(14)    ENTRY(@S50),USE(dsp:s80sdesc)
  32.                  COL(65)    ENTRY(@S12),USE(dsp:s15subproc)
  33.                           .
  34.                ROW(25,23) PAUSE(confirm_it),USE(?complete),HUE(30,1)
  35.              .
  36.                              !== Variables for FORM Procedure form ===
  37.  
  38.  
  39.  
  40. dsp_entry    group
  41. dsp_ent          GROUP,DIM(15),PRE(DSP)            !ENTRIES TO BE DISPLAYED
  42. s15SmENU         STRING(25)
  43. s80SDesc         STRING(80)
  44. s15SubProc       STRING(12)
  45.              . .
  46.  
  47.  
  48. bbExit  BYTE               ! Boolean to indicate exit from procedure
  49. ilSavePtr    LONG                  ! Save or record pointer
  50. isEditRange  SHORT
  51. isFldNum     SHORT
  52. isSaveAct    SHORT                 ! Temp save of isAction
  53. ibRepeat     BYTE                  ! Repeat index for point field
  54. CONFIRM_IT   STRING(34)
  55.  
  56.  
  57.  
  58. BATCH        SHORT                               !BATCH # ENTERED
  59. LINE         SHORT                               !LINE NUMBER
  60. POINTER      SHORT                               !RELATIVE RECORD POINTER
  61. KEY          SHORT
  62.  
  63.   CODE
  64.   OPEN(SCREEN)                                   !DISPLAY SCREEN
  65.   LOOP
  66.   !SET(MEN:MENU)
  67.   IF isAction = 1
  68.      SET(MEN:MENU)
  69.      PREVIOUS(MENU)
  70.  
  71.      SCR:RECNO = RECORDs(MENU)+1
  72.      CLEAR(MEN:RECORD)
  73.      Men:recno = scr:RECNO
  74.   ELSE
  75.      SCR:RECNO = MEN:RECNO
  76.   END
  77.  
  78.   dsp_entry=men:garray
  79.  
  80.   DISPLAY
  81.   CASE ISACTION                                    !which action?
  82.   OF 1                                           !ADDING DEPARTMENT
  83.     SCR:TITLE = CENTER('Menu Data Will Be Added' , SIZE(SCR:TITLE))
  84.     CONFIRM_IT = '══╡ Press F10 to Add Menu Data ╞══'
  85.     SELECT(?men:MAINMENU)
  86.   OF 2                                           !CHANGING DEPARTMENT
  87.     SCR:TITLE = CENTER('Menu Data Will Be Changed',SIZE(SCR:TITLE))
  88.     CONFIRM_IT = '╡ Press F10 to Change Menu Data ╞═'
  89.     SELECT(?MEN:MAINMENU)
  90.   OF 3                                           !DELETING DEPARTMENT
  91.     SCR:TITLE = CENTER('Menu Data Will Be Deleted',SIZE(SCR:TITLE))
  92.     CONFIRM_IT = '╡ Press F10 to Delete Menu Data ╞═'
  93.     SELECT(?COMPLETE)
  94.   .
  95.   LOOP LINE = 1 TO 15                    !LOOP THROUGH THE 15 LINES
  96.      IF DSP:S15SMENU[LINE] ='' THEN CYCLE. !DON'T DISPLAY IF NO ENTRY
  97.       DISPLAY(?DSP:S15SMENU,?DSP:S15SUBPROC) !DISPLAY ACCT, DESC, & AMT
  98.   END                                      !END IF, IF, & LOOP
  99.   LOOP                                           !LOOP THROUGH SCREEN ENTRY
  100.   ALERT()                                        !clear alert keys
  101.   ALERT(F9_KEY)                          !alert F9 thru F10 keys
  102.   ALERT(F10_KEY)
  103.     ACCEPT                                       !GET ENTRY FROM SCREEN
  104.     KEY = KEYCODE()                              ! set key code
  105.  
  106.     IF KEY = F9_KEY                      !IF CTRL-ESC [END OF JOB]
  107.       RETURN                                     !EXIT PROGRAM
  108.     .                                            !END IF KEYCODE
  109.  
  110.     CASE FIELD()                                 !DETERMINE WHICH FIELD ENTERED
  111.       OF ?men:mainmenu
  112.         IF men:mainmenu = ''                                     ! ┌─ If required field is empty
  113.           BEEP                                                   ! │   Sound keyboard alarm
  114.           SELECT(?men:mainmenu)                                  ! │   And stay on this field
  115.           CYCLE                                                  ! │
  116.         END                                                      ! └─ End
  117.  
  118.       OF ?men:mdesc
  119.         IF men:mdesc = ''                                        ! ┌─ If required field is empty
  120.           BEEP                                                   ! │   Sound keyboard alarm
  121.           SELECT(?men:mdesc)                                     ! │   And stay on this field
  122.           CYCLE                                                  ! │
  123.         END                                                      ! └─ End
  124.         LINE = 1                                   !SET TO FIRST OF THE 15 LINES
  125.         IF DSP:S15SMENU[LINE] = ''               !IF NO ENTRIES FOR THIS SEGMENT
  126.           SELECT(?DSP:S15SMENU)                  !  SET TO ACCT # ENTRY
  127.         ELSE
  128.           SELECT(?LINE)                          !  SET TO THE POINT FIELD
  129.         END
  130.     OF ?LINE                                     !POINT FIELD SELECTION
  131.       IF CHOICE() = 0                            !NO SELECTION MADE
  132.         SELECT(?COMPLETE)                        !GO TO CTRL-ENTER FIELD
  133.       .                                          !END IF
  134.  
  135.     OF ?DSP:S15SMENU                             !ACCOUNT NUMBER ENTRY
  136.       IF DSP:s15SMenu[LINE] = ''                     !ACCOUNT SET TO ZERO
  137.         ERASE(?,?+2)                             !CLEAR DESC & AMT
  138.  
  139.         I#=1
  140.         LOOP WHILE I#<=15
  141.           IF s15SMenu[I#]=''
  142.             LOOP J#=i#+1 to 15
  143.               dsp_ent[J#-1]=dsp_ent[j#]
  144.             END
  145.           END
  146.           I#+=1
  147.         END
  148.         MEN:garray = DSP_ENTRY             !MOVE ENTRY SEGMENT TO TABLE
  149.         LOOP LINE = 1 TO 15                        !DISPLAY ITEM NUMBERS
  150.           ERASE(?DSP:S15SMENU,?DSP:S15SUBPROC)     ! CLEAR DISPLAY FIELDS
  151.         END                                          !END LOOP
  152.         dsp_entry=men:garray
  153.         LOOP LINE = 1 TO 15                    !LOOP THROUGH THE 15 LINES
  154.           IF DSP:S15SMENU[LINE] ='' THEN CYCLE. !DON'T DISPLAY IF NO ENTRY
  155.           DISPLAY(?DSP:S15SMENU,?DSP:S15SUBPROC) !DISPLAY ACCT, DESC, & AMT
  156.         END                                      !END IF, IF, & LOOP
  157.  
  158.         SELECT(?COMPLETE)                        !GO TO CONTROL ENTER FIELD
  159.       END                                          !END IF
  160.     OF ?DSP:s80sdesc                                 !DESCRIPTION FIELD ENTRY
  161.     OF ?DSP:s15subproc                                  !AMOUNT FIELD ENTRY
  162.       IF LINE = 15                               !IF LAST LINE
  163.         SELECT(?COMPLETE)                        !  GO TO COMPLETION FIELD
  164.         CYCLE                                    !  CYCLE
  165.       END                                          !END IF
  166.       LINE += 1                                  !INCREMENT INDEX
  167.       SELECT(?DSP:s15sMenu)                          !SKIP POINT FIELD
  168.     OF ?COMPLETE                                 !COMPLETE THIS SCREEN
  169.     !OROF ?DONE                                   !DONE FIELD
  170.       IF KEY = F10_KEY                           ! F10 accepts window
  171.         UPDATE
  172.         EXECUTE ISACTION                           !WHICH ACTION?
  173.           ADD(MENU)                          ! add a deptment record
  174.           PUT(MENU)                          ! change a deptment record
  175.           DELETE(MENU)                   ! delete a deptment record
  176.         .
  177.         RETURN
  178.      ELSE
  179.         BEEP                                     !  PRESSED, BEEP
  180.         SELECT(?)                                !  AND STAY ON SAME FIELD
  181.         CYCLE                                    !
  182.       .                                          !END IF KEYCODE
  183.     IF KEY = F10_KEY THEN SELECT(?complete).         !exit window on F10
  184.   .                                             !END CASE & LOOP
  185.   . .
  186.