Welcome to jBASE's new documentation site! Many answers to your questions can be found by searching the Knowledgebase or viewing the jBASE Documentation. We also have a Google Group for peer discussion about jBASE. If you are unable to find the information you are looking for, jBASE Support will be glad to assist in resolving your technical problems. Enjoy and please provide comments and feedback .

How can we help you?

READNEXT KEY

Description 

The regular jBC READNEXT statement is extended in two ways.

  • Firstly it can accept an index variable create with an OPENINDEX statement.
  • Secondly, you can use the KEY modifier.

The function may be called as: 

READNEXT KEY index.key{,record.key{,vmcount}} {FROM select-def} THEN/ELSE

 

Note: 

In this second format the READNEXT KEY statement will return the actual index key. The select used use MUST have been created with the OPENINDEX statement. Optionally, the associated record key can be returned and the multi-value number associated with it.

 

EXAMPLE

The following code shows a file and index being created, a simple index just on attribute 1. The index is defined as multi-valued. Then 3 records are written to the file. The file is then interrogated with the OPENINDEX and READNEXT KEY statements. As the index is defined as an ascending left justified sort on attribute 1, the values returned with the READNEXT will be in sorted order of attribute 1.

* Create the file and index definition.
filename = "example"
indexname = "index.def"
EXECUTE "create-file ":filename:" 1 3"
EXECUTE "create-index ":filename:" ":indexname:" by M1"
OPEN filename TO filevar ELSE
    STOP 201,filename
END
* Open the index ready for use.
OPENINDEX filename,indexname TO index.var ELSE
    STOP 201,indexname:" IN ":filename
END
* Write some dummy records out.
OPEN filename TO filevar ELSE
    STOP 201,filename
END
WRITE "GREG" ON filevar,"customer-1"
WRITE "JIM":@VM:"DAVE" ON filevar,"customer-2"
WRITE "JIM":@VM:"GREG":@VM:"DAVE" ON filevar,"customer-3"
* Use SELECT to get ready to read in the records.
SELECT index.var
* Read in each index record at a time.
LOOP WHILE READNEXT KEY index.key,record.key,mv.key DO
    CRT index.key,record.key,mv.key
REPEAT

The output of this program will be as follows:

DAVE customer-2 2
DAVE customer-3 3
GREG customer-1 1
GREG customer-3 2
JIM customer-2 1
JIM customer-3 1

The index is built on sorted attribute 1 and so the index keys (the names of the customers) are sorted in alphabetical order. They are then sub-sorted by record key and finally by the multi-value number that they existed in

Was this article helpful?