Hi list,
I want to read a VSAM KSDS file backward from some key. Is it possible?
Thanks in advance.
I need to read a VSAM/KSDS file backwards. We do this all the time with Assembler I/O modules, but we can't find a READ PREVIOUS verb in the Cobol language that the compiler will accept.
Is is possible to read a VSAM/KSDS file backwards in Cobol?
The READ file-name PREVIOUS is NOT in the current version of COBOL unless you are using a 2002 compatible COBOL, like Microfocus NET EXPRESS 4.0 or later. Even IBM's newest Enterprise COBOL 3.4 does not do this yet. (I have the manual.)
It is supported in CICS via a browse with GET PREVIOUS.
If you don't have to read a lot of data, such as just 1 or 2 records prior to some other record you can write an almost there routine: (You really need to understand your data and key relationships)
READ file-name
Decrement some right most key value by some value
and then:
Start FILE-NAME key is record-key
read next file-name
(you need to keep track of the results and check for when you have the record you started with, etc.)
Kluggy at best.
Otherwise, if you need a lot of this, create an alternate key value in binary-inverted sequence and do a read next on the binary-inverted key value.
PauloCaze wrote:Is it possible?
You will probably want to get official permission to write assembler code that will ever be used for production. Many organizations no longer permit assembler code because they are not staffed to support assembler.Now I'm convinced that I must do an Assembler routine in order to archieve this issue.