home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1995 September / Image.iso / visualob / install / samples / employee / udfio.pr_ / udfio.pr
Encoding:
Text File  |  1994-08-18  |  5.1 KB  |  291 lines

  1. // UDFIO.PRG
  2. // Employee Information input / output library functions
  3. // November, 1993
  4.  
  5. #include "sys.ch"
  6.  
  7. FUNCTION Init_IO(TheSys)
  8.    MEMVAR SysPath
  9.    PUBLIC SysPath
  10.  
  11.    SysPath := Get_Path(TheSys)
  12.  
  13.    RETURN TRUE
  14.  
  15. FUNCTION FileInfo(TheAlias)
  16.    LOCAL TheArray
  17.  
  18.    TheArray := {}
  19.  
  20.    IF ISUNDEFINED(TheAlias)
  21.       AAdd(TheArray, "Employee")
  22.       AAdd(TheArray, "Expense")
  23.       AAdd(TheArray, "ExpCode")
  24.       AAdd(TheArray, "Depart")
  25.       AAdd(TheArray, "Supers")
  26.    ELSE
  27.  
  28.       TheAlias := Lower(TheAlias)
  29.          
  30.       IF TheAlias == 'employee'
  31.          AAdd(TheArray, "Emp_Num")
  32.          AAdd(TheArray, "Upper(LName)")
  33.  
  34.       ELSEIF TheAlias == "expense"
  35.          AAdd(TheArray, "Emp_Num"  )
  36.          AAdd(TheArray, "Exp_Code" )
  37.          AAdd(TheArray, "Subm_Date")
  38.          AAdd(TheArray, "Paid_Date")
  39.          AAdd(TheArray, "Dept_Num" )
  40.          AAdd(TheArray, "Super_Num")
  41.  
  42.       ELSEIF TheAlias == 'expcode'
  43.          AAdd(TheArray, "Exp_Code")
  44.          AAdd(TheArray, "Exp_Name")
  45.  
  46.       ELSEIF TheAlias == "depart"
  47.          AAdd(TheArray, "Dept_Num" )
  48.          AAdd(TheArray, "Dept_Name")
  49.  
  50.       ELSEIF TheAlias == "supers"
  51.          AAdd(TheArray, "Super_Num")
  52.          AAdd(TheArray, "SName"    )
  53.  
  54.       ENDIF
  55.    ENDIF
  56.  
  57.    RETURN TheArray
  58.  
  59.  FUNCTION Select_It(TheAlias)
  60.  
  61.    IF ISNUMERIC(TheAlias)
  62.       SELECT (TheAlias)
  63.  
  64.    ELSEIF !Select(TheAlias) = 0
  65.       SELECT (TheAlias)
  66.  
  67.    ELSEIF !Open_It(TheAlias)
  68.          RETURN FALSE
  69.  
  70.    ENDIF
  71.  
  72.    RETURN TRUE
  73.  
  74.  
  75. FUNCTION Open_It(TheAlias)
  76.    LOCAL  TheCount, TheTotal, TheArray, TheNtx
  77.    MEMVAR SysPath
  78.  
  79.    TheArray := FileInfo(TheAlias)
  80.    TheTotal := Len(TheArray)
  81.    IF TheTotal = 0
  82.       RETURN FALSE
  83.    ENDIF
  84.  
  85.    TheNtx := SysPath + Left(TheAlias, 6)
  86.    USE (SysPath + TheAlias) ALIAS (TheAlias) NEW
  87.  
  88.    FOR TheCount := 1 TO TheTotal
  89.       DBSetIndex(TheNtx + RZero(str(TheCount, 2)))
  90.    NEXT
  91.  
  92.    RETURN TRUE
  93.  
  94.  
  95. FUNCTION Close_It(TheAlias)
  96.  
  97.    IF ISUNDEFINED(TheAlias)
  98.       CLOSE DATABASES
  99.  
  100.    ELSEIF Select(TheAlias) = 0
  101.       RETURN FALSE
  102.  
  103.    ELSE
  104.       Select_It(TheAlias)
  105.       USE
  106.  
  107.    ENDIF
  108.  
  109.    RETURN TRUE
  110.  
  111. FUNCTION Order_It(TheOrder, TheAlias)
  112.  
  113.    IF !ISCHARACTER(TheAlias)
  114.    ELSEIF !Select_It(TheAlias)
  115.       RETURN FALSE
  116.    ENDIF
  117.  
  118.    SET ORDER TO (TheOrder)
  119.  
  120.    RETURN TRUE
  121.  
  122.  
  123. FUNCTION Seek_It(TheData, TheAlias, TheOrder, P4)
  124.    LOCAL TheSoft
  125.  
  126.    IF !ISCHARACTER(TheAlias)
  127.    ELSEIF !Select_It(TheAlias)
  128.       RETURN FALSE
  129.    ENDIF
  130.  
  131.    IF !ISNUMERIC(TheOrder)
  132.    ELSEIF !Order_It(TheOrder)
  133.       RETURN FALSE
  134.    ENDIF
  135.  
  136.    IF !ISLOGICAL(P4)
  137.       TheSoft := FALSE
  138.    ELSE
  139.       TheSoft := P4
  140.    ENDIF
  141.  
  142.    DBSeek(TheData, TheSoft)
  143.  
  144.    RETURN Found()
  145.  
  146.  
  147. FUNCTION Append_It(TheAlias)
  148.  
  149.    IF !ISCHARACTER(TheAlias)
  150.    ELSEIF !Select_It(TheAlias)
  151.       RETURN FALSE
  152.    ENDIF
  153.  
  154.    APPEND BLANK
  155.  
  156.    RETURN TRUE
  157.  
  158.  
  159. FUNCTION Delete_It(TheAlias, TheMode)
  160.  
  161.    IF !ISCHARACTER(TheAlias)
  162.    ELSEIF !Select_It(TheAlias)
  163.       RETURN FALSE
  164.    ENDIF
  165.  
  166.    DELETE
  167.  
  168.    IF !ISLOGICAL(TheMode)
  169.    ELSEIF !TheMode
  170.    ELSEIF !Skip_It(+1)
  171.    ELSEIF !Skip_It(-1)
  172.       RETURN FALSE
  173.    ENDIF
  174.  
  175.    RETURN TRUE
  176.  
  177.  
  178. FUNCTION GoTo_It(TheRecord, TheAlias)
  179.  
  180.    IF ISUNDEFINED(TheAlias)
  181.    ELSEIF !Select_It(TheAlias)
  182.       RETURN FALSE
  183.    ENDIF
  184.  
  185.    GOTO TheRecord
  186.  
  187.    IF BOF()
  188.       RETURN FALSE
  189.  
  190.    ELSEIF EOF()
  191.       RETURN FALSE
  192.  
  193.    ENDIF
  194.  
  195.    RETURN !Deleted()
  196.  
  197.  
  198. FUNCTION Skip_It(TheAmount, TheAlias, TheOrder, TheCondition)
  199.  
  200.    IF !ISCHARACTER(TheAlias)
  201.    ELSEIF !Select_It(TheAlias)
  202.       RETURN FALSE
  203.    ENDIF
  204.  
  205.    IF !ISNUMERIC(TheOrder)
  206.    ELSEIF !Order_It(TheOrder)
  207.       RETURN FALSE
  208.    ENDIF
  209.  
  210.    IF !ISNUMERIC(TheAmount)
  211.       TheAmount := 1
  212.    ENDIF
  213.  
  214. *---- this will go to EOF() when already at EOF() or called from the 
  215. *     last non-deleted record when SET DELETED is ON (which it is by 
  216. *     default).
  217.  
  218.    IF !ISBLOCK(TheCondition)
  219.       TheCondition := { || TRUE }
  220.    ENDIF
  221.  
  222.    DO WHILE TRUE
  223.       SKIP TheAmount
  224.  
  225.       IF BOF()
  226.          RETURN FALSE
  227.  
  228.       ELSEIF EOF()
  229.          RETURN FALSE
  230.  
  231.       ELSEIF Eval(TheCondition)
  232.          EXIT
  233.  
  234.       ENDIF
  235.  
  236.    ENDDO
  237.  
  238.    RETURN TRUE
  239.  
  240.  
  241. FUNCTION Top_It(TheAlias, TheOrder, TheCondition)
  242.  
  243.    IF !ISCHARACTER(TheAlias)
  244.    ELSEIF !Select_It(TheAlias)
  245.       RETURN FALSE
  246.    ENDIF
  247.  
  248.    IF !ISNUMERIC(TheOrder)
  249.    ELSEIF !Order_It(TheOrder)
  250.       RETURN FALSE
  251.    ENDIF
  252.  
  253.    GO TOP
  254.  
  255.    IF !ISBLOCK(TheCondition)
  256.    ELSEIF Eval(TheCondition)
  257.    ELSE
  258.       Skip_It(1,,,TheCondition)
  259.    ENDIF
  260.  
  261.    RETURN !EOF()
  262.  
  263.  
  264. FUNCTION Bottom_It(TheAlias, TheOrder, TheCondition)
  265.  
  266.    IF !ISCHARACTER(TheAlias)
  267.    ELSEIF !Select_It(TheAlias)
  268.       RETURN FALSE
  269.    ENDIF
  270.  
  271.    IF !ISNUMERIC(TheOrder)
  272.    ELSEIF !Order_It(TheOrder)
  273.       RETURN FALSE
  274.    ENDIF
  275.  
  276. *---- this will go to EOF() when already at EOF() or called from the 
  277. *     last non-deleted record when SET DELETED is ON (which it is by 
  278. *     default).
  279.    GO BOTTOM
  280.  
  281.    IF !ISBLOCK(TheCondition)
  282.    ELSEIF Eval(TheCondition)
  283.    ELSE
  284.       Skip_It(-1,,,TheCondition)
  285.    ENDIF
  286.  
  287.    RETURN !EOF()
  288.  
  289.  
  290.  
  291.