Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

Dynamically allocating a new PS file in Assembler

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> PL/I & Assembler
View previous topic :: :: View next topic  
Author Message
bharath_gct2002

New User


Joined: 08 Oct 2007
Posts: 27
Location: Dallas, TX

PostPosted: Tue Mar 11, 2008 7:26 pm    Post subject: Dynamically allocating a new PS file in Assembler
Reply with quote

I have a code in Assembler in which a file is being dynamically created. The code is running fine in production creating a new file. But I wanted to modify the code so that I should add a Retention period for the dynamically for the newly created file. I tried giving the RETPD for the file in JCL but that doesnt turn to work out as the file is getting creted dynamically.

The portion in the code where the file is allocated dynamically is:

Code:

*                                                                       00026100
*  DYANMICALLY ALLOCATE THE OUTPUT FILE                                 00026200
*                                                                       00026300
         L     R9,=F'12'                 ASSUME FAILURE                 00026400
         XC    RBXAREA,RBXAREA           CLEAR                          00026500
         LA    R3,RBXAREA                AREA FOR RBX                   00026600
         USING S99RBX,R3                                                00026700
         MVC   S99EID,XID                EXTENSION ID                   00026800
         OI    S99EVER,S99RBXVR          S99RB VERSION                  00026900
         OI    S99EOPTS,S99EIMSG         INDICATE RETURN MESSAGE        00027000
         OI    S99EOPTS,S99EWTP          INDICATE RETURN AS WTO         00027100
         OI    S99EMGSV,S99XINFO         MIN ERROR LEVEL TO PROCESS     00027200
*                                                                       00027300
         XC    RBPAREA,RBPAREA           CLEAR                          00027400
         LA    R8,RBPAREA                AREA FOR RBPTR                 00027500
         USING S99RBP,R8                                                00027600
         LA    R4,S99RBPTR+4             PAST S99RBPTR TO RB            00027700
         USING S99RB,R4                                                 00027800
         ST    R4,S99RBPTR               SET REQUEST RBPTR              00027900
         OI    S99RBPTR,S99RBPND         SET HIGH-ORDER BIT IN RBPTR    00028000
         XC    S99RB(RBLEN),S99RB        CLEAR                          00028100
         MVI   S99RBLN,RBLEN             SET LENGTH                     00028200
         MVI   S99VERB,S99VRBAL          ALLOCATION                     00028300
         ST    R3,S99S99X                ADDR OF RBX                    00028400
         LA    R5,S99RB+RBLEN            PAST RB TO TU                  00028500
         USING S99TUPL,R5                                               00028600
         ST    R5,S99TXTPP               SET ADDR OF TU LIST IN RB      00028700
*                                                                       00028800
         MVC   DYNADSN,ALDSNAM           FORMAT WITH PATTERN            00028900
         LA    R6,DYNADSN                PASS DSNAME                    00029000
         MVC   6(44,R6),GDGPODSN         FORMAT WITH DSNAME             00029100
         ST    R6,S99TUPTR               STORE IN TU LIST               00029200
         LA    R5,S99TUPL+4              NEXT TU ENTRY                  00029300
*                                                                       00029400
         MVC   DYNALIKE,ALLIKE           FORMAT WITH PATTERN            00029500
         LA    R6,DYNALIKE               LIKE INPUT DSNAME              00029600
         MVC   6(44,R6),GDGPIDSN         FORMAT WITH DSNAME             00029700
         ST    R6,S99TUPTR               STORE IN TU LIST               00029800
         LA    R5,S99TUPL+4              NEXT TU ENTRY                  00029900
*                                                                       00030000
         MVC   DYNASTAT,ALSTATS          FORMAT WITH PATTERN            00030100
         LA    R6,DYNASTAT               PASS STATUS                    00030200
         MVI   6(R6),X'04'               NEW                            00030300
         ST    R6,S99TUPTR               STORE IN TU LIST               00030400
         LA    R5,S99TUPL+4              NEXT TU ENTRY                  00030500
*                                                                       00030600
         MVC   DYNADISP,ALNDISP          FORMAT WITH PATTERN            00030700
         LA    R6,DYNADISP               PASS DISP                      00030800
         MVI   6(R6),X'02'               CATLG                          00030900
         ST    R6,S99TUPTR               STORE IN TU LIST               00031000
         LA    R5,S99TUPL+4              NEXT TU ENTRY                  00031100
