home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / CLIPPER / ARR2FI.ZIP / RESTARR.PRG < prev    next >
Text File  |  1994-02-09  |  4KB  |  134 lines

  1.  
  2. /*
  3.  * File......   : RESTARR.PRG
  4.  * Author....   : Peter Kulek
  5.  * Compuserve ID: 100140,1220
  6.  * 
  7.  * This is an original work by Peter Kulek
  8.  * And is placed in the public domain.
  9.  *
  10.  * Modification history:
  11.  * ---------------------
  12.  */
  13.  
  14. /*
  15.    
  16.    Endor Ltd 
  17.    63 Church Road
  18.    Albrighton 
  19.    Shropshire
  20.    WV7 3HL
  21.    England
  22.  
  23.    Specialists in design and implementation of EIS and MIS systems 
  24.  
  25.    
  26.    Telephone: 
  27.        Analysis  081 558 2279    Peter Jordan  MD 
  28.        Technical 0902 374 900    Peter Kulek   Technical Director
  29.    
  30.    Compuserve ID 100140,1220
  31.    
  32.    We design EIS and MIS systems for large data users for use on
  33.    laptops to large networks with auto downloading from mainframes.
  34.  
  35.    If you have a large database and cannot get it into a user friendly 
  36.    format please give us a call and we will send you a live sample 
  37.    application that will show you how to manipulate vast quantities 
  38.    of data EASILY, with a minimum of tables. 
  39.    
  40.    For example a complete hierachy from parent holding company through 
  41.    to salesperson with profit and loss at each level, targeting, variances 
  42.    both monetary and percentage, graphs at each level for period and weekly 
  43.    figures all with five tables and designed and implemented within a month 
  44.    from recieving TOR. 
  45.    
  46.    Directors and Managers in large corporations have found it very friendly 
  47.    and most important they use it daily. 
  48.    
  49.    To really appreciate the vast amount of data and the easy interface a
  50.    copy of the application has to be seen.
  51.    
  52.    This is not some system using commercial EIS applications which need
  53.    months of training and have heaps of files floating all over the place.
  54.    This is far superior methodology to any of the current commercial offerings.
  55.     
  56.  
  57.    No Problem to large to solve.
  58. */
  59.  
  60. /*  $DOC$
  61.  *  $FUNCNAME$
  62.  *     FILE2ARRAY()
  63.  *  $CATEGORY$
  64.  *     Array
  65.  *  $ONELINER$
  66.  *     Save Clipper array to a disc file.
  67.  *  $SYNTAX$
  68.  *    File2Array( <cFileName>)  -> aArray
  69.  *  $ARGUMENTS$
  70.  *     <cFileName> is a DOS file name.
  71.  *  $RETURNS$
  72.  *     <aArray> a Clipper array 
  73.  *  $DESCRIPTION$
  74.  *     File2Array restores a Clipper Array saved by Array2File
  75.  *  $EXAMPLES$
  76.  *  $SEEALSO$
  77.  *     Array2File()
  78.  *  $END$
  79.  */
  80.  
  81. #include "FILEIO.CH"
  82. //-----------------------------------------------------------------------------
  83. function File2Array(cFile,nLen,hFile)
  84. LOCAL cData,cType,nDataLen,nBytes
  85. local nDepth := 0
  86. local aRay   := {}
  87. if hFile == NIL             
  88.      if (hFile:=fOpen(cFile,FO_READ)) == -1
  89.          return(aRay)
  90.      endif
  91.      cData := space(3)
  92.      fRead(hFile,@cData,3) 
  93.      if left(cData,1) != 'A'
  94.          return( aRay)
  95.      endif
  96.      nLen := bin2i(right(cData,2))
  97. endif
  98. do while nDepth < nLen 
  99.     cData  := space(3)
  100.     nBytes := fRead(hFile,@cData,3)   
  101.     if nBytes<3
  102.        exit
  103.     endif
  104.     cType:= padl(cData,1)
  105.     nDataLen:= bin2i(right(cData,2))
  106.     if cType != 'A'
  107.        cData := space(nDataLen)
  108.        nBytes:= fRead(hFile,@cData,nDataLen)
  109.        if nBytes<nDataLen
  110.            exit
  111.        endif
  112.     endif
  113.     nDepth++
  114.     aadd(aRay,NIL)
  115.     if cType=='C'
  116.         aRay[nDepth] := cData
  117.     elseif cType=='N'
  118.         aRay[nDepth] := val(cData)
  119.     elseif cType=='D'
  120.         aRay[nDepth] := stod(cData)
  121.     elseif cType=='L'
  122.         aRay[nDepth] := (cData=='T')
  123.     elseif cType=='A'
  124.         aRay[nDepth] := File2Array(,nDataLen,hFile)   
  125.     endif
  126. enddo
  127. if cFile!=NIL                            
  128.     fClose(hFile)
  129. endif
  130. return(aRay)
  131.  
  132.  
  133.  
  134.