home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / ptcmenu.zip / PTCMENU.CLA < prev    next >
Text File  |  1990-02-27  |  11KB  |  260 lines

  1. PTCMENU         PROGRAM
  2. !===============================================================================
  3. ! This is a simplified example of our System Menu that we use for our clients. !
  4. ! The GODOS procedure (DOS1.BIN) is used to set a DOS Error Level Code, then   !
  5. ! quick exit. When used in conjunction with a Batch File (see MENU.BAT), the   !
  6. ! ERRORLEVEL Code can be used to do conditional branching. The advantages of   !
  7. ! of this technique are:                               !
  8. !    * No RAM overhead, PTCMENU unloads and reloads between menu selections.   !
  9. !    * Much faster than using the RUN command!!!                   !
  10. !    * TSRs can be conditionally loaded from the controlling Batch File.       !
  11. ! NOTE: This example requires the referenced Clarion files be in the PATH.     !
  12. ! After compiling  and translating PTCMENU, run MENU.BAT for the demonstration.!
  13. !------------------------------------------------------------------------------!
  14. !                   Randy Goodhew                   !
  15. !               PROFESSIONAL TECHNOLOGIES CONSULTANTS               !
  16. !                508 Greenup Street                   !
  17. !                 Covington, Kentucky 41011                   !
  18. !                   Phone:(606) 491-3020                   !
  19. !                 FAX and Modem Available.                   !
  20. !===============================================================================
  21.  
  22. ESC_KEY         EQUATE(256)
  23. CTRL_ESC     EQUATE(279)
  24.          MAP
  25.            PROC(SHOW_STATUS)
  26.            PROC(FX_IMPLODE)
  27.          MODULE('DOS1.BIN'),BINARY         !! DOS1.BIN LEM is required
  28.            PROC(GODOS)
  29.            FUNC(ENVIRONMENT),STRING
  30.          . .
  31. !----------- Configuration File --------------------------
  32. PTCMENU         FILE,PRE(PTC)
  33.            OWNER('ROSEBUD'),ENCRYPT
  34. RECORD           RECORD
  35. MenuItem     STRING(30)
  36.          . .
  37. !----------- Menu Screen -----------------------------------
  38. MENU_SCREEN  SCREEN      PRE(SCR),HUE(7,0)
  39.            ROW(1,1)      STRING('<201,205{11},209,205{14},187>'),ENH
  40.            ROW(2,1)      REPEAT(3);STRING('<186,0{11},179,0{14},186>'),ENH .
  41.            ROW(5,1)      STRING('<200,205{11},207,205{14},188>'),ENH
  42.            ROW(1,29)  STRING('<201,205{50},187>'),HUE(15,1)
  43.            ROW(2,29)  REPEAT(3);STRING('<186,0{50},186>'),HUE(15,1) .
  44.            ROW(5,29)  STRING('<200,205{50},188>'),HUE(15,1)
  45.            ROW(2,3)      STRING('<201,205,203,205,203,205,203,205,184>')      |
  46.                 HUE(4,7)
  47.            ROW(3,3)      STRING('<204,205,188,0,186,0,186>'),HUE(4,7)
  48.            ROW(4,3)      STRING('<208,0{3},208,0,200,205,190>'),HUE(4,7)
  49.            ROW(6,1)      REPEAT(2);STRING('<177{80}>') .
  50.            ROW(8,1)      STRING('<177{5},0{69},177{6}>')
  51.            ROW(9,1)      REPEAT(13);STRING('<177{5},0{71},177{4}>') .
  52.            ROW(22,1)  STRING('<177{7},0{69},177{4}>')
  53.            ROW(23,1)  REPEAT(2);STRING('<177{80}>') .
  54.            ROW(8,6)      STRING('<201,181,0{11},198,205{20},209,205{33},187>')|
  55.                 HUE(0,6)
  56.            ROW(9,6)      REPEAT(12)
  57.                 STRING('<186,0{33},179,0{33},186>'),HUE(0,6) .
  58.            ROW(21,6)  STRING('<200,205{33},207,205{33},188>'),HUE(0,6)
  59.            ROW(2,2)      STRING(' '),HUE(4,7)
  60.          COL(12)  STRING(' '),HUE(4,7)
  61.          COL(14)  STRING(' PROFESSIONAL '),HUE(15,4)
  62.          COL(30)  STRING(' {50}'),HUE(14,1)
  63.            ROW(3,2)      STRING(' '),HUE(4,7)
  64.          COL(6)      STRING(' '),HUE(4,7)
  65.          COL(8)      STRING(' '),HUE(4,7)
  66.          COL(10)  STRING('   '),HUE(4,7)
  67.          COL(14)  STRING(' TECHNOLOGIES '),HUE(1,7)
  68.          COL(30)  STRING(' {15}ptcMENU Demonstration {14}'),HUE(14,1)
  69.            ROW(4,2)      STRING(' '),HUE(4,7)
  70.          COL(4)      STRING('   '),HUE(4,7)
  71.          COL(8)      STRING(' '),HUE(4,7)
  72.          COL(12)  STRING(' '),HUE(4,7)
  73.          COL(14)  STRING(' CONSULTANTS  '),HUE(15,1)
  74.          COL(30)  STRING(' {50}'),HUE(14,1)
  75.            ROW(8,8)      STRING(' Main Menu '),HUE(0,6)
  76.            ROW(9,7)      STRING(' '),HUE(0,6)
  77.          COL(8)      STRING(' {32}'),HUE(1,7)
  78.          COL(41)  STRING(' {32}'),HUE(1,7)
  79.          COL(73)  STRING(' '),HUE(0,6)
  80.            ROW(10,7)  STRING(' '),HUE(0,6)
  81.          COL(8)      STRING(' '),HUE(1,7)
  82.          COL(39)  STRING(' '),HUE(1,7)
  83.          COL(41)  STRING(' '),HUE(1,7)
  84.          COL(72)  STRING(' '),HUE(1,7)
  85.          COL(73)  STRING(' '),HUE(0,6)
  86.            ROW(11,7)  STRING(' '),HUE(0,6)
  87.          COL(8)      STRING(' '),HUE(1,7)
  88.          COL(39)  STRING(' '),HUE(1,7)
  89.          COL(41)  STRING(' '),HUE(1,7)
  90.          COL(72)  STRING(' '),HUE(1,7)
  91.          COL(73)  STRING(' '),HUE(0,6)
  92.            ROW(12,7)  STRING(' '),HUE(0,6)
  93.          COL(8)      STRING(' '),HUE(1,7)
  94.          COL(39)  STRING(' '),HUE(1,7)
  95.          COL(41)  STRING(' '),HUE(1,7)
  96.          COL(72)  STRING(' '),HUE(1,7)
  97.          COL(73)  STRING(' '),HUE(0,6)
  98.            ROW(13,7)  STRING(' '),HUE(0,6)
  99.          COL(8)      STRING(' '),HUE(1,7)
  100.          COL(39)  STRING(' '),HUE(1,7)
  101.          COL(41)  STRING(' '),HUE(1,7)
  102.          COL(72)  STRING(' '),HUE(1,7)
  103.          COL(73)  STRING(' '),HUE(0,6)
  104.            ROW(14,7)  STRING(' '),HUE(0,6)
  105.          COL(8)      STRING(' '),HUE(1,7)
  106.          COL(39)  STRING(' '),HUE(1,7)
  107.          COL(41)  STRING(' '),HUE(1,7)
  108.          COL(72)  STRING(' '),HUE(1,7)
  109.          COL(73)  STRING(' '),HUE(0,6)
  110.            ROW(15,7)  STRING(' '),HUE(0,6)
  111.          COL(8)      STRING(' '),HUE(1,7)
  112.          COL(39)  STRING(' '),HUE(1,7)
  113.          COL(41)  STRING(' '),HUE(1,7)
  114.          COL(72)  STRING(' '),HUE(1,7)
  115.          COL(73)  STRING(' '),HUE(0,6)
  116.            ROW(16,7)  STRING(' '),HUE(0,6)
  117.          COL(8)      STRING(' '),HUE(1,7)
  118.          COL(39)  STRING(' '),HUE(1,7)
  119.          COL(41)  STRING(' '),HUE(1,7)
  120.          COL(72)  STRING(' '),HUE(1,7)
  121.          COL(73)  STRING(' '),HUE(0,6)
  122.            ROW(17,7)  STRING(' '),HUE(0,6)
  123.          COL(8)      STRING(' '),HUE(1,7)
  124.          COL(39)  STRING(' '),HUE(1,7)
  125.          COL(41)  STRING(' '),HUE(1,7)
  126.          COL(72)  STRING(' '),HUE(1,7)
  127.          COL(73)  STRING(' '),HUE(0,6)
  128.            ROW(18,7)  STRING(' '),HUE(0,6)
  129.          COL(8)      STRING(' '),HUE(1,7)
  130.          COL(39)  STRING(' '),HUE(1,7)
  131.          COL(41)  STRING(' '),HUE(1,7)
  132.          COL(72)  STRING(' '),HUE(1,7)
  133.          COL(73)  STRING(' '),HUE(0,6)
  134.            ROW(19,7)  STRING(' '),HUE(0,6)
  135.          COL(8)      STRING(' '),HUE(1,7)
  136.          COL(39)  STRING(' '),HUE(1,7)
  137.          COL(41)  STRING(' '),HUE(1,7)
  138.          COL(72)  STRING(' '),HUE(1,7)
  139.          COL(73)  STRING(' '),HUE(0,6)
  140.            ROW(20,7)  STRING(' '),HUE(0,6)
  141.          COL(8)      STRING(' {32}'),HUE(1,7)
  142.          COL(41)  STRING(' {32}'),HUE(1,7)
  143.          COL(73)  STRING(' '),HUE(0,6)
  144.            ROW(25,1)  STRING(' {80}'),HUE(1,7)
  145.            ROW(10,11) MENU,USE(?MENU_FIELD),REQ
  146. MENU_01         COL(9)        STRING(30),HUE(1,7),SEL(15,1)
  147. MENU_02           ROW(11,9)    STRING(30),HUE(1,7),SEL(15,1)
  148. MENU_03           ROW(12,9)    STRING(30),HUE(1,7),SEL(15,1)
  149. MENU_04           ROW(13,9)    STRING(30),HUE(1,7),SEL(15,1)
  150. MENU_05           ROW(14,9)    STRING(30),HUE(1,7),SEL(15,1)
  151. MENU_06           ROW(15,9)    STRING(30),HUE(1,7),SEL(15,1)
  152. MENU_07           ROW(16,9)    STRING(30),HUE(1,7),SEL(15,1)
  153. MENU_08           ROW(17,9)    STRING(30),HUE(1,7),SEL(15,1)
  154. MENU_09           ROW(18,9)    STRING(30),HUE(1,7),SEL(15,1)
  155. MENU_10           ROW(19,9)    STRING(30),HUE(1,7),SEL(15,1)
  156. MENU_11           ROW(10,42)   STRING(30),HUE(1,7),SEL(15,1)
  157. MENU_12           ROW(11,42)   STRING(30),HUE(1,7),SEL(15,1)
  158. MENU_13           ROW(12,42)   STRING(30),HUE(1,7),SEL(15,1)
  159. MENU_14           ROW(13,42)   STRING(30),HUE(1,7),SEL(15,1)
  160. MENU_15           ROW(14,42)   STRING(30),HUE(1,7),SEL(15,1)
  161. MENU_16           ROW(15,42)   STRING(30),HUE(1,7),SEL(15,1)
  162. MENU_17           ROW(16,42)   STRING(30),HUE(1,7),SEL(15,1)
  163. MENU_18           ROW(17,42)   STRING(30),HUE(1,7),SEL(15,1)
  164. MENU_19           ROW(18,42)   STRING(30),HUE(1,7),SEL(15,1)
  165. MENU_20           ROW(19,42)   STRING(30),HUE(1,7),SEL(15,1)
  166.          .          .
  167. !----------- Code Starts Here ------------------------------
  168.          CODE
  169.   OPEN(Menu_Screen)
  170.   SETCURSOR
  171.   OPEN(PTCMENU)                     !OPEN Menu Configuration File,
  172.   IF ERROR() THEN STOP(ERROR()).         !  Use SHARE if Network.
  173.   GET(PTCMENU,1)  ; SCR:MENU_01 = PTC:MenuItem     !Load Menu Item Descriptions.
  174.   GET(PTCMENU,2)  ; SCR:MENU_02 = PTC:MenuItem     !This repetitive operation can
  175.   GET(PTCMENU,3)  ; SCR:MENU_03 = PTC:MenuItem     !be simplified with a GROUP,
  176.   GET(PTCMENU,4)  ; SCR:MENU_04 = PTC:MenuItem     !ARRAY, REPEAT approach.
  177.   GET(PTCMENU,5)  ; SCR:MENU_05 = PTC:MenuItem     !However, for the sake of
  178.   GET(PTCMENU,6)  ; SCR:MENU_06 = PTC:MenuItem     !example and simplicity, this
  179.   GET(PTCMENU,7)  ; SCR:MENU_07 = PTC:MenuItem     !method works well.
  180.   GET(PTCMENU,8)  ; SCR:MENU_08 = PTC:MenuItem     !NOTE: Because of the ABSOLUTE
  181.   GET(PTCMENU,9)  ; SCR:MENU_09 = PTC:MenuItem     !record GETs, be sure there
  182.   GET(PTCMENU,10) ; SCR:MENU_10 = PTC:MenuItem     !are exactly 20 records and no
  183.   GET(PTCMENU,11) ; SCR:MENU_11 = PTC:MenuItem     !DELETEs in the PTCMENU file.
  184.   GET(PTCMENU,12) ; SCR:MENU_12 = PTC:MenuItem     !Use the Scanner Utility to
  185.   GET(PTCMENU,13) ; SCR:MENU_13 = PTC:MenuItem     !create and modify the records.
  186.   GET(PTCMENU,14) ; SCR:MENU_14 = PTC:MenuItem
  187.   GET(PTCMENU,15) ; SCR:MENU_15 = PTC:MenuItem
  188.   GET(PTCMENU,16) ; SCR:MENU_16 = PTC:MenuItem
  189.   GET(PTCMENU,17) ; SCR:MENU_17 = PTC:MenuItem
  190.   GET(PTCMENU,18) ; SCR:MENU_18 = PTC:MenuItem
  191.   GET(PTCMENU,19) ; SCR:MENU_19 = PTC:MenuItem
  192.   GET(PTCMENU,20) ; SCR:MENU_20 = PTC:MenuItem
  193.   CLOSE(PTCMENU)
  194.   IF ERROR() THEN STOP(ERROR()).
  195.  
  196.   IDLE(Show_Status,0)                 !Display Date and Time
  197.  
  198.   ALERT
  199.   ALERT(CTRL_ESC)
  200.   ALERT(ESC_KEY)
  201.  
  202.   ACCEPT                     !Read choice
  203.  
  204.   IF KEYCODE() = CTRL_ESC OR |             !Screen ALERT keys
  205.      KEYCODE() = ESC_KEY
  206.      SETHUE(7,0,0)
  207.      BLANK
  208.      GODOS(0)                     !Set ERRORLEVEL = 0 and Exit
  209.   . !if
  210.  
  211.   FX_IMPLODE(0,0,0)                 !Special Screen Effect
  212.   SETHUE(7,0,0)
  213.   BLANK
  214.   BLINK
  215.   SHOW(12,23,'Please Wait . . . Loading Program.')
  216.   NORMAL
  217.   LOOP WHILE KEYBOARD()                 !Clear Keyboard Buffer
  218.      ASK
  219.   . !loop
  220.   GODOS(CHOICE())                !Set DOS ERRORLEVEL to CHOICE()
  221. !===========================================================
  222. !----------- IDLE Procedure for Date and Time --------------
  223. Show_Status  PROCEDURE
  224.          CODE
  225.  SHOW(25,2,TODAY(),@D4)
  226.  SHOW(25,73,CLOCK(),@T3)
  227.  SHOW(25,38,ENVIRONMENT('SYS='))         !See explanation below.
  228.  ! The above line will SHOW the Environment Variable called "SYS". I usually
  229.  ! include a line in the AUTOEXEC.BAT, such as "SET SYS=STATION1". This helps
  230.  ! identify different workstations on a network, by looking at the Menu Screen
  231.  ! Status line.
  232.  
  233. !----------- Special Screen Effect -------------------------
  234. FX_Implode   PROCEDURE(fg,bg,border)
  235. fg         LONG
  236. bg         LONG
  237. border         LONG
  238. row1         LONG
  239. row2         LONG
  240. col1         LONG
  241. col2         LONG
  242.          CODE
  243.  SETHUE(fg,bg,border)
  244.  row1 = 1
  245.  row2 = 25
  246.  col1 = 1
  247.  col2 = 80
  248.  LOOP 13 TIMES
  249.    COLOR(row1,1,1,80)
  250.    COLOR(row2,1,1,80)
  251.    COLOR(1,col1,25,3)
  252.    COLOR(1,col2,25,3)
  253.    col1 += 3
  254.    col2 -= 3
  255.    row1 += 1
  256.    row2 -= 1
  257.    BEEP(0,8)             !TIMING DELAY =  8/100 SECOND
  258.  END !loop
  259.  
  260.