Marc's Place

E$ISMIO - In-/uitvoer operaties op een ISAM bestand




Aanroep
 
xcall e$ismio (actie, kanaal[, record[, sleutelwaarde[, sleutel]]])
 
Common velden vóór aanroep
e$_curw
Venster-identificatie van het actieve uitvoervenster.
Parameters te vullen bij aanroep
actie (d3)
Drie posities die elk de routine aansturen met betrekking tot de te ondernemen operatie op het ISAM bestand:
  • Positie 1 (meest rechtse) geeft de I/O operatie aan en kent de volgende waarden:
    1. READS
    2. READ
    3. READ + WRITE. Het record wordt in een separate buffer gelezen, waarna record er overheen wordt teruggeschreven.
    4. STORE
    5. READ + WRITE (zie 3.) en indien bij de READ het record niet bestaat, een STORE.
    6. READ + DELETE. Het record wordt in een separate buffer gelezen en verwijderd.
    7. WRITE. Het record moet al eerder door middel van 1. of 2. gelocked zijn.
    8. DELETE. Het record moet al eerder door middel van 1. of 2. gelocked zijn.
  • Positie 2 (de middelste) geeft aan of en hoe er een unlock plaats moet vinden en kent de volgende waarden:
    1. Unlock kanaal na elke I/U-operatie.
    2. Unlock kanaal na een fout 53 bij de operaties 2,3,5 en 6.
  • Positie 3 (de meest linkse) is om aan te geven hoeveel keer, bij een gelocked record, moet worden geprobeerd het record te lezen vóórdat de fout 40 aan het aanroepende programma wordt teruggegeven. De waarde wordt intern met 10 vermenigvuldigd, dus het minimale aantal keren is 10. NUL (0) geldt als 'oneindig blijven proberen'. Bij een lock waarbij vaak of oneindig geprobeerd moet worden het record te lezen, wordt onderin het scherm, in een apart, kaderloos venster, een lock-melding knipperend weergegeven, inclusief de bestandsspecificatie van het bestand waarop de lock betrekking heeft, zodat een gebruiker weet waarom het programma geen sjoege geeft. Een voorbeeld:

kanaal (d*)
Het kanaal waarop een ISAM bestand geopend moet zijn.
record (a*)
De buffer met gegevens die naar het bestand geschreven moet worden. Deze parameter kan weggelaten worden als actie = xx8.
De maximale buffergrootte voor record is 8192 bytes.
sleutelwaarde (a*)
De sleutelwaarde waarmee een record gezocht wordt of waarmee in het bestand gepositioneerd wordt. Deze parameter is niet van belang bij actie = xx1, xx4, xx7 of xx8.
De maximale buffergrootte voor sleutelwaarde is 512 bytes.
sleutel (d*)
De sleutel waarop met sleutelwaarde gelezen of gepositioneerd moet worden. Standaardwaarde is NUL (KEY 0). Deze parameter heeft alleen zin als actie = xx2, xx3, xx5 of xx6.
Parameters gevuld bij terugkeer
record (a*)
De buffer met gegevens die uit het bestand gelezen moest worden.
Common velden gevuld bij terugkeer
e$_err
Foutcode van de eventueel opgetreden fout:
000 = Alles is goed gegaan.
010 = Kanaal <= nul
031 = Record is groter dan 8192 bytes.
031 = Sleutelwaarde is groter dan 512 bytes
519 = Positie 1 van actie <> 8 en record is niet meegegeven.
151 = Positie 1 van actie <= 0 of >= 9
151 = Sleutel < 0
??? = DBL-foutcode
e$_lin
Het regelnummer waar de DBL-fout optrad.
Voorbeelden
Sequentieel het bestand door, startende op KEY 1, ergens in het midden. Unlock na een fout 53. Bij een lock ondeindig blijven proberen:
 
xcall e$ismio (22, chart, artikel, 'MIXER', 1)
while .not.e$_err begin
...
...
xcall e$ismio (21, chart, artikel)
end
 
Hier volgt een DELETE na een record gelezen te hebben met een lock via KEY 0:
 
xcall e$ismio (2, chart, artikel, 'MIXER')
if .not e$_err xcall e$ismio (8, chart)
 
Nu wordt een parameter-record overschreven, en, indien het nog niet bestond, toegevoegd:
 
xcall e$ismio (5, chpar, params)
© 1997- Marc Vos (and others)   -   Privacy Statement   -    Contact Me

On this website, Google Analytics is used to track visitor statistics. These are anonymised data about the number of visitors, which pages they visit on this site, from which regions they visit, which web browsers they use, etc.. You will also see non-personalised ads via Google AdSense. Cookies from Paddle or Paypal are placed when you click on a 'Buy now!' or 'Donate!' button, and possible cookies from Disqus when you use that system to comment on one or more blogposts.
Privacy Statement