Previous Topic: Using Storage PoolsNext Topic: User Kept Storage


User Storage

User storage is associated exclusively with the issuing task through the TCE; when the task terminates, user storage is released. By dynamically acquiring only the amount of storage needed, you can make more effective use of storage resources.

Steps to Acquire User Storage

To dynamically acquire and use variable storage from the storage pool within a single task, perform the following steps:

  1. Acquire variable storage from the storage pool by issuing a GET STORAGE statement that specifies the USER parameter.
  2. Check for an ERROR-STATUS of 3210 (DC-NEW-STORAGE).
  3. Perform the IDMS-STATUS routine if 3210 is not returned.
  4. Perform processing, using the acquired storage as needed.
  5. Release the acquired storage by issuing a FREE STORAGE statement that specifies the appropriate storage ID.

Example of Acquiring User Storage

The program excerpt below shows the acquisition and release of user storage.

The program acquires the minimum amount of storage needed to complete the processing specified by the user.

 DATA DIVISION.
 LINKAGE SECTION.
 01  COPY IDMS RECORD EMPLOYEE.
     05 EMPLOYEE-END       PIC X.
 01  COPY IDMS RECORD DEPARTMENT.
     05 DEPARTMENT-END     PIC X.
 01  ERROR-DATA.
     05 ERROR-DEPT-ID       PIC 9(4).
     05 ERROR-MESSAGE-CODE  PIC X(4).
     05 ERROR-DATA-END      PIC X.
 PROCEDURE DIVISION.
 MAIN-LINE.
*** THIS PROGRAM ACQUIRES STORAGE FOR EITHER THE ***
*** DEPARTMENT RECORD OR THE EMPLOYEE RECORD     ***
*** DEPENDING ON THE CONTROL KEY PRESSED BY THE  ***
*** TERMINAL OPERATOR.                           ***
     BIND MAP SOLICIT.
     BIND MAP SOLICIT RECORD SOLICIT-REC.
     MAP IN USING SOLICIT.
     INQUIRE MAP SOLICIT MOVE AID TO DC-AID-IND-V.
     IF CLEAR-HIT DC RETURN
     ELSE
        IF PA01-HIT GO TO A100-GET-EMPLOYEE
     ELSE
        IF PA02-HIT GO TO A100-GET-DEPARTMENT
     ELSE
        GO TO U100-ERROR-PROC.
*
 A100-GET EMPLOYEE.
     IF SOLICIT-EMP-ID NOT NUMERIC
        GO TO U200-ERROR-EMP-ID.
*** ACQUIRE USER STORAGE FOR THE EMPLOYEE RECORD ***
     GET STORAGE FOR EMPLOYEE TO
                     EMPLOYEE-END
         NOWAIT SHORT USER
         STGID 'EMPL' VALUE IS LOW-VALUE
     ON DC-NEW-STORAGE
         NEXT SENTENCE.
     MOVE SOLICIT-EMP-ID TO EMP-ID-0415.
     OBTAIN CALC EMPLOYEE
       ON DB-REC-NOT-FOUND
          GO TO U200-ERROR-NO-EMP.
             .