KEY( ) |
Return Key of Next Record |
KEY(chan[,fileopt])
chan |
Channel or logical file number of the file to reference. | ||||||||||||
fileopt |
Supported file options:
| ||||||||||||
stmtref |
Program line number or statement label to which to transfer control in case of an error/exception. |
Key of next record in file.
The KEY( ) function returns the key of either the next record in the file specified or, via the IND= or RNO= options, the key of the record at the index/record number specified. The result is based on the:
The KEY function allows the user to get the internal generated key value for a file when specifying a KEY= option in the function. This feature is supported for those files/tables that allow multi-segment alternate keys such as standard PVX keyed files, EFF files, databases, and memory tables.
Internally, when dealing with a multiple segment alternate key, the system generates a simple string consisting of the various field values used to reference the file. When accessing a file by a multi-segmented key, the programmer can specify each of the segment values to be provided in the KEY= clause of the I/O operation with each key segment separated by a colon. For example, read (1, key=A$:B$:C$) tells the system to use A$ as the value for the first field segment of the key, B$ for the second, and C$ for the third.
The KEY function allows you to specify a KEY= clause with the segments in order to return the generated key based on the segments you provided.
Example:
Suppose a multi-segment key has the following segments: the first is 10 characters long, the second is 5 characters long, and the third is 5 characters long. A key(fileno, key=A$:B$:C$) will return a string comprised of the individual key elements, each $00$ padded to the corresponding lengths of the multi-segment key. Therefore, A$ would be a length of 10, B$ would be a length of 5, etc.
The KNO= clause can be specified in order select the specific key you want generated.
A typical example might be to set the BEGIN or END values in a SELECT directive:
SELECT .... FROM <fileno> BEGIN KEY(<fileno>, KEY=S1$:S2$:S3$)
....
NEXT RECORD
A KEY function that specifies a KEY= clause does not affect the current status or position of the file.
(The KEY generation capability was added in PxPlus v8.00.)
0010 open (13)"CUSTNO"
0020 let K$=key(13,end=1000)
0030 read (13,key=K$)R$
0040 print "Key: ",K$," Data: ",R$
0050 goto 0020
1000 print "End-of-file"
1010 end