An example of creating, using, and freeing a memory object

The following program creates a 1-megabyte memory object and writes the character string "Hi Mom" into each 4k page of the memory object. The program then frees the memory object.

         TITLE 'TEST CASE DUNAJOB'
         ACONTROL FLAG(NOALIGN)
DUNAJOB  CSECT                                                           
DUNAJOB  AMODE 31                                                        
DUNAJOB  RMODE 31                                                        
         SYSSTATE ARCHLVL=2                                              
* Begin entry linkage                                                    
         BAKR  14,0                                                      
         CNOP  0,4                                                       
         BRAS  12,@PDATA                                                 
         DC    A(@DATA)                                                  
@PDATA   LLGF  12,0(12)                                                  
         USING @DATA,12                                                  
         LHI   0,DYNAREAL                                                
         STORAGE  OBTAIN,LENGTH=(0),SP=0,CALLRKY=YES                     
         LLGTR 13,1                                                      
         USING @DYNAREA,13                                               
         MVC   4(4,13),=C'F6SA'                                          
* End entry linkage                                                      
*              
         SAM64                     Change to amode64                     
         IARV64 REQUEST=GETSTOR,                                       + 
               SEGMENTS=ONE_SEG,                                       + 
               USERTKN=USER_TOKEN,                                     + 
               ORIGIN=VIRT64_ADDR                                                       
         LG    4,VIRT64_ADDR       Get address of memory obj             
         LHI   2,256               Set loop counter                      
LOOP     DS    0H                                                        
         MVC   0(10,4),=C'HI_MOM!   '  Store HI MOM!                     
         AHI   4,4096                                                    
         BRCT  2,LOOP                                                    
* Get rid of all memory objects created with this                        
* user token                                                             
         IARV64 REQUEST=DETACH,                                        + 
               MATCH=USERTOKEN,                                        + 
               USERTKN=USER_TOKEN,                                     + 
               COND=YES                                                  
*                                                                        
* Begin exit linkage                                                     
         LHI   0,DYNAREAL                                                
         LR    1,13                                                      
         STORAGE RELEASE,LENGTH=(0),ADDR=(1),SP=0,CALLRKY=YES            
         PR                                                              
* End exit linkage                                                       
@DATA    DS    0D                                      
ONE_SEG  DC    FD'1'                                   
USER_TOKEN DC  FD'1'                                   
         LTORG                                         
@DYNAREA DSECT                                         
SAVEAREA DS    36F                                     
VIRT64_ADDR DS AD                                      
DYNAREAL EQU   *-@DYNAREA                              
         END   DUNAJOB