| 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$