*                                                                       00031200
         MVC   DYNADDN,ALRTDDN           FORMAT WITH PATTERN            00031300
         LA    R6,DYNADDN                RETURNED DDNAME                00031400
         ST    R6,S99TUPTR               STORE IN TU LIST               00031500
         LA    R5,S99TUPL+4              NEXT TU ENTRY                  00031600
*                                                                       00031700
         MVC   DYNAVOL,ALRTVOL           FORMAT WITH PATTERN            00031800
         LA    R6,DYNAVOL                RETURNED VOL=SER               00031900
         ST    R6,S99TUPTR               STORE IN TU LIST               00032000
*                                                                       00032100
         LR    R6,R5                                                    00032200
         USING S99TUNIT,R6                                              00032300
         OI    S99TUPTR,S99TUPLN         SET END OF LIST                00032400
         DROP  R3,R4,R5,R6                                              00032500
*                                                                       00032600
         LR    R1,R8                     PLIST IN R1                    00032700
*                                                                       00032800
         DYNALLOC                        PROCESS THE REQUEST            00032900
         C     R15,=F'0'                 SUCCESS?                       00033000
         BE    DYNAOK02                  YES                            00033100
         B     PGMEXIT                   NO                             00033200
*                                                                       00033300
DYNAOK02 L     R9,=F'0'                  INIT                           00033400
         LA    R6,GDGPODDN               DDNAME TO BE USED IN OPEN      00033500
         LA    R7,DYNADDN                DDNAME RETURNED                00033600
         MVC   0(8,R6),6(R7)             FORMAT DDNAME FOR RETURN       00033700
*                                                                       00033800
         LA    R6,GDGPOVOL               TO BE USED LATER               00033900
         LA    R7,DYNAVOL                VOL=SER RETURNED               00034000
         MVC   0(6,R6),6(R7)             FORMAT VOL=SER                 00034100
*                                                                       00063100


and my Storage Declarations are in the attachment (Definitions.txt). I have also attached the above code (DYNALLOC.txt).

I could see the parameters passed to this file like DISP, VOLUME are passed with some hex values like X'02' and X'04'.

I am not familiar much on Dynamic file handling in Assembler. Any help to add a RETPD parameter of 2 days to the above code would be really grateful.

Regards,
Bharath
Back to top
View user's profile Send private message

superk

Moderator Team Head


Joined: 26 Apr 2004
Posts: 4648
Location: Raleigh, NC, USA

PostPosted: Tue Mar 11, 2008 9:21 pm    Post subject: Reply to: Dynamically allocating a new PS file in Assembler
Reply with quote

OK, dumb question time again. icon_confused.gif

With all of the existing utilities provided by IBM for dynamic file allocations (ALLOCATE and BPXWDYN), is there a really good reason to "re-invent the wheel" like this?
Back to top
View user's profile Send private message
enrico-sorichetti

Global Moderator


Joined: 14 Mar 2007
Posts: 10211
Location: italy

PostPosted: Tue Mar 11, 2008 9:55 pm    Post subject: Reply to: Dynamically allocating a new PS file in Assembler
Reply with quote

a standards issue...
retention period is something that is being frowned upon by many/MOST organization
with SMS all the data management issues should be tackled by the proper SMS constructs
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> PL/I & Assembler All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts SORTJOIN - Copy Matched and Unmatched... Steve Ironmonger DFSORT/ICETOOL 5 Tue Jan 17, 2017 4:26 pm
No new posts Copy RECFM =VB TO FB file with RECL =... sahil41352 DFSORT/ICETOOL 3 Wed Dec 28, 2016 11:29 pm
No new posts A not very Christmassy PL/I tale, wit... prino PL/I & Assembler 3 Mon Dec 26, 2016 1:01 am
No new posts Add PD field from 2nd file to PD in 1st Sushant Garje DFSORT/ICETOOL 6 Thu Dec 01, 2016 4:32 pm
No new posts File Aid to File Manager conversion murali3955 IBM Tools 4 Thu Nov 24, 2016 3:41 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us