home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / modula2 / library / btrintfc / binterfa.def < prev    next >
Text File  |  1988-05-13  |  39KB  |  1,107 lines

  1. DEFINITION MODULE bInterface;
  2.   (*-------------------------------------------------------------*)
  3.   (*                     b I N T E R F A C E                     *)
  4.   (*       Modula-2 Library of Btrieve Support procedures        *)
  5.   (*                   Copyright (C) 1988 by                     *)
  6.   (*   WILKEN & SABELBERG Software GbR, Braunschweig, Germany    *)
  7.   (*                    All rights reserved                      *)
  8.   (*-------------------------------------------------------------*)
  9.   (*
  10.       Btrieve is a trademark of SoftCraft, A Novell Company
  11.    *)
  12.   (*  Autoren: Egbert Bebenroth, Holger Kanwischer
  13.       Status : freigegeben
  14.    *)
  15.   (*  Bearbeitungsstand:
  16.       04.05.88  EB    v1.01
  17.       09.05.88  HK    v1.02
  18.    *)
  19.   (*-------------------------------------------------------------*)
  20.   FROM SYSTEM IMPORT BYTE;
  21.   (*-------------------------------------------------------------*)
  22.   (*   T Y P E  D E F I N I T I O N E N   F ü R   C R E A T E    *)
  23.   (*-------------------------------------------------------------*)
  24.   CONST
  25.     cAuto      = 0;
  26.   (*
  27.      für automatische Berechnung von dataLen, FileSpecs.RecLen:
  28.    *)
  29.   (*-------------------------------------------------------------*)
  30.     cMaxKeySeg = 24;
  31.   (*
  32.      max. Anzahl der Schlüsselsegmente pro Datei -
  33.      Btrieve-Handbuch: Seite 1-4, 1-9.
  34.    *)
  35.   (*-------------------------------------------------------------*)
  36.     cDefaultPageSize = 1024;
  37.   (*
  38.      Standard-Seitengröße, wenn Btrieve ohne 'P'-Parameter
  39.      gestartet wird
  40.    *)
  41.   (*-------------------------------------------------------------*)
  42.   TYPE
  43.     ePageSize         = CARDINAL;
  44.   (*
  45.      eigentlich wäre ein Aufzählungstyp angemessen, z.B.:
  46.        ePageSize =
  47.          (page512, page1024, page1536, page2048, page2560,
  48.           page3072, page3584, page4096);
  49.      es wurde CARDINAL gewählt, damit TSIZE(ePageSize) = 2 ist
  50.    *)
  51.   (*-------------------------------------------------------------*)
  52.     bKeyNum           = CARDINAL;
  53.   (*
  54.      eigentlich [1..cMaxKeySeg];
  55.      aber es muß gelten: TSIZE(bKeyNum)=2
  56.    *)
  57.   (*-------------------------------------------------------------*)
  58.     eFileFlags        = (variableLen, blankCompression,
  59.                          preallocation);
  60.   (* Btrieve-Handbuch: (Kap. 4.10:) Seite 2-10.
  61.      Attrribute:
  62.                         variable length
  63.                         blank compression
  64.                         preallocation
  65.   *)
  66.   (*-------------------------------------------------------------*)
  67.     sFileFlags        = SET OF eFileFlags;
  68.   (*-------------------------------------------------------------*)
  69.     eKeyFlags         = (duplicatesAllowed, modifiable,
  70.                          sortBinary, defineNullValue,
  71.                          notLastSegment, sortByAlternateSeq,
  72.                          sortDescending, supplemental,
  73.                          useExtendedKeyType);
  74.   (*
  75.      Btrieve-Handbuch: (Kap. 4.10:) Seite 2-11, 2-12.
  76.      Attribute:
  77.                         duplicate
  78.                         modifiable
  79.                         binary
  80.                         null
  81.                         segmented
  82.                         alt col seq
  83.                         descending
  84.                         supplemental
  85.                         extended type
  86.    *)
  87.   (*-------------------------------------------------------------*)
  88.     sKeyFlags         = SET OF eKeyFlags;
  89.   (*-------------------------------------------------------------*)
  90.     eExtendedKeyTypes = (string, integer, float, date, time,
  91.                          decimal, money, logical, numeric, bfloat,
  92.                          lstring, zstring, notAllowed12,
  93.                          notAllowed13, unsignedBinary);
  94.   (*
  95.      Btrieve-Handbuch: (Kap. 4.10:) Seite 2-13. 
  96.      Namen wie im Btrieve-Handbuch
  97.    *)
  98.   (*-------------------------------------------------------------*)
  99.     rFileSpecs        = RECORD
  100.                           RecLen       : CARDINAL;
  101.                           PageSize     : ePageSize;
  102.                           NumIndexes   : bKeyNum;
  103.                           NumRecs      : LONGINT;
  104.                           FileFlags    : sFileFlags;
  105.                           (*[+JPI,+LOG*)
  106.                           (* hinter FileFlags, byte reversed! *)
  107.                           FillByte     : CHAR;
  108.                           (*]*)
  109.                           Reserved     : CARDINAL;
  110.                           Allocation   : CARDINAL;
  111.                         END;
  112.   (*
  113.       'RecLen'    : Record-Länge
  114.       'PageSize'  : 512,1024,1536,2048,2560,3072,3584,4096
  115.       'NumIndexes': Anz. Indexe: 1..24 (1..8)
  116.                     bei PageSize > (=) 512
  117.       'NumRecs'   : Zahl der Datensätze in der Datei; dieses
  118.                     Feld wird durch die Routine 'StatusOfFile'
  119.                     besetzt
  120.       'FileFlags' : siehe oben [vor Version 4.10: variableLenFlag
  121.                     (fixed,variable)]
  122.       'Reserved'  : MOMENTAN NICHT BENUTZT (laut Handbuch)
  123.       'Allocation': Zahl der Seiten, die präalloziert werden
  124.                     sollen
  125.  
  126.       Btrieve-Handbuch: Seite 9.13; (Kap. 4.10:) Seite 2-9.
  127.    *)
  128.   (*-------------------------------------------------------------*)
  129.     rKeySpec          = RECORD
  130.                           KeyPos          : CARDINAL;
  131.                           KeyLen          : CARDINAL;
  132.                           KeyFlags        : sKeyFlags;
  133.                           NotUsed         : LONGINT;
  134.                           ExtendedKeyType : eExtendedKeyTypes;
  135.                           NullValue       : CHAR;
  136.                           Reserved        : LONGINT;
  137.                         END;
  138.   (*
  139.       'KeyPos'          : 1..RecLen-KeyLen
  140.                           Btrieve-Handbuch: Seite 3-8.
  141.       'KeyLen'          : 1..255
  142.                           Btrieve-Handbuch: Seite 3-8.
  143.       'KeyFlags'        : siehe eKeyFlags
  144.       'NotUsed'         : MOMENTAN NICHT BENUTZT (laut Handbuch)
  145.       'ExtendedKeyType' : s. eExtendedKeyTypes (muß 1 Byte lang
  146.                           sein!)
  147.       'NullValue'       : Btrieve-Handbuch: Seite 2-6, 3-9, 9-16.
  148.       'Reserved'        : MOMENTAN NICHT BENUTZT (laut Handbuch)
  149.  
  150.       Btrieve-Handbuch: Seite 9-13; (Kap. 4.10:) Seite 2-9.
  151.    *)
  152.   (*-------------------------------------------------------------*)
  153.     rAlternateSeq     = RECORD
  154.                           Name           : ARRAY [0..7] OF CHAR;
  155.                           SortValueTable : ARRAY CHAR OF CHAR;
  156.                         END;
  157.   (*
  158.      'Name'           : Tabellen-Name (ohne Signaturbyte 0ACH)
  159.      'SortValueTable' : Btrieve-Handbuch: Seite 2-7, 3-9, 9-16.
  160.    *)
  161.   (*------------------------------------------------------------*)
  162.   (*   W E I T E R E   T Y P E - D E F I N I T I O N E N :      *)
  163.   (*------------------------------------------------------------*)
  164.     tBtrvFile         = [0..255];
  165.   (*
  166.      Btrieve File Handle: siehe Dokumentation
  167.    *)
  168.   (*------------------------------------------------------------*)
  169.     aDosPath          = ARRAY [0..64] OF CHAR;
  170.   (*
  171.      DOS-Pfadnamen und Dateinamen
  172.    *)
  173.   (*------------------------------------------------------------*)
  174.     aOwnerName        = ARRAY [0..7] OF CHAR;
  175.   (*
  176.      Btrieve-Handbuch: Seite 2-27, 9-71
  177.    *)
  178.   (*------------------------------------------------------------*)
  179.     eOpenMode         = (normal, accelerated, readOnly, verify,
  180.                          exclusive);
  181.   (* 
  182.       Btrieve-Handbuch: Seite 9-63, (Kap. 4.10:) 2-22.
  183.    *)
  184.   (*------------------------------------------------------------*)
  185.     eGetOp            = (equal, next, previous, greater,
  186.                          greaterOrEqual, lessThan,
  187.                          lessThanOrEqual, lowest, highest);
  188.   (*
  189.      Operatoren für die Routinen 'GetRec' und 'GetKey':
  190.      siehe Dokumentation
  191.    *)
  192.   (*------------------------------------------------------------*)
  193.     eLockMode         = (standard, wait, noWait, multipleWait,
  194.                          multipleNoWait);
  195.   (* 
  196.      Btrieve-Handbuch: Seite 9-61; (Kap. 4.10:) 2-22.
  197.    *)
  198.   (*------------------------------------------------------------*)
  199.     eExtendStoreMode  = (normalMode, immediate);
  200.   (*
  201.      Btrieve-Handbuch: Seite 9-24.
  202.    *)
  203.   (*------------------------------------------------------------*)
  204.     eAccessRestrict   = (encryp, readOnlyAccess);
  205.     sAccessRestrict   = SET OF eAccessRestrict;
  206.   (* 
  207.       Btrieve-Handbuch: Seite 9-71
  208.    *)
  209.   (*------------------------------------------------------------*)
  210.     eUnlockMode       = (single, oneMultiple, allMultiple);
  211.   (*
  212.       Btrieve-Handbuch: Seite 9-83; (Kap. 4.10:) 2-24.
  213.    *)
  214.   (*------------------------------------------------------------*)
  215.     rVersion          = RECORD
  216.                           Version      : CARDINAL;
  217.                           Revision     : CARDINAL;
  218.                           NetIndicator : CHAR;
  219.                         END;
  220.   (*
  221.       'Version'      : Versionsnummer, momentan aktuell: 4
  222.       'Revision'     : Revisionsnummer, momentan aktuell: 10
  223.       'NetIndicator' : 'N' für Btrieve/N; ' ' für Btrieve
  224.    *)
  225.   (*------------------------------------------------------------*)
  226.     eBtrvStatus       =
  227.        (done,                  
  228.         invalidOperation,      
  229.         ioErr,
  230.         noOpen,                
  231.         keyNotFound,           
  232.         duplicatesErr,         
  233.         invalidKeyNum,         
  234.         differentKeyNum,       
  235.         invalidPositioning,    
  236.         endOfFile,             
  237.         modifiableErr,
  238.         invalidFileName,       
  239.         fileNotFound,          
  240.         extensionErr,          
  241.         preOpenErr,            
  242.         preImageErr,           
  243.         expansionErr,          
  244.         closeErr,              
  245.         diskFull,              
  246.         unrecoverableErr,      
  247.         recordManagerInactive, 
  248.         keyBufErr,
  249.         recordBuf,             
  250.         positionBlock,         
  251.         pageSize,
  252.         createIOErr,           
  253.         numberOfKeys,          
  254.         keyPos,                
  255.         recordLen,             
  256.         keyLen,                
  257.         btrieveFileName,       
  258.         extendErr,             
  259.         extendIOErr,
  260.         notUsed33,             
  261.         extendName,            
  262.         directoryErr,          
  263.         transActionErr,        
  264.         beginTransaction,      
  265.         transactionControlFile,
  266.         endAbortFile,          
  267.         transactionMaxFiles,   
  268.         transactionOpenClose,       
  269.         incompleteAcceleratedAccess,   
  270.         invalidDataRecordAddress,
  271.         nullKeyPath,                   
  272.         inconsistentKeyFlags,          
  273.         accessDenied,
  274.         maximumOpenFiles,
  275.         invalidAlternateSequenceDef,
  276.         keyTypeErr,
  277.         ownerAlreadySet,
  278.         invalidOwner,
  279.         errorWritingCache,
  280.         invalidInterface,
  281.         variablePageErr,
  282.         notUsed55,                     
  283.         incompleteIndex,               
  284.         expandedMemoryErr,             
  285.         notUsed58,                     
  286.         notUsed59,                     
  287.         notUsed60,                     
  288.         notUsed61,                     
  289.         notUsed62,                     
  290.         notUsed63,                     
  291.         notUsed64,                     
  292.         notUsed65,
  293.         notUsed66,                     
  294.         notUsed67,                     
  295.         notUsed68,                     
  296.         notUsed69,                     
  297.         notUsed70,                     
  298.         notUsed71,                     
  299.         notUsed72,                     
  300.         notUsed73,                     
  301.         notUsed74,                     
  302.         notUsed75,                     
  303.         notUsed76,
  304.         notUsed77,
  305.         notUsed78,
  306.         notUsed79,
  307.         conflict,
  308.         lockErr,
  309.         lostPosition,                  
  310.         readOutsideTransaction,        
  311.         recordInUse,                   
  312.         fileInUse,                     
  313.         fileFull,                      
  314.         handleFull,
  315.         modeErr,                       
  316.         nameErr,                       
  317.         deviceFull,                    
  318.         serverErr,                     
  319.         transactionFull,               
  320.         incompatibleLockType,          
  321.         notUsed94,                     
  322.         notUsed95,                     
  323.         notUsed96,                     
  324.         dataBufTooSmall,               
  325.         notUsed98,
  326.         demoErr);                      
  327.   (*
  328.      Status Codes:
  329.      siehe Btrieve-Handbuch Appendix B, Seite B-1 bis B-15
  330.      und (Kap. 4.10:) Appendix A, Seite A-1 bis A-4.
  331.    *)
  332.   (*    done:                           00
  333.         invalidOperation:               01
  334.         ioErr:                          02
  335.         noOpen:                         03
  336.         keyNotFound:                    04
  337.         duplicatesErr:                  05
  338.         invalidKeyNum:                  06
  339.         differentKeyNum:                07
  340.         invalidPositioning:             08
  341.         endOfFile:                      09
  342.         modifiableErr:                  10
  343.         invalidFileName:                11
  344.         fileNotFound:                   12
  345.         extensionErr:                   13
  346.         preOpenErr:                     14
  347.         preImageErr:                    15
  348.         expansionErr:                   16
  349.         closeErr:                       17
  350.         diskFull:                       18
  351.         unrecoverableErr:               19
  352.    *)
  353.   (*
  354.         recordManagerInactive:          20
  355.         keyBufErr:                      21
  356.         recordBuf:                      22
  357.         positionBlock:                  23
  358.         pageSize:                       24
  359.         createIOErr:                    25
  360.         numberOfKeys:                   26
  361.         keyPos:                         27
  362.         recordLen:                      28
  363.         keyLen:                         29
  364.         btrieveFileName:                30
  365.         extendErr:                      31
  366.         extendIOErr:                    32
  367.         notUsed33:                      33
  368.         extendName:                     34
  369.         directoryErr:                   35
  370.         transActionErr:                 36
  371.         beginTransaction:               37
  372.         transactionControlFile:         38
  373.    *)
  374.   (*
  375.         endAbortFile:                   39
  376.         transactionMaxFiles:            40
  377.         transactionOpenClose:           41
  378.         incompleteAcceleratedAccess:    42
  379.         invalidDataRecordAddress:       43
  380.         nullKeyPath:                    44
  381.         inconsistentKeyFlags:           45
  382.         accessDenied:                   46
  383.         maximumOpenFiles:               47
  384.         invalidAlternateSequenceDef:    48
  385.         keyTypeErr:                     49
  386.         ownerAlreadySet:                50
  387.         invalidOwner:                   51
  388.         errorWritingCache:              52
  389.         invalidInterface:               53
  390.         variablePageErr:                54
  391.         notUsed55:                      55
  392.         incompleteIndex:                56
  393.    *)
  394.   (*
  395.         expandedMemoryErr:              57
  396.         notUsed58:                      58
  397.         notUsed59:                      59
  398.         notUsed60:                      60
  399.         notUsed61:                      61
  400.         notUsed62:                      62
  401.         notUsed63:                      63
  402.         notUsed64:                      64
  403.         notUsed65:                      65
  404.         notUsed66:                      66
  405.         notUsed67:                      67
  406.         notUsed68:                      68
  407.         notUsed69:                      69
  408.         notUsed70:                      70
  409.         notUsed71:                      71
  410.         notUsed72:                      72
  411.         notUsed73:                      73
  412.         notUsed74:                      74
  413.         notUsed75:                      75
  414.    *)
  415.   (*
  416.         notUsed76:                      76
  417.         notUsed77:                      77
  418.         notUsed78:                      78
  419.         notUsed79:                      79
  420.         conflict:                       80
  421.         lockErr:                        81
  422.         lostPosition:                   82
  423.         readOutsideTransaction:         83
  424.         recordInUse:                    84
  425.         fileInUse:                      85
  426.         fileFull:                       86
  427.         handleFull:                     87
  428.         modeErr:                        88
  429.         nameErr:                        89
  430.         deviceFull:                     90
  431.         serverErr:                      91
  432.         transactionFull:                92
  433.         incompatibleLockType:           93
  434.    *)
  435.   (*
  436.         notUsed94:                      94
  437.         notUsed95:                      95
  438.         notUsed96:                      96
  439.         dataBufTooSmall:                97
  440.         notUsed98:                      98
  441.         demoErr);                       99
  442.    *)
  443.   (*---------------------------------------------------------------*)
  444.   VAR
  445.     WrBtrvStatus   : PROCEDURE(eBtrvStatus);
  446.     WrInterfStatus : PROCEDURE(CARDINAL);
  447.     WrOp           : PROCEDURE(CARDINAL);
  448.   (*
  449.      Prozedurvariable für Debugging-Zwecke, siehe Dokumentation:
  450.    *)
  451.   (*---------------------------------------------------------------*)
  452.   PROCEDURE AbortTransaction() : eBtrvStatus;
  453.   (*
  454.      Btrieve-Handbuch: Seite 9-4.
  455.  
  456.      Rückgabe:
  457.        'eBtrvStatus'
  458.    *)
  459.   (*---------------------------------------------------------------*)
  460.   PROCEDURE BeginTransaction(lockMode : eLockMode) : eBtrvStatus;
  461.   (*
  462.      Btrieve-Handbuch: Seite 9-7 (und Dokumentation).
  463.  
  464.      Eingabe:
  465.        'lockMode'
  466.      Rückgabe:
  467.        'eBtrvStatus'
  468.    *)
  469.   (*---------------------------------------------------------------*)
  470.   PROCEDURE ClearOwner(file : tBtrvFile) : eBtrvStatus;
  471.   (*
  472.      Btrieve-Handbuch: Seite 9-9.
  473.  
  474.      Eingabe:
  475.        'file'
  476.      Rückgabe:
  477.        'eBtrvStatus'
  478.    *)
  479.   (*---------------------------------------------------------------*)
  480.   (*[-TAY
  481.   PROCEDURE ClearVar(VAR var : ARRAY OF BYTE);
  482.   ]*)
  483.   (*[+TAY*)
  484.   PROCEDURE ClearVar(LVAR var : ARRAY OF BYTE);
  485.   (*]*)
  486.   (*
  487.      Zweck:
  488.         Alle Bytes der Variablen 'var' werden auf Null gesetzt.
  489.         (der Record-Manager wird nicht aufgerufen)
  490.  
  491.      Ausgabe:
  492.         'var' 
  493.    *)
  494.   (*---------------------------------------------------------------*)
  495.   (*[-TAY
  496.   PROCEDURE CloseFile(VAR file : tBtrvFile) : eBtrvStatus;
  497.   ]*)
  498.   (*[+TAY*)
  499.   PROCEDURE CloseFile(LVAR file : tBtrvFile) : eBtrvStatus;
  500.   (*]*)
  501.   (*
  502.      siehe 'Close', Btrieve-Handbuch: Seite 9-11.
  503.  
  504.      Eingabe:
  505.        'file'
  506.      Rückgabe:
  507.        'eBtrvStatus'
  508.    *)
  509.   (*---------------------------------------------------------------*)
  510.   PROCEDURE CreateFile(filename     : aDosPath;
  511.                        fileSpecs    : rFileSpecs;
  512.                        keySpecs     : ARRAY OF rKeySpec;
  513.                        alternateSeq : rAlternateSeq    ) :
  514.                          eBtrvStatus;
  515.   (*
  516.      siehe 'Create', Btrieve-Handbuch: Seite 9-13; (Kap. 4.10:) 2-8
  517.      und Dokumentation.
  518.  
  519.      Eingabe:
  520.        'filename' : siehe Btrieve Handbuch Seite 9-14,
  521.                     (+ Kap. 4.10:) 2-7:
  522.        'fileSpecs'
  523.        'keySpecs'
  524.        'alternateSeq'
  525.      Rückgabe:
  526.        'eBtrvStatus'
  527.    *)
  528.   (*---------------------------------------------------------------*)
  529.   PROCEDURE CreateSupplementalIndex(file     : tBtrvFile;
  530.                                     keySpecs : rKeySpec ) :
  531.                                       eBtrvStatus;
  532.   (*
  533.      Btrieve-Handbuch: (Kap. 4.10:) Seite 2-17.
  534.  
  535.      Eingabe:
  536.        'file'
  537.        'keySpecs'
  538.      Rückgabe:
  539.        'eBtrvStatus'
  540.    *)
  541.   (*---------------------------------------------------------------*)
  542.   PROCEDURE CurLockMode(    file     : tBtrvFile;
  543.                         (*[-TAY 
  544.                         VAR lockMode : eLockMode) : eBtrvStatus;
  545.                         ]*)
  546.                         (*[+TAY*) 
  547.                         LVAR lockMode : eLockMode) : eBtrvStatus;
  548.                         (*]*)
  549.   (*
  550.      Zweck:
  551.         Der Variablen 'lockMode' wird der Lock-Mode der 
  552.         geöffneten Datei 'file' zugewiesen.
  553.         (der Record-Manager wird nicht aufgerufen)
  554.  
  555.      Eingabe:
  556.        'file'
  557.        'eLockMode'
  558.      Rückgabe:
  559.        'eBtrvStatus'
  560.    *)
  561.   (*---------------------------------------------------------------*)
  562.   PROCEDURE DataLen() : CARDINAL;
  563.   (* Zweck:
  564.        gibt den Wert der Daten-Puffer-Länge nach der letzten
  565.        Btrieve-Operation zurück.
  566.        (der Record-Manager wird nicht aufgerufen)
  567.        
  568.      Rückgabe:
  569.        gibt den Wert der Daten-Puffer-Länge nach der letzten
  570.        Btrieve-Operation zurück.
  571.    *)
  572.   (*---------------------------------------------------------------*)
  573.   PROCEDURE DeleteRec(file   : tBtrvFile;
  574.                       keyNum : bKeyNum  ) : eBtrvStatus;
  575.   (*
  576.       siehe 'Delete', Btrieve-Handbuch: Seite 9-18.
  577.  
  578.       Eingabe:
  579.         'file'
  580.         'keyNum'
  581.       Rückgabe:
  582.         'eBtrvStatus'
  583.    *)
  584.   (*---------------------------------------------------------------*)
  585.   PROCEDURE DropSupplementalIndex(file   : tBtrvFile;
  586.                                   keyNum : bKeyNum  ) :
  587.                                     eBtrvStatus;
  588.   (*
  589.      Btrieve-Handbuch: (Kap. 4.10:) Seite 2-19.
  590.  
  591.      Eingabe:
  592.        'file'
  593.        'keyNum'
  594.      Rückgabe:
  595.        'eBtrvStatus'
  596.    *)
  597.   (*---------------------------------------------------------------*)
  598.   PROCEDURE EndTransaction() : eBtrvStatus;
  599.   (*
  600.      Btrieve-Handbuch: Seite 9-21.
  601.  
  602.      Rückgabe:
  603.        'eBtrvStatus'
  604.    *)
  605.   (*---------------------------------------------------------------*)
  606.   PROCEDURE ExtendFile(file              : tBtrvFile;
  607.                        extensionFilename : aDosPath;
  608.                        extendStoreMode   : eExtendStoreMode) :
  609.                          eBtrvStatus;
  610.   (*
  611.      siehe 'Extend', Btrieve-Handbuch Seite 9-24.
  612.  
  613.      Eingabe:
  614.        'file'
  615.        'extensionFilename'
  616.        'extendStoreMode'   : normalMode: Daten erst dann in
  617.                                          Extension-File schreiben,
  618.                                          wenn Primär-File voll
  619.                              immediate:  Daten ab sofort in
  620.                                          Extension-File schreiben,
  621.                                          auch dann wenn Primär-File
  622.                                          noch nicht voll
  623.      Rückgabe:
  624.        'eBtrvStatus'
  625.    *)
  626.   (*---------------------------------------------------------------*)
  627.   PROCEDURE Size(field : ARRAY OF BYTE) : CARDINAL;
  628.   (*
  629.      Zweck:
  630.         Rückgabe der Länge der Variablen oder des Record-Feldes
  631.         'field' in Byte.
  632.         (der Record-Manager wird nicht aufgerufen)
  633.  
  634.      Eingabe:
  635.        'field' : RECORD-Feld eines Schlüssels (oder beliebige
  636.                  Variable)
  637.      Rückgabe:
  638.        Länge von 'field'. Nützliche Anwendung ist die Bestimmung
  639.        der Schlüssel-Spezifikationen für 'CreateFile'.
  640.        Anwendungsbeispiel:
  641.          KeySpec.Len := Size(recordname.feldname)
  642.    *)
  643.   (*---------------------------------------------------------------*)
  644.   (*[-TAY
  645.   PROCEDURE FieldPos(VAR field,
  646.                          record : ARRAY OF BYTE) : CARDINAL;
  647.   ]*)
  648.   (*[+TAY*)
  649.   PROCEDURE FieldPos(LVAR field,
  650.                           record : ARRAY OF BYTE) : CARDINAL;
  651.   (*]*)
  652.   (*
  653.      Zweck:
  654.        Ermittelung der Position des Record-Feldes 'field'
  655.        innerhalb des Records 'record'.
  656.         (der Record-Manager wird nicht aufgerufen)
  657.  
  658.      Eingabe:
  659.        'field'  : RECORD-Feld eines Schlüssels (oder beliebige
  660.                   Variable).
  661.        'record' : Name eines RECORDs der 'field' als Feld enthält
  662.     Rückgabe:
  663.        Position von 'field' innerhalb 'record'.
  664.        Die Position des ersten Feldes eines RECORDs ist 1, des
  665.        nächsten 2 etc.
  666.        Ist 'field' nicht in 'record'enthalten, wird 0 zurückge-
  667.        geben.
  668.        Nützliche Anwendung ist die Bestimmung der Schlüssel-Spezi-
  669.        fikationen für 'CreateFile'.
  670.        Anwendungsbeispiel:
  671.          KeySpec.Pos := FieldPos(recordname.feldname, recordname)
  672.  
  673.      ACHTUNG:
  674.         Nach Ausführung von FieldPos sind beide Variableninhalte
  675.         gelöscht!
  676.    *)
  677.   (*---------------------------------------------------------------*)
  678.   (*[-TAY
  679.   PROCEDURE FillWithSpaces(VAR var : ARRAY OF BYTE);
  680.   ]*)
  681.   (*[+TAY*)
  682.   PROCEDURE FillWithSpaces(LVAR var : ARRAY OF BYTE);
  683.   (*]*)
  684.   (*
  685.      Zweck:
  686.        (Vor-)Besetzen der Variablen 'var' mit Spaces, nützlich
  687.         z.B. bei Verwendung von Datensätzen variabler Länge mit
  688.         der Option 'blank compression'.
  689.         (der Record-Manager wird nicht aufgerufen)
  690.  
  691.      Ausgabe:
  692.        'var' : alle Bytes von 'var' werden auf " " (SPACE) gesetzt
  693.    *)
  694.   (*---------------------------------------------------------------*)
  695.   (*[-TAY
  696.   PROCEDURE GetDirectory(    drive  : CHAR;
  697.                          VAR curDir : aDosPath) : eBtrvStatus;
  698.   ]*)
  699.   (*[+TAY*)
  700.   PROCEDURE GetDirectory(     drive  : CHAR;
  701.                          LVAR curDir : aDosPath) : eBtrvStatus;
  702.   (*]*)
  703.   (*
  704.      Btrieve-Handbuch: Seite 9-29.
  705.  
  706.      Eingabe:
  707.        'drive'   : erlaubt sind die Zeichen '@'(für current),
  708.                    'A','B','C','D', etc.
  709.      Ausgabe:
  710.        'curDir'
  711.      Rückgabe:
  712.        'eBtrvStatus'
  713.    *)
  714.   (*---------------------------------------------------------------*)
  715.   PROCEDURE GetRecDirect(    file    : tBtrvFile;
  716.                              pos     : LONGINT;
  717.                              keyNum  : bKeyNum;
  718.                              dataLen : CARDINAL;
  719.                          (*[-TAY
  720.                          VAR keyBuf  : ARRAY OF BYTE;
  721.                          VAR dataBuf : ARRAY OF BYTE) :
  722.                          ]*)
  723.                          (*[+TAY*)
  724.                          LVAR keyBuf  : ARRAY OF BYTE;
  725.                          LVAR dataBuf : ARRAY OF BYTE) :
  726.                          (*]*)
  727.                            eBtrvStatus;
  728.   (*
  729.      siehe 'Get Direct', Btrieve-Handbuch: Seite 9-26.
  730.  
  731.      Eingabe:
  732.        'file'
  733.        'pos'     : (siehe 'GetPos')
  734.        'keyNum'
  735.        'dataLen' : bei  f e s t e r  Recordlänge auf 0 setzen!
  736.      Ausgabe:
  737.        'keyBuf'
  738.        'dataBuf'
  739.      Rückgabe:
  740.        'eBtrvStatus'
  741.    *)
  742.   (*---------------------------------------------------------------*)
  743.   PROCEDURE GetRec(    file      : tBtrvFile;
  744.                        operation : eGetOp;
  745.                        keyNum    : bKeyNum;
  746.                        dataLen   : CARDINAL;
  747.                    (*[-TAY
  748.                    VAR keyBuf    : ARRAY OF BYTE;
  749.                    VAR dataBuf   : ARRAY OF BYTE) : eBtrvStatus;
  750.                    ]*)
  751.                    (*[+TAY*)
  752.                    LVAR keyBuf   : ARRAY OF BYTE;
  753.                    LVAR dataBuf  : ARRAY OF BYTE) : eBtrvStatus;
  754.                    (*]*)
  755.   (* 
  756.      siehe 'Get Equal' bis 'Get Previous',
  757.      Btrieve-Handbuch: ab Seite 9-31.
  758.  
  759.      Eingabe:
  760.        'file'
  761.        'operation' : equal,next,previous,greater,greaterOrEqual,
  762.                      lessThan,lessThanOrEqual,lowest,highest
  763.        'keyNum'
  764.        'dataLen'   : bei  f e s t e r  Recordlänge auf 0 setzen!
  765.      EinAus:
  766.        'keyBuf'    : bei 'equal':            nur Eingabe;
  767.                      bei 'highest','lowest': nur Ausgabe
  768.      Ausgabe:
  769.        'dataBuf'
  770.      Rückgabe:
  771.        'eBtrvStatus'
  772.    *)
  773.   (*---------------------------------------------------------------*)
  774.   PROCEDURE GetKey(    file      : tBtrvFile;
  775.                        operation : eGetOp;
  776.                        keyNum    : bKeyNum;
  777.                    (*[-TAY
  778.                    VAR keyBuf    : ARRAY OF BYTE) : eBtrvStatus;
  779.                    ]*)
  780.                    (*[+TAY*)
  781.                    LVAR keyBuf   : ARRAY OF BYTE) : eBtrvStatus;
  782.                    (*]*)
  783.   (*
  784.      Btrieve-Handbuch: Seite 9-42.
  785.  
  786.      Eingabe:
  787.        'file'
  788.        'operation' : equal,next,previous,greater,greaterOrEqual,
  789.                      lessThan,lessThanOrEqual,lowest,highest
  790.        'keyNum'
  791.      EinAus:
  792.        'keyBuf'    : bei 'equal'            : Eingabe;
  793.                      bei 'highest','lowest' : Ausgabe
  794.      Rückgabe:
  795.        'eBtrvStatus'
  796.    *)
  797.   (*---------------------------------------------------------------*)
  798.   (*[-TAY
  799.   PROCEDURE GetPos(    file : tBtrvFile;
  800.                    VAR pos  : LONGINT  ) : eBtrvStatus;
  801.   ]*)
  802.   (*[+TAY*)
  803.   PROCEDURE GetPos(     file : tBtrvFile;
  804.                    LVAR pos  : LONGINT  ) : eBtrvStatus;
  805.   (*]*)
  806.   (*
  807.      siehe 'Get Position', Btrieve-Handbuch: Seite 9-54.
  808.  
  809.      Eingabe:
  810.        'file'
  811.      Ausgabe:
  812.        'pos'  : (Verwendung: siehe 'GetDirect')
  813.      Rückgabe:
  814.        'eBtrvStatus'
  815.    *)
  816.   (*---------------------------------------------------------------*)
  817.   PROCEDURE InsertRec(    file    : tBtrvFile;
  818.                           keyNum  : bKeyNum;
  819.                           dataBuf : ARRAY OF BYTE;
  820.                           dataLen : CARDINAL;
  821.                       (*[-TAY
  822.                       VAR keyBuf  : ARRAY OF BYTE) : eBtrvStatus;
  823.                       ]*)
  824.                       (*[+TAY*)
  825.                       LVAR keyBuf : ARRAY OF BYTE) : eBtrvStatus;
  826.                       (*]*)
  827.   (*
  828.      siehe 'Insert', Btrieve-Handbuch: Seite 9-58.
  829.  
  830.      Eingabe:
  831.        'file'
  832.        'keyNum'
  833.        'dataBuf'
  834.        'dataLen' :  bei  f e s t e r  Recordlänge auf 0 setzen!
  835.      Ausgabe:
  836.        'keyBuf'
  837.      Rückgabe:
  838.        'eBtrvStatus'
  839.    *)
  840.   (*---------------------------------------------------------------*)
  841.   PROCEDURE OpenFile(    mode      : eOpenMode;
  842.                          ownerName : aOwnerName;
  843.                          filename  : aDosPath;
  844.                      (*[-TAY
  845.                      VAR file      : tBtrvFile ) : eBtrvStatus;
  846.                      ]*)
  847.                      (*[+TAY*)
  848.                      LVAR file     : tBtrvFile ) : eBtrvStatus;
  849.                      (*]*)
  850.   (*
  851.      siehe 'Open', Btrieve-Handbuch: Seite 9-63; (Kap. 4.10:) 2-22.
  852.  
  853.      Eingabe:
  854.        'mode'
  855.        'ownerName' : (falls für das zu öffnende File benötigt)
  856.        'filename'
  857.      Ausgabe:
  858.        'file'
  859.    *)
  860.   (*---------------------------------------------------------------*)
  861.   PROCEDURE Reset(onlyForOwnStation : BOOLEAN;
  862.                   whichStation      : ARRAY OF BYTE) : eBtrvStatus;
  863.   (*
  864.      Btrieve-Handbuch: Seite 9-67.
  865.  
  866.      Eingabe:
  867.        'onlyForOwnStation' : TRUE/FALSE, wenn die vom eigenen / von
  868.                              einem fremden Arbeitsplatz belegten
  869.                              Resourcen freigegeben werden sollen.
  870.        'whichStation'      : nur dann relevant, wenn
  871.                                onlyForOwnStation = FALSE
  872.                              (s. Handb. S. 9-68)
  873.      Rückgabe:
  874.        'eBtrvStatus'
  875.    *)
  876.   (*---------------------------------------------------------------*)
  877.   PROCEDURE SetDirectory(dirPath : aDosPath) : eBtrvStatus;
  878.   (*
  879.      Btrieve-Handbuch: Seite 9-69.
  880.  
  881.      Eingabe:
  882.        'dirPath'
  883.      Rückgabe:
  884.        'eBtrvStatus'
  885.    *)
  886.   (*---------------------------------------------------------------*)
  887.   PROCEDURE SetLockMode(file     : tBtrvFile;
  888.                         lockMode : eLockMode) : eBtrvStatus;
  889.   (*
  890.      Zweck:
  891.         Setzt den Lock-Mode für 'Begin Transaction' und die
  892.         'Get...'-Operationen für die 
  893.         geöffnete Datei 'file' (siehe Dokumentation).
  894.         (der Record-Manager wird nicht aufgerufen)
  895.  
  896.      Eingabe:
  897.        'file'
  898.        'lockMode'
  899.      Rückgabe:
  900.        'eBtrvStatus'
  901.    *)
  902.   (*---------------------------------------------------------------*)
  903.   PROCEDURE SetOwner(file           : tBtrvFile;
  904.                      ownerName      : aOwnerName;
  905.                      accessRestrict : sAccessRestrict) :
  906.                        eBtrvStatus;
  907.   (* 
  908.      Btrieve-Handbuch: Seite 9-71.
  909.  
  910.      Eingabe:
  911.        'file'
  912.        'ownerName'
  913.        'accessRestrict'
  914.      Rückgabe:
  915.        'eBtrvStatus'
  916.    *)
  917.   (*---------------------------------------------------------------*)
  918.   (*[-TAY
  919.   PROCEDURE StatusOfFile(    file              : tBtrvFile;
  920.                          VAR fileSpecs         : rFileSpecs;
  921.                          VAR keySpecs          : ARRAY OF rKeySpec;
  922.                          VAR alternateSeq      : rAlternateSeq;
  923.                          VAR extensionFilename : aDosPath) :
  924.                            eBtrvStatus;
  925.   ]*)
  926.   (*[+TAY*)
  927.   PROCEDURE StatusOfFile(     file              : tBtrvFile;
  928.                          LVAR fileSpecs         : rFileSpecs;
  929.                          LVAR keySpecs          : ARRAY OF rKeySpec;
  930.                          LVAR alternateSeq      : rAlternateSeq;
  931.                          LVAR extensionFilename : aDosPath) :
  932.                            eBtrvStatus;
  933.   (*]*)
  934.   (*
  935.      siehe 'Stat', Btrieve-Handbuch: Seite 9-74.
  936.  
  937.      Eingabe:
  938.        'file'
  939.        'fileSpecs'
  940.      Ausgabe:
  941.        'keySpecs'
  942.        'alternateSeq'
  943.        'extensionFilename' : min 64 Zeichen lange Variable nötig.
  944.      Rückgabe:
  945.        'eBtrvStatus'
  946.    *)
  947.   (*---------------------------------------------------------------*)
  948.   PROCEDURE StepRecDirect(    file    : tBtrvFile;
  949.                               dataLen : CARDINAL;
  950.                           (*[-TAY
  951.                           VAR dataBuf : ARRAY OF BYTE) :
  952.                           ]*)
  953.                           (*[+TAY*)
  954.                           LVAR dataBuf : ARRAY OF BYTE) :
  955.                           (*]*)
  956.                             eBtrvStatus;
  957.   (*
  958.      siehe 'Step Direct', Btrieve-Handbuch: Seite 9-78.
  959.  
  960.      Eingabe:
  961.        'file'
  962.        'dataLen' : bei  f e s t e r  Recordlänge auf 0 setzen!
  963.      Ausgabe:
  964.        'dataBuf'
  965.      Rückgabe:
  966.        'eBtrvStatus'
  967.    *)
  968.   (*---------------------------------------------------------------*)
  969.   PROCEDURE  Stop(): eBtrvStatus;
  970.   (*
  971.      Btrieve-Handbuch: Seite 9-81.
  972.  
  973.      Rückgabe:
  974.        'eBtrvStatus'
  975.    *)
  976.   (*---------------------------------------------------------------*)
  977.   PROCEDURE UnlockRec(file       : tBtrvFile;
  978.                       unlockMode : eUnlockMode;
  979.                       pos        : LONGINT    ) : eBtrvStatus;
  980.   (* 
  981.      siehe 'Unlock', Btrieve-Handbuch: Seite 9-83;
  982.      (Kap. 4.10:) 2-24.
  983.  
  984.      Eingabe:
  985.        'file'
  986.        'unlockMode'
  987.        'pos' - s. Btrieve-Handbuch Seite 2-25
  988.      Rückgabe:
  989.        'eBtrvStatus'
  990.    *)
  991.   (*---------------------------------------------------------------*)
  992.   PROCEDURE UpdateRec(    file    : tBtrvFile;
  993.                           keyNum  : bKeyNum;
  994.                           dataBuf : ARRAY OF BYTE;
  995.                           dataLen : CARDINAL;
  996.                       (*[-TAY
  997.                       VAR keyBuf  : ARRAY OF BYTE) : eBtrvStatus;
  998.                       ]*)
  999.                       (*[+TAY*)
  1000.                       LVAR keyBuf  : ARRAY OF BYTE) : eBtrvStatus;
  1001.                       (*]*)
  1002.   (*
  1003.      siehe 'Update', Btrieve-Handbuch: Seite 9-85.
  1004.  
  1005.      Eingabe:
  1006.        'file'
  1007.        'keyNum'
  1008.        'dataBuf'
  1009.        'dataLen' : bei  f e s t e r  Recordlänge auf 0 setzen!
  1010.      Ausgabe:
  1011.        'keyBuf'
  1012.      Rückgabe:
  1013.        'eBtrvStatus'
  1014.    *)
  1015.   (*---------------------------------------------------------------*)
  1016.   (*[-TAY
  1017.   PROCEDURE Version(VAR version : rVersion) : eBtrvStatus;
  1018.   ]*)
  1019.   (*[+TAY*)
  1020.   PROCEDURE Version(LVAR version : rVersion) : eBtrvStatus;
  1021.   (*]*)
  1022.   (*
  1023.      Btrieve-Handbuch: Seite 9-88.
  1024.  
  1025.      Ausgabe:
  1026.        'version'
  1027.      Rückgabe:
  1028.        'eBtrvStatus'
  1029.    *)
  1030.   (*===============================================================*)
  1031.   (*
  1032.      Es folgen unterstützende Routinen, die keinen Aufruf des
  1033.      Btrieve-Recordmanagers zur Folge haben.
  1034.    *)
  1035.   PROCEDURE NumKeySpecs(    fileSpecs : rFileSpecs;
  1036.                             keySpecs  : ARRAY OF rKeySpec;
  1037.                         (*[-TAY
  1038.                         VAR num       : CARDINAL         ) :
  1039.                         ]*)
  1040.                         (*[+TAY*)
  1041.                         LVAR num       : CARDINAL         ) :
  1042.                         (*]*)
  1043.                           eBtrvStatus;
  1044.   (*
  1045.      Zweck:
  1046.        Errechnet aus den Spezifikationen 'fileSpecs' und  
  1047.        'keySpecs' die Anzahl 'num' der belegten Elemente (vom
  1048.        Typ 'rKeySpec') im Array 'keySpecs'. Dies ist die
  1049.        Gesamt-Anzahl der in 'keySpecs' spezifizierten
  1050.        Schlüsselsegmente.  
  1051.  
  1052.      Eingabe:
  1053.        'fileSpecs'
  1054.        'KeySpecs'
  1055.      Ausgabe:
  1056.        'num'
  1057.      Rückgabe:
  1058.        'eBtrvStatus'
  1059.    *)
  1060.   (*---------------------------------------------------------------*)
  1061.   PROCEDURE AnyAlternateSeq(    fileSpecs : rFileSpecs;
  1062.                                 keySpecs  : ARRAY OF rKeySpec;
  1063.                             (*[-TAY
  1064.                             VAR flag      : BOOLEAN          ) :
  1065.                             ]*)
  1066.                             (*[+TAY*)
  1067.                             LVAR flag      : BOOLEAN          ) :
  1068.                             (*]*)
  1069.                               eBtrvStatus;
  1070.   (*
  1071.      Zweck:
  1072.         Stellt aus den Informationen in 'fileSpecs'/'keySpecs' 
  1073.         fest, ob eine 'Alternate Collating Sequence' vorliegt
  1074.         (dann 'flag = TRUE')
  1075.  
  1076.      Eingabe:
  1077.        'fileSpecs'
  1078.        'KeySpecs'
  1079.      Ausgabe:
  1080.        'flag'
  1081.      Rückgabe:
  1082.        'eBtrvStatus'
  1083.    *)
  1084.   (*---------------------------------------------------------------*)
  1085.   PROCEDURE SetMaxPageSize(pageSize : ePageSize) : eBtrvStatus;
  1086.   (* 
  1087.      Zweck:
  1088.        Setzt die maximal erlaubte Seiten-Größe. Diese sollte
  1089.        sinvollerweise zur '/P:xxxx'-Option beim Installieren des
  1090.        Record-Managers 'BTRIEVE' passen. Die gesetzte maximale
  1091.        Seitengröße wird beim automatischen Berechnen der günstigsten
  1092.        Seitengröße in 'CreateFile' nicht überschritten.
  1093.  
  1094.      Eingabe:
  1095.        'pageSize'    : die maximal gewünschte oder zulässige
  1096.                        Page-Size; erlaubte Werte:
  1097.                        512, 1024, 1536, 2048, 2560, 3072, 3584,
  1098.                        4096.
  1099.      Rückgabe:
  1100.        'eBtrvStatus' : Status-24-PageSize, wenn Wert nicht erlaubt.
  1101.      Hinweis:
  1102.        Im Initialisierungsteil des Moduls wird der Wert
  1103.        'cDefaultPageSize' gesetzt.
  1104.    *)
  1105.   (*---------------------------------------------------------------*)
  1106. END bInterface.
  1107.