home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / bigclock.zip / BIGCLOCK.CLA next >
Text File  |  1990-09-16  |  4KB  |  109 lines

  1. BIGCLOCK     PROGRAM
  2. !===============================================================================
  3. ! Here is a simple example of how to use arrays to produce a screen effect. I
  4. ! needed a simple technique that would display large numbers without using the
  5. ! Graphics LEM. Variations of this technique can be used to produce many kinds
  6. ! of numeric displays. Also, this is a good example of how to save Code by
  7. ! letting Data (Arrays) do most of the work.
  8. !-------------------------------------------------------------------------------
  9. !   This technique is a part of our PTC TOOLKIT for Clarion. Please inquire.
  10. !
  11. !               Randy Goodhew     09/15/90
  12. !              PROFESSIONAL TECHNOLOGIES CONSULTANTS
  13. !                   1005 Madison Avenue
  14. !             Covington, Kentucky  41011-3113
  15. !                  (606)261-6819
  16. !===============================================================================
  17.          MAP
  18.            PROC(ShowBigClock)
  19.          .
  20. SCREEN         SCREEN      HUE(7,0,0)
  21.            ROW(1,1)      STRING('<201>'),ENH
  22.          COL(2)      STRING('<205{11},209,205{14},187>'),ENH
  23.            ROW(2,1)      REPEAT(3);STRING('<186,0{11},179,0{14},186>'),ENH .
  24.            ROW(5,1)      STRING('<200,205{11},207,205{14},188>'),ENH
  25.            ROW(1,29)  STRING('<201,205{50},187>'),HUE(15,1)
  26.            ROW(2,29)  REPEAT(3);STRING('<186,0{50},186>'),HUE(15,1) .
  27.            ROW(5,29)  STRING('<200,205{50},188>'),HUE(15,1)
  28.            ROW(2,3)      STRING('<201,205,203,205,203,205,203,205,184>')      |
  29.                 HUE(4,7)
  30.            ROW(3,3)      STRING('<204,205,188,0,186,0,186>'),HUE(4,7)
  31.            ROW(4,3)      STRING('<208,0{3},208,0,200,205,190>'),HUE(4,7)
  32.            ROW(6,1)      REPEAT(19);STRING('<177{80}>') .
  33.            ROW(2,2)      STRING(' '),HUE(4,7)
  34.          COL(12)  STRING(' '),HUE(4,7)
  35.          COL(14)  STRING(' PROFESSIONAL '),HUE(15,4)
  36.          COL(30)  STRING(' {50}'),HUE(14,1)
  37.            ROW(3,2)      STRING(' '),HUE(4,7)
  38.          COL(6)      STRING(' '),HUE(4,7)
  39.          COL(8)      STRING(' '),HUE(4,7)
  40.          COL(10)  STRING('   '),HUE(4,7)
  41.          COL(14)  STRING(' TECHNOLOGIES '),HUE(1,7)
  42.          COL(30)  STRING(' {8}Demonstration of BigClock Technique {7}')|
  43.                 HUE(14,1)
  44.            ROW(4,2)      STRING(' '),HUE(4,7)
  45.          COL(4)      STRING('   '),HUE(4,7)
  46.          COL(8)      STRING(' '),HUE(4,7)
  47.          COL(12)  STRING(' '),HUE(4,7)
  48.          COL(14)  STRING(' CONSULTANTS  '),HUE(15,1)
  49.          COL(30)  STRING(' {50}'),HUE(14,1)
  50.            ROW(25,1)  STRING(' {32}Press Esc to Exit {31}'),HUE(4,7)
  51.          .
  52.   CODE
  53.   SETHUE(7,0,0)
  54.   BLANK
  55.   SETHUE
  56.   OPEN(Screen)
  57.   LOOP
  58.     ShowBigClock(14,27,15,0)             !Call Big Clock Procedure
  59.     IF KEYCODE() = 256 THEN BREAK.         !Exit in Esc Key
  60.     LOOP WHILE KEYBOARD() ; ASK .         !Clear Keyboard Buffer
  61.   END
  62.   BEEP
  63. !-------------------------------------------------------------------------------
  64. ShowBigClock PROCEDURE(CRow,CCOL,FG,BG)
  65. CRow         BYTE                 !Clock Row
  66. CCOL         BYTE                 !Clock Column
  67. FG         BYTE                 !ForeGround Color
  68. BG         BYTE                 !BackGround Color
  69. NumbersData  GROUP,                 !Big Numbers Data
  70.            STRING('┌─┐ ┐ ┌─┐┌─┐┐ ┌┌─ ┌─┐┌─┐┌─┐┌─┐')       ! 1 - 10
  71.            STRING('│ │ │ ┌─┘ ─┤└─┼└─┐├─┐ ┌┘├─┤└─┤')       !11 - 20
  72.            STRING('└─┘ ┴ └─┘└─┘  ┴└─┘└─┘ ┴ └─┘  ┴')       !21 - 30
  73.          END
  74. NumbersArray STRING(3),DIM(30),OVER(NumbersData) !Big Numbers Array
  75. ClockData    GROUP,                 !Big Clock Data
  76. C1           STRING('┌─┐┌─┐   ┌─┐┌─┐   ┌─┐┌─┐')       ! 1 - 8
  77. C2           STRING('│ ││ │ ▀ │ ││ │ ▀ │ ││ │')       ! 9 - 16
  78. C3           STRING('└─┘└─┘ ▀ └─┘└─┘ ▀ └─┘└─┘')       !17 - 24
  79.          END
  80. ClockArray   STRING(3),DIM(24),OVER(ClockData)     !Big Clock Array
  81. Time         STRING(8)                 !Formatted Time String
  82. J         LONG                 !Loop/Position Counter
  83. Number         String(1)                 !Number Element
  84.  
  85.   CODE
  86.   IF OMITTED(1) OR CRow > 23 THEN CRow = 23.          !Test for parameters and
  87.   IF OMITTED(2) OR CCol > 57 THEN CCol = 57.          ! set defaults.
  88.   IF OMITTED(3) OR NOT INRANGE(FG,0,31) THEN FG = 7.  !
  89.   IF OMITTED(4) OR NOT INRANGE(BG,0,7)    THEN BG = 0.  !
  90.   SETHUE(FG,BG)
  91.  
  92.   Time = FORMAT(CLOCK(),@t4)             !Get current time
  93.  
  94.   LOOP J = 8 TO 1 BY -1                 !Create Big Clock Display
  95.     IF J = 6 OR J = 3 THEN CYCLE.         !Skip Colons
  96.     Number = SUB(Time,J,1)             !Extract a number element
  97.     ClockArray[J]    = NumbersArray[Number+1]     !Load Array
  98.     ClockArray[J+8]  = NumbersArray[Number+11]     !
  99.     ClockArray[J+16] = NumbersArray[Number+21]     !
  100.   END !loop
  101.  
  102.   SHOW(CRow,CCol,C1)                 !Show Big Clock
  103.   SHOW(CRow+1,CCol,C2)                 !
  104.   SHOW(CRow+2,CCol,C3)                 !
  105.   SETHUE
  106.   RETURN
  107.  
  108.  
  109.