The following lists and describes the available OPSVSAM functions:
var = OPSVSAM('OPEN','ddname','dsname','I' or 'O','RLS' or 'RES'
One or both of these variables must be specified:
ddname
dsname
If only the ddname variable is specified, the file must be preallocated to that ddname. If only the dsname variable is specified, the file is dynamically allocated to a system-generated ddname. If both the ddname and dsname variables are specified, the dsname is allocated to the specified ddname.
Input ('I') is the default open mode. To update a file, the output mode ('O') must be specified.
RLS (Record Level Sharing) is a feature of z/OS that allows VSAM files to be shared across systems in a sysplex. Consult your systems programming group regarding the availability of this feature. To use RLS, the VSAM file must be SMS-managed and defined with the LOG(NONE) parameter.
RES specifies that a reserve should be issued for the data set to serialize access across systems. The major name for the reserve is the ddname used and the minor name is SVDB. Because a reserve can cause system performance problems, you should consult with your systems programming group before using this option.
The default is not to use RLS or RES.
var = OPSVSAM('CLOSE','ddname')
If the file was dynamically allocated by an OPEN function, it will also be dynamically deallocated.
var = OPSVSAM('CLOSET','ddname')
Note: An OPEN function is not required to continue file processing.
var = OPSVSAM('ENDREQ','ddname')
var = OPSVSAM('POINT','ddname','key',key length,'KGE' or 'KEQ')
var = OPSVSAM('READ','ddname','key',key length,'KGE' or 'KEQ')
var = OPSVSAM('READUP','ddname','key',key length,'KGE' or 'KEQ')
var = OPSVSAM('UPDATE','ddname','record')
var = OPSVSAM('DELETE','ddname')
var = OPSVSAM('INSERT','ddname','record','KEY',key length)
Example: OPSVSAM
This example illustrates performing VSAM file operations on a VSAM KSDS with a character key length of 10 that begins in position 1 of a maximum 100-byte record:
Signal On Syntax Name VSAM_ERROR /* Dynamically allocate and open the VSAM file */ vrc = Opsvsam('OPEN',,'TEST.VSAM.KSDS','O') If opsrc > 0 Then Signal VSAM_ERROR /* Insert a new record with key = OPSMVS */ newrec = Substr('OPSMVS',1,opskeyln) || 'TEST DATA RECORD' vrc = Opsvsam('INSERT',opsdd,newrec) If opsrc > 0 Then If opsrc = 8 & opsre = 8 Then Say 'Duplicate record:' newrec Else Signal VSAM_ERROR /* Retrieve and delete the record we just added */ vrc = Opsvsam('READUP',opsdd,Substr(newrec,1,opskeyln)) If opsrc = 0 Then vrc = Opsvsam('DELETE',opsdd) Else Signal VSAM_ERROR /* Clean up and exit */ Signal ALL_DONE /* VSAM error procedure */ VSAM_ERROR: Say 'OPSVSAM error: RC='opsrc 'REASON='opsre 'DD='opsdd Do While Queued() > 0 Pull xdqmsg Say xdqmsg End ALL_DONE: lrc = opsrc vrc = Opsvsam('CLOSE',opsdd) Exit lrc
| Copyright © 2012 CA. All rights reserved. | Tell Technical Publications how we can improve this information |