home *** CD-ROM | disk | FTP | other *** search
/ Sams Cobol 24 Hours / Sams_Cobol_24_Hours.iso / Cobol32 / PowerCBL / powercbl.Z / clock.prc < prev    next >
Text File  |  1997-03-13  |  4KB  |  131 lines

  1. @POWER POWSHEET SHEET1 WORKING
  2. * Define the screen size in pixels.
  3. * The typical screen size for SVGA is
  4. * 1024 pixels wide and 768 pixels high.
  5. * The following settings are for VGA.
  6.  01  SCREEN-W GLOBAL PIC S9(4) COMP-5 VALUE 640.
  7.  01  SCREEN-H GLOBAL PIC S9(4) COMP-5 VALUE 480.
  8. *
  9. * Define the color maps for changing the background color.
  10. *
  11.  01 COLOR-TABLE IS GLOBAL.
  12.    02  COLOR-ATTR.
  13.      03 FILLER PIC X(4) VALUE IS X"00000000".
  14.      03 FILLER PIC X(4) VALUE IS X"80000000".
  15.      03 FILLER PIC X(4) VALUE IS X"00800000".
  16.      03 FILLER PIC X(4) VALUE IS X"80800000".
  17.      03 FILLER PIC X(4) VALUE IS X"00008000".
  18.      03 FILLER PIC X(4) VALUE IS X"80008000".
  19.      03 FILLER PIC X(4) VALUE IS X"80808000".
  20.    02 COLORS REDEFINES COLOR-ATTR PIC X(4) OCCURS 7 TIMES.
  21. *
  22. * Define the colors for the background color.
  23.  01 COLOR-INDEX1 IS GLOBAL PIC S9(4) VALUE IS 0.
  24.  01 WK-COLOR IS GLOBAL PIC X(4).
  25. *
  26. * Define the geometric information for moving the sheet.
  27. *
  28.  01 X-POS IS GLOBAL PIC S9(4) COMP-5 VALUE IS 0.
  29.  01 Y-POS IS GLOBAL PIC S9(4) COMP-5 VALUE IS 0.
  30.  01 MAX-X IS GLOBAL PIC S9(4) COMP-5 VALUE IS 0.
  31.  01 MAX-Y IS GLOBAL PIC S9(4) COMP-5 VALUE IS 0.
  32.  01 NEW-POSITION IS GLOBAL.
  33.   02 NEW-X PIC S9(4) COMP-5.
  34.   02 NEW-Y PIC S9(4) COMP-5.
  35.   02 NEW-W PIC S9(4) COMP-5.
  36.   02 NEW-H PIC S9(4) COMP-5.
  37. @POWER POWSHEET SHEET1 OPENED
  38.  ENVIRONMENT DIVISION.
  39.  DATA        DIVISION.
  40.  WORKING-STORAGE SECTION.
  41.  01 CURR-POS.
  42.   02 CURR-X PIC S9(4) COMP-5.
  43.   02 CURR-Y PIC S9(4) COMP-5.
  44.   02 CURR-W PIC S9(4) COMP-5.
  45.   02 CURR-H PIC S9(4) COMP-5.
  46.  PROCEDURE   DIVISION.
  47. * Determine the upper-boundary of the zone that the sheet
  48. * moves around in.
  49. *
  50.       MOVE POW-POSITION OF SHEET1 TO CURR-POS.
  51.       COMPUTE MAX-X = SCREEN-W - CURR-W.
  52.       COMPUTE MAX-Y = SCREEN-H - CURR-H.
  53. * Initialize the global data.
  54.       MOVE 0 TO CURR-X.
  55.       MOVE 0 TO CURR-Y.
  56.       MOVE 0 TO X-POS.
  57.       MOVE 0 TO Y-POS.
  58.       MOVE 0 TO NEW-X.
  59.       MOVE 0 TO NEW-Y.
  60.       MOVE CURR-W TO NEW-W.
  61.       MOVE CURR-H TO NEW-H.
  62. * Move the sheet to the top left corner of the screen.
  63.       MOVE CURR-POS TO POW-POSITION OF SHEET1.
  64. @POWER POWPSBTN PUSH1 CLICK
  65.  ENVIRONMENT DIVISION.
  66.  DATA        DIVISION.
  67.  WORKING-STORAGE SECTION.
  68.  77 WK-STATUS PIC S9(4) COMP-5.
  69.  PROCEDURE   DIVISION.
  70. * Alter the status of the timer.
  71.         IF POW-ACTIVATE OF TIMER1 = POW-ON THEN
  72.             MOVE POW-OFF TO WK-STATUS
  73.             MOVE "Restart" TO POW-TEXT OF PUSH1
  74.             MOVE "Stop" TO POW-TEXT OF LABEL1
  75.         ELSE
  76.             MOVE POW-ON TO WK-STATUS
  77.             MOVE "Stop" TO POW-TEXT OF PUSH1
  78.             MOVE "Restart" TO POW-TEXT OF LABEL1
  79.         END-IF
  80.         MOVE WK-STATUS TO POW-ACTIVATE OF TIMER1.
  81. @POWER POWTIMER TIMER1 TIMER
  82. * When the timer is started, move it around the screen and
  83. * continuously change the background color.
  84.  ENVIRONMENT DIVISION.
  85.  DATA        DIVISION.
  86.  WORKING-STORAGE SECTION.
  87. * Define the work area for getting the current time.
  88.  01 CURR-TIME.
  89.   02 CURR-HH  PIC 99.
  90.   02 CURR-MM  PIC 99.
  91.   02 CURR-SS  PIC 99.
  92.   02 FILLER   PIC 99.
  93. * Define the string for POW-TEXT of LABEL1.
  94.  01 CURR-TIME-E.
  95.   02 CURR-HH  PIC 99.
  96.   02 FILLER   PIC X VALUE IS ":".
  97.   02 CURR-MM  PIC 99.
  98.   02 FILLER   PIC X VALUE IS ":".
  99.   02 CURR-SS  PIC 99.
  100.  PROCEDURE   DIVISION.
  101. * Update the index of the color table in order to change the background color.
  102.         ADD 1 TO COLOR-INDEX1.
  103.         IF COLOR-INDEX1 > 7 THEN MOVE 1 TO COLOR-INDEX1.
  104. * Change the background color.
  105.         MOVE COLORS (COLOR-INDEX1) TO WK-COLOR.
  106.         MOVE WK-COLOR TO POW-BACKCOLOR OF SHEET1.
  107. * Keep the time display white against the colored background.
  108.             MOVE POW-WHITE TO POW-TEXTCOLOR OF LABEL1.
  109. * Get the current time and display it in LABEL1.
  110.         ACCEPT CURR-TIME FROM TIME.
  111.         MOVE CORRESPONDING CURR-TIME TO CURR-TIME-E.
  112.         MOVE CURR-TIME-E TO POW-TEXT OF LABEL1.
  113. * Begin moving the sheet around the screen.
  114.         ADD 10 TO X-POS.
  115.         IF X-POS > MAX-X THEN
  116.             MOVE 0 TO X-POS
  117.             ADD NEW-H TO Y-POS
  118.             IF Y-POS > MAX-Y THEN
  119.                 MOVE 0 TO X-POS Y-POS
  120.             END-IF
  121.         END-IF
  122.         MOVE X-POS TO NEW-X.
  123.         MOVE Y-POS TO NEW-Y.
  124.         MOVE NEW-POSITION TO POW-POSITION OF SHEET1.
  125. @POWER POWPSBTN PUSH2 CLICK
  126.  ENVIRONMENT DIVISION.
  127.  DATA        DIVISION.
  128.  PROCEDURE   DIVISION.
  129. * Close the sample application.
  130.        CALL CLOSESHEET OF SHEET1.
  131.