home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / TBASIC / MC8.INC < prev    next >
Text File  |  1987-04-01  |  4KB  |  98 lines

  1. '┌───────────────────────────────────────────────────────────────────────────┐
  2. '│                               MC.BAS                                   │
  3. '│                             VERSION 1.0                                   │
  4. '│                                                                           │
  5. '│                           MODULE: MC8.INC                                 │
  6. '│                                                                           │
  7. '│                   Turbo Basic                     │
  8. '│        (C) Copyright 1987 by Borland International             │
  9. '│                                                                           │
  10. '│ DESCRIPTION: This module contains the procedures GetRec AND PutRec. These │
  11. '│        procedures are used to read/write records to/from the data   │
  12. '│        structure representing the spreadsheet.                      │
  13. '└───────────────────────────────────────────────────────────────────────────┘
  14.  
  15. SUB GetRec(Col%, Row%, CellStatus%, Contents$, Value#, Dec%, Fw%, CellColor%)
  16.   ' This procedure fetches a record from the three dimensional array
  17.   ' data structure used to represent our spreadsheet.
  18.  
  19.   LOCAL V$, Count%
  20.   SHARED SpreadSheet%()
  21.  
  22.     Contents$ = ""
  23.  
  24.     ' GET CellStatus% from first word of record
  25.     CellStatus% = SpreadSheet%(Col%, Row%, %CellStatusOfs )
  26.  
  27.     ' read string out of data record into Contents$
  28.     FOR Count%=1 to SpreadSheet%(Col%, Row%, %ContentsOfs )
  29.       Contents$=Contents$+CHR$(SpreadSheet%(Col%,Row%,%ContentsOfs +Count%))
  30.     NEXT Count%
  31.  
  32.     ' move the contents of the Value field into Value# using CVD
  33.     V$=""
  34.     FOR Count%=0 to 3
  35.        V$=V$+mki$(SpreadSheet%(Col%,Row%,%ValueOfs +Count%))
  36.     NEXT Count%
  37.     Value#=CVD(V$)
  38.  
  39.     ' assign the value of Dec%
  40.     Dec%=SpreadSheet%(Col%, Row%, %DecOfs )
  41.  
  42.     ' assign the value of Fw%
  43.     Fw%=SpreadSheet%(Col%, Row%, %FwOfs )
  44.  
  45.     ' assign the value of CellColor%
  46.     CellColor%=SpreadSheet%(Col%, Row%, %ColorOfs )
  47.  
  48. END SUB ' END the procedure GetRec
  49.  
  50. SUB PutRec(Col%, Row%, CellStatus%, Contents$, Value#, Dec%, Fw%, CellColor%)
  51.   ' This procedure writes a record to the three dimensional array
  52.   ' data structure used to represent our spreadsheet. Note that IF
  53.   ' any of the numeric parameters are = -1 or the string parameter
  54.   ' has a null character in the first position, the field is
  55.   ' undefined and the corresponding field in the record will NOT be
  56.   ' modified.
  57.  
  58.   LOCAL Count%,V$
  59.   SHARED SpreadSheet%(),NoPutReal#
  60.  
  61.     ' write CellStatus% to the record
  62.     IF CellStatus% <> -1 THEN  ' field is defined
  63.       SpreadSheet%(Col%, Row%, %CellStatusOfs ) = CellStatus%
  64.     END IF ' END IF THEN block
  65.  
  66.     ' write the string Contents$ to the record
  67.     IF LEFT$(Contents$,1) <> CHR$(0) THEN ' field is defined
  68.       ' assign the length byte
  69.       SpreadSheet%(Col%, Row%, %ContentsOfs ) = LEN(Contents$)
  70.       ' copy each of the characters into a word of the record
  71.       FOR Count% = 1 to SpreadSheet%(Col%, Row%, %ContentsOfs )
  72.         ' GET the NEXT character
  73.         SpreadSheet%(Col%,Row%,%ContentsOfs +Count%)=_
  74.                                                ASC(MID$(Contents$,Count%,1))
  75.       NEXT Count%
  76.     END IF ' END IF THEN block
  77.  
  78.     ' using MKD$ to write Value# to the record
  79.     IF Value# <> NoPutReal# THEN ' is defined
  80.        V$=mkd$(Value#)
  81.        FOR Count%=0 to 3
  82.          SpreadSheet%(Col%,Row%,%ValueOfs +Count%)=CVI(MID$(V$,Count%*2+1,2))
  83.        NEXT
  84.     END IF
  85.  
  86.     IF Fw% <> -1 THEN ' is defined
  87.       SpreadSheet%(Col%, Row%, %FwOfs ) =  Fw%
  88.       SpreadSheet%(Col%, Row%, %DecOfs ) = Dec%
  89.     END IF ' END IF THEN block
  90.  
  91.     IF CellColor%<>-1 THEN
  92.       SpreadSheet%(Col%, Row%, %ColorOfs )=CellColor%
  93.     END IF
  94.  
  95. END SUB ' end the procedure PutRec
  96.  
  97.  
  98.