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

  1. @POWER POWSHEET SHEET1 SPECIAL-NAMES
  2.      SYMBOLIC CONSTANT
  3.      MAX-ROW-NUMBER IS 2
  4.      .
  5. @POWER POWSHEET SHEET1 OPENED
  6.  ENVIRONMENT DIVISION.
  7.  DATA        DIVISION.
  8.  PROCEDURE   DIVISION.
  9. * Set the following information on EXCEL to the DDE SERVER.
  10. *  POW-DDESERVICE - Application name (Excel).
  11. *  POW-DDETOPIC   - Topic name (full name of Excel sheet).
  12. *  POW-DDEITEM    - Item name (Applicables range of cells).
  13.      MOVE "Excel" TO POW-DDESERVICE OF DDE1.
  14. *    MOVE "M:\POWER\SAMPLES\DDE\EXCELDDE.XLS"
  15. *            TO POW-DDETOPIC OF DDE1.
  16.      MOVE "EXCELDDE.XLS"
  17.              TO POW-DDETOPIC OF DDE1.
  18.      MOVE "R2C1:R3C3" TO POW-DDEITEM OF DDE1.
  19. @POWER POWSHEET SHEET1 CLOSE
  20.  ENVIRONMENT DIVISION.
  21.  DATA        DIVISION.
  22.  PROCEDURE   DIVISION.
  23. * Close the DDE conversation and end the advise loop.
  24. * with the DDE client (DDE1).
  25.      CALL CLOSEDDE OF DDE1.
  26. @POWER POWDDE DDE1 DDECHANGE
  27.  ENVIRONMENT DIVISION.
  28.  DATA        DIVISION.
  29.  WORKING-STORAGE SECTION.
  30. * Set the area where the data from EXCEL is to be received.
  31.  77 DDE-EXCEL-DATA  PIC X(4096).
  32. * Set the area to decompose the data from EXCEL into each table cell.
  33.  01 DDE-ROW-DATA.
  34.      02 DDE-ROW     PIC X(100) OCCURS MAX-ROW-NUMBER TIMES.
  35.  01 DDE-COL-DATA.
  36.      02 DDE-DATA-ROW OCCURS MAX-ROW-NUMBER TIMES.
  37.          03 DDE-COL-DATA1  PIC X(20).
  38.          03 DDE-COL-DATA2  PIC X(20).
  39.          03 DDE-COL-DATA3  PIC 9(9).
  40. * Set the working area..
  41.  77 DDE-ROW-INDEX      PIC  9(8) COMP-5.
  42.  77 DDE-TEXT-WORK      PIC  X(30).
  43.  77 DDE-NUMERIC-WORK   PIC  9(9).
  44.  
  45.  01 POINT-CURRENT-TOP  PIC  9(9) COMP-5.
  46.  PROCEDURE   DIVISION.
  47. * When a cell in the Excel table is modified, it is also modified
  48. * in the table and the user is notified of this change.
  49.      MOVE "The Excel table has been updated." TO POW-TEXT OF LABEL2.
  50. * Obtain modified data from the EXCEL file.
  51.      MOVE POW-DDEDATA OF DDE1 TO DDE-EXCEL-DATA.
  52. * Decompose each line of data.
  53.      UNSTRING DDE-EXCEL-DATA DELIMITED BY X"0D0A"
  54.          INTO DDE-ROW ( 1 )
  55.               DDE-ROW ( 2 )
  56.      END-UNSTRING.
  57. * Decompose the data from each line into cells.
  58.      MOVE 1 TO POINT-CURRENT-TOP
  59.      PERFORM VARYING DDE-ROW-INDEX FROM 1 BY 1 
  60.              UNTIL DDE-ROW-INDEX > MAX-ROW-NUMBER
  61.          UNSTRING DDE-ROW ( DDE-ROW-INDEX ) 
  62.              DELIMITED BY ","
  63.              INTO DDE-COL-DATA1 ( DDE-ROW-INDEX ) 
  64.                   DDE-COL-DATA2 ( DDE-ROW-INDEX ) 
  65.              WITH POINTER POINT-CURRENT-TOP
  66.          END-UNSTRING
  67.          UNSTRING DDE-ROW ( DDE-ROW-INDEX )
  68.              DELIMITED BY SPACE
  69.              INTO DDE-COL-DATA3 ( DDE-ROW-INDEX ) 
  70.              WITH POINTER POINT-CURRENT-TOP
  71.          END-UNSTRING
  72.      END-PERFORM.
  73. * Set the decomposed Excel data to each cell of the
  74. * table.
  75.      PERFORM  VARYING DDE-ROW-INDEX FROM 1 BY 1 
  76.              UNTIL DDE-ROW-INDEX > MAX-ROW-NUMBER
  77.          MOVE DDE-COL-DATA1 ( DDE-ROW-INDEX ) TO DDE-TEXT-WORK
  78.          CALL SETCELLTEXT OF TABLE1 USING DDE-TEXT-WORK DDE-ROW-INDEX 1
  79.          MOVE DDE-COL-DATA2 ( DDE-ROW-INDEX ) TO DDE-TEXT-WORK
  80.          CALL SETCELLTEXT OF TABLE1 USING DDE-TEXT-WORK DDE-ROW-INDEX 2
  81.          MOVE DDE-COL-DATA3 ( DDE-ROW-INDEX ) TO DDE-NUMERIC-WORK
  82.          CALL SETCELLNUMERIC OF TABLE1 USING DDE-NUMERIC-WORK DDE-ROW-INDEX 3
  83.      END-PERFORM.
  84. @POWER POWPSBTN PUSH1 CLICK
  85.  ENVIRONMENT DIVISION.
  86.  DATA        DIVISION.
  87.  WORKING-STORAGE SECTION.
  88. * Set the area where the data from EXCEL is to be received.
  89.  77 DDE-EXCEL-DATA  PIC X(4096).
  90. * Set the area to decompose the data from EXCEL into each table cell.
  91.  01 DDE-ROW-DATA.
  92.      02 DDE-ROW     PIC X(100) OCCURS MAX-ROW-NUMBER TIMES.
  93.  01 DDE-COL-DATA.
  94.      02 DDE-DATA-ROW OCCURS MAX-ROW-NUMBER TIMES.
  95.          03 DDE-COL-DATA1  PIC X(20).
  96.          03 DDE-COL-DATA2  PIC X(20).
  97.          03 DDE-COL-DATA3  PIC 9(9).
  98. * Set the working area.
  99.  77 DDE-ROW-INDEX      PIC  9(8) COMP-5.
  100.  77 DDE-TEXT-WORK      PIC  X(30).
  101.  77 DDE-NUMERIC-WORK   PIC  9(9).
  102.  
  103.  01 POINT-CURRENT-TOP  PIC  9(9) COMP-5.
  104.  PROCEDURE   DIVISION.
  105. * Open a conversation with the DDE server and begin the advise loop.
  106.      CALL OPENDDE OF DDE1.
  107. * Obtain the table data from the specified EXCEL file.
  108.      MOVE POW-DDEDATA OF DDE1 TO DDE-EXCEL-DATA.
  109. * Decompose each line of data.
  110.      UNSTRING DDE-EXCEL-DATA DELIMITED BY X"0D0A"
  111.          INTO DDE-ROW ( 1 )
  112.               DDE-ROW ( 2 )
  113.      END-UNSTRING.
  114. * Decompose the data from each line into cells.
  115.      PERFORM VARYING DDE-ROW-INDEX FROM 1 BY 1 
  116.              UNTIL DDE-ROW-INDEX > MAX-ROW-NUMBER
  117.          MOVE 1 TO POINT-CURRENT-TOP
  118.          UNSTRING DDE-ROW ( DDE-ROW-INDEX ) 
  119.              DELIMITED BY ","
  120.              INTO DDE-COL-DATA1 ( DDE-ROW-INDEX ) 
  121.                   DDE-COL-DATA2 ( DDE-ROW-INDEX ) 
  122.                 WITH POINTER POINT-CURRENT-TOP
  123.          END-UNSTRING
  124.          UNSTRING DDE-ROW ( DDE-ROW-INDEX ) 
  125.              DELIMITED BY SPACE
  126.              INTO DDE-COL-DATA3 ( DDE-ROW-INDEX ) 
  127.                 WITH POINTER POINT-CURRENT-TOP
  128.          END-UNSTRING
  129.      END-PERFORM.
  130. * Set the decomposed Excel data to each cell of the
  131. * table.
  132.      PERFORM  VARYING DDE-ROW-INDEX FROM 1 BY 1 
  133.              UNTIL DDE-ROW-INDEX > MAX-ROW-NUMBER
  134.          MOVE DDE-COL-DATA1 ( DDE-ROW-INDEX ) TO DDE-TEXT-WORK
  135.          CALL SETCELLTEXT OF TABLE1 USING DDE-TEXT-WORK DDE-ROW-INDEX 1
  136.          MOVE DDE-COL-DATA2 ( DDE-ROW-INDEX ) TO DDE-TEXT-WORK
  137.          CALL SETCELLTEXT OF TABLE1 USING DDE-TEXT-WORK DDE-ROW-INDEX 2
  138.          MOVE DDE-COL-DATA3 ( DDE-ROW-INDEX ) TO DDE-NUMERIC-WORK
  139.          CALL SETCELLNUMERIC OF TABLE1 USING DDE-NUMERIC-WORK DDE-ROW-INDEX 3
  140.      END-PERFORM.
  141. @POWER POWPSBTN PUSH2 CLICK
  142.  ENVIRONMENT DIVISION.
  143.  DATA        DIVISION.
  144.  PROCEDURE   DIVISION.
  145. * Close the sample application.
  146.      CALL CLOSESHEET OF SHEET1.
  147.