MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

How to modify HI-USEDRBA through pgm

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming
View previous topic :: View next topic  
Author Message
issac1029
Intermediate


Joined: 10 Dec 2005
Posts: 159
Topics: 75

PostPosted: Thu Mar 09, 2006 12:47 am    Post subject: How to modify HI-USEDRBA through pgm Reply with quote

Hello everybody:

pgm can modify vsam's HI-USEDRBA through open/close ......I heard that there is a way to evaluate a value to HI-USEDRBA by pgm directly by assmbler,is it true?How to implement that?
example or relatives document are really appreciated,thanks
Back to top
View user's profile Send private message Send e-mail MSN Messenger
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12378
Topics: 75
Location: San Jose

PostPosted: Thu Mar 09, 2006 11:01 am    Post subject: Reply with quote

issac1029,


An assembler code from naspa or cbttape , not sure which one.

Code:

         TITLE 'PRMEVSAM - PRIME VSAM - STEVE WENTWORTH'
***********************************************************************
*                                                                     *
*                P R I M E   V S A M   C L U S T E R                  *
*                                                                     *
* THIS PROGRAM WRITES A KEYED RECORD TO A VSAM CLUSTER.               *
* THE KEY AND DATA ARE ALL X'00'.                                     *
*                                                                     *
* THIS PROGRAM THEN READS THIS RECORD AND THEN DELETES THE RECORD.    *
*                                                                     *
* COBOL PROGRAMS CAN NOW OPEN THIS VSAM CLUSTER FOR I/O.              *
* THERE IS NO LONGER A NEED FOR A SPECIAL 'INITIAL RECORD DELETE'     *
* STEP OR PROCESSING CODE TO SKIP THE FIRST RECORD OF THIS CLUSTER.   *
*                                                                     *
***********************************************************************
*
*
*
***********************************************************************
*                                                                     *
*                S A M P L E   E X E C U T I O N   J C L              *
*                                                                     *
*//         JOB                                                       *
*//* STEPNAME                TASK                                     *
*//* --------            -------------------------------------------- *
*//* IDC1                DEFINE BASE CLUSTER WITH INDEX AND DATA.     *
*//*                     DISPLAY CATALOG INFORMATION.                 *
*//*                     NOTE HI-USED RBA.                            *
*//* PRMEVSAM            WRITE RECORD WITH X'00' KEY AND DATA.        *
*//*                     DELETE THIS RECORD.                          *
*//* IDC2                DISPLAY CATALOG INFORMATION.                 *
*//*                     NOTE HI-USED RBA.                            *
*//*                                                                  *
*//IDC1   EXEC  PGM=IDCAMS                                            *
*//SYSPRINT DD SYSOUT=*                                               *
*//SYSIN    DD *                                                      *
* DELETE (VSAM.SAMPLE.C)                                              *
* DEFINE CLUSTER(NAME(VSAM.SAMPLE.C)           +                      *
*          VOLUME(VSAM00)                      +                      *
*          RECORDSIZE(80,80)                   +                      *
*          RECORDS(100,50)                     +                      *
*          INDEXED                             +                      *
*          KEYS(5,0)                           +                      *
*          SHAREOPTIONS(1,3)       )           +                      *
*        INDEX(NAME(VSAM.SAMPLE.I)             +                      *
*          CISZ(2048)              )           +                      *
*        DATA(NAME(VSAM.SAMPLE.D)              +                      *
*          CISZ(4096)              )                                  *
* LISTC LEVEL(VSAM.SAMPLE)                     +                      *
*       ALL                                                           *
*//PRMEVSAM EXEC PGM=PRMEVSAM                                         *
*//DS      DD DSN=VSAM.SAMPLE.C,DISP=SHR                              *
*//SYSUDUMP DD SYSOUT=*                                               *
*//IDC2   EXEC  PGM=IDCAMS                                            *
*//SYSPRINT DD SYSOUT=*                                               *
*//SYSIN    DD *                                                      *
* LISTC LEVEL(VSAM.SAMPLE)                     +                      *
*       ALL                                                           *
*                                                                     *
***********************************************************************
*
*
*
***********************************************************************
*                                                                     *
*                R E G I S T E R   U S A G E                          *
*                                                                     *
* R0:   ABEND MACRO                                                   *
* R1:   SYSTEM SERVICES MACROS AND IO MACROS                          *
* R4:   ADDRESS OF LOGICAL RECORD AREA                                *
* R5:   LENGTH OF LOGICAL RECORD                                      *
* R6:   SECOND OPERAND ADDRESS (X'00000000') FOR MVCL                 *
* R7:   PADDING BYTE AND LENGTH (X'00000000') FOR MVCL                *
* R12:  PROGRAM BASE ADDRESS REGISTER                                 *
* R13:  ADDRESS OF REGISTER SAVE AREA                                 *
* R14:  RETURN ADDRESS                                                *
* R15:  ENTRY POINT ADDRESS/RETURN CODE                               *
*                                                                     *
***********************************************************************
*
*
*
***********************************************************************
*                                                                     *
*              L O A D   M O D U L E   A T T R I B U T E S            *
*                                                                     *
* NOT REENTERABLE                                                     *
* ADDRESSING MODE = 24                                                *
* RESIDENCY MODE  = 24                                                *
*                                                                     *
***********************************************************************
*
*
*
***********************************************************************
*                                                                     *
*                C H A N G E   H I S T O R Y                          *
*                                                                     *
* 31-JUL-91/0900     VERSION 1 RELEASE 0                              *
*                                                                     *
***********************************************************************
         EJECT
         MACRO
         CPYRIGHT &VER=1,&REL=0
         USING &SYSECT,15
         B     CPYR&SYSNDX        BRANCH OVER IDENTIFIER AND COPYRIGHT
         DROP  15
         DC    CL8'&SYSECT'       CSECT NAME
         DC    C'VERSION &VER'    VERSION LEVEL
         DC    C'RELEASE &REL'    RELEASE LEVEL
         DC    C'&SYSDATE'        ASSEMBLY DATE
         DC    C'&SYSTIME'        ASSEMBLY TIME
         DC    C'STEVE WENTWORTH' AUTHOR NAME
         DC    C'COPYRIGHT 1991'  COPYRIGHT NOTICE
CPYR&SYSNDX CNOP 0,4
         MEND
         MACRO
         REGEQU
         LCLA  &RN
&RN      SETA  0
.GENEQU  ANOP
R&RN     EQU   &RN
&RN      SETA  &RN+1
         AIF   (&RN NE 16).GENEQU
         MEND
         MACRO
         BEGPGM
         STM   14,12,12(13)       SAVE CALLER'S REGISTER CONTENTS
         LR    12,15              PLACE BASE ADDRESS INTO REGISTER 12
         USING &SYSECT,12         ESTABLISH ADDRESSABILITY
         LA    2,RSVE&SYSNDX      R2 ==> THIS CSECT'S REG SAVE AREA
         ST    2,8(,13)           CALLER'S SAVE ==> THIS SAVE AREA
         ST    13,4(,2)           THIS SAVE ==> CALLER'S SAVE AREA
         LR    13,2               R13 ==> THIS CSECT'S REG SAVE AREA
         B     RSVE&SYSNDX+(4*18) BRANCH OVER REGISTER SAVE AREA
RSVE&SYSNDX DC  18F'0'            REGISTER SAVE AREA
         MEND
         MACRO
         ENDPGM
         L     13,4(,13)          R13 ==> CALLER'S REGISTER SAVE AREA
         LM    14,12,12(13)       RESTORE CALLER'S REGISTER CONTENTS
         XR    15,15              SET RETURN CODE TO ZERO
         BR    14                 RETURN TO CALLER
         MEND
         MACRO
&L       PATCH  &NBYTES=64,&PRINT=NOGEN
         PUSH  PRINT
         PRINT &PRINT
&L       DS    0F
         DC    &NBYTES.S(*)
         POP   PRINT
         MEND
         EJECT
PRMEVSAM CSECT
         REGEQU                   R0 EQU 0, ETC.
         CPYRIGHT                 IDENTIFIER AND COPYRIGHT
         EJECT
         BEGPGM                   BEGIN PROGRAM EXECUTION
*
* CREATE AND WRITE THE NULL RECORD
*
         OPEN  (DS)               CONNECT VSAM CLUSTER TO PROGRAM
         LTR   R15,R15            OK OPEN?
         BNZ   OPENERR            NO
         SHOWCB ACB=DS,           OBTAIN LRECL                         X
               AREA=RECLEN,                                            X
               LENGTH=4,                                               X
               FIELDS=(LRECL)
         LTR   R15,R15            OK SHOWCB?
         BNZ   SHOWERR            NO
GETSTOR  GETMAIN EU,              ACQUIRE STORAGE FOR LOGICAL RECORD   X
               LV=RECLEN,                                              X
               A=@AREA,                                                X
               RELATED=(FREESTOR,'GET STORAGE')
         LTR   R15,R15            OK GETMAIN?
         BNZ   GETMNERR           NO
         L     R4,@AREA           R4 ==> LOGICAL RECORD AREA
         L     R5,RECLEN          R5 CONTAINS LOGICAL RECORD LENGTH
         MODCB RPL=RPL,           MODIFY THE RPL CONTROL BLOCK         X
               AREA=(4),                                               X
               AREALEN=(5),                                            X
               RECLEN=(5)
         LTR   R15,R15            OK MODCB?
         BNZ   MODERR             NO
         XR    R6,R6              SET SECOND OPERAND ADDRESS FOR MVCL
         XR    R7,R7              SET PAD AND LENGTH TO X'00' FOR MVCL
         MVCL  R4,R6              PLACE ALL X'00' INTO LOGICAL RECORD
         PUT   RPL=RPL            WRITE A LOGICAL RECORD
         LTR   R15,R15            OK PUT?
         BNZ   PUTERR             NO
         CLOSE (DS)               DISCONNECT VSAM CLUSTER FROM PROGRAM
         LTR   R15,R15            OK CLOSE?
         BNZ   CLOSEERR           NO
*
* READ AND DELETE THE NULL RECORD
*
         MODCB ACB=DS,            MODIFY THE ACCESS CONTROL BLOCK      X
               MACRF=(KEY,SEQ,OUT)
         LTR   R15,R15            OK MODCB?
         BNZ   MODERR             NO
         MODCB RPL=RPL,           MODIFY THE REQUEST PARAMETER LIST    X
               OPTCD=(KEY,SEQ,UPD)
         LTR   R15,R15            OK MODCB?
         BNZ   MODERR             NO
         OPEN  (DS)               CONNECT VSAM CLUSTER TO PROGRAM
         LTR   R15,R15            OK OPEN?
         BNZ   OPENERR            NO
         GET   RPL=RPL            READ LOGICAL RECORD
         LTR   R15,R15            OK GET?
         BNZ   GETERR             NO
         ERASE RPL=RPL            DELETE LOGICAL RECORD
         LTR   R15,R15            OK ERASE?
         BNZ   ERASEERR           NO
         CLOSE (DS)               DISCONNECT VSAM CLUSTER FROM PROGRAM
         LTR   R15,R15            OK CLOSE?
         BNZ   CLOSEERR           NO
FREESTOR FREEMAIN EU,             RELEASE STORAGE                      X
               LV=RECLEN,                                              X
               A=@AREA,                                                X
               RELATED=(GETSTOR,'FREE STORAGE')
         LTR   R15,R15            OK FREEMAIN?
         BNZ   FREEMNER           NO
         ENDPGM                   END PROGRAM EXECUTION
         PATCH PRINT=GEN          PATCH AREA
         EJECT
DS       ACB   AM=VSAM,           ACCESS CONTROL BLOCK                 X
               DDNAME=DS,                                              X
               MACRF=(DIR,OUT)
RPL      RPL   AM=VSAM,           REQUEST PARAMETER LIST               X
               ACB=DS
@AREA    DC    F'0'               ADDRESS OF LOGICAL RECORD AREA
RECLEN   DC    F'0'               LENGTH OF LOGICAL RECORD
         EJECT
OPENERR  ABEND 101,DUMP           ERROR PROCESSING
SHOWERR  ABEND 102,DUMP
MODERR   ABEND 103,DUMP
PUTERR   ABEND 104,DUMP
GETERR   ABEND 105,DUMP
ERASEERR ABEND 106,DUMP
CLOSEERR ABEND 107,DUMP
GETMNERR ABEND 108,DUMP
FREEMNER ABEND 109,DUMP
         END



Hope this helps...

Cheers

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group