IOL( ) |
Get IOList Specification |
1. |
In Composite String: |
IOL(composite$ [,REC=name$] [,ERR=stmtref]) |
2. |
In Open File: |
IOL(chan [,REC=name$] [,ERR=stmtref]) |
3. |
Return IOList for a Given File/Pathname: |
IOL(FILE "pathname" [:* |:KEY | :^] [,REC=name$] [,ERR=stmtref]) |
4. |
Return IOList for a Given Table: |
IOL(TABLE "tablename" [:* |:KEY | :^] [,REC=name$] [,ERR=stmtref]) |
composite$ |
Composite string variable whose IOList is to be retrieved. String expression. |
chan |
Channel or logical file number whose default IOList is to be returned. |
stmtref |
Program line number or statement label to which to transfer control. |
name$ |
String variable. Optional record name/prefix for all of the variables in the IOList. (REC=VIS(string$) can also be used.) |
FILE |
Name of the unopened file from which to directly access the IOList. |
TABLE |
Name of the table from which to access the IOList. |
(The optional REC= clause was added in PxPlus 2019.)
(The ability to specify a FILE or TABLE was added in PxPlus 2019.)
Object value of an IOList or composite string variable.
The IOL( ) function returns the object code value of an IOList for either an open file or a composite string variable. If the specified file or string variable does not have an associated IOList, PxPlus returns Error #81: Invalid IOLIST specification.
Syntax |
Returns |
IOL(chan:*) |
Returns the IOList for the file's embedded data dictionary. |
IOL(chan:^) |
Returns the alternate IOList. |
IOL(chan:KEY) |
Returns the IOList for the file's external key, if any. |
In all of the Formats above, a REC= clause can be added to assign a record name as a prefix to all the variables in the list (similar to a prefix for a composite string variable); that is, the variable you identify in your string variable defines a prefix for the variable names in your IOList. See Examples below.
0100 dim CUST$:iol=0110
0110 iolist NAME$,ADR1$,ADR2$,SMAN$
0120 print lst(iol(CUST$))
->run
IOLIST NAME$,ADR1$,ADR2$,SMAN$
0100 open (1,iol=*)"CUSTDB" ! Open with internal IOL
0110 read data from "" to iol=iol(1) ! Clears the IOList
In line 0100 of the following example, the LOCAL directive is used, and the REC= in the IOL function prefixes all the variables:
list
0010 begin *
0020 IO:iolist f1$,f2$,f3$,f4$,f5$,f6$
0030 open (1,opt="+INFO",iol=IO,rec=aa$)"."
0040 let n=3; for n; read (1); next
0050 print "PRE: ",aa.f1$
0060 gosub SUB
0070 print "POST: ",aa.f1$
0080 stop
0090 !
0100 SUB: local iol=iol(1,rec=aa$)
0110 let aa.f1$="LOCAL";return
->run
PRE: 00sideways.jpg
POST: 00sideways.jpg
Below is another example of the REC= in the IOL function:
open (1,iol=*)"arcust"
print lst(iol(1))
iolist CUST_NO$,NAME$,ADDR1$,CITY$,SALESPERSON$,AMT_OWING,DATEMADE$
print lst(iol(1,rec=ERIC$))
iolist ERIC.CUST_NO$,ERIC.NAME$,ERIC.ADDR1$,ERIC.CITY$,ERIC.SALESPERSON$,ERIC.AMT_OWING,ERIC.DATEMADE$
In the next two examples, the FILE option is used to directly access the IOList from an unopened file (arcust):
print lst(iol(file "arcust"))
iolist CUST_NO$,NAME$,ADDR1$,CITY$,SALESPERSON$,AMT_OWING,DATEMADE$
print lst(iol(file "arcust",rec=x$))
iolist x.CUST_NO$,x.NAME$,x.ADDR1$,x.CITY$,x.SALESPERSON$,x.AMT_OWING,x.DATEMADE$