Obtaining additional HSPSERV performance

You can use HSPSERV to improve the performance of data transfer between central and expanded storage. Specify the ALET of the hiperspace on the HSPALET parameter on HSPSERV.

To obtain the ALET, issue the following:
ALESERV ADD,ALET=. . .,STOKEN=. . .

STOKEN is the eight-byte identifier of the hiperspace, and ALET is the four-byte index into the DU-AL, the access list that is associated with the task. The STOKEN is input to ALESERV ADD; the ALET is output.

Before you issue the HSPSERV macro with the HSPALET parameter, obtain a 144-byte workarea for the HSPSERV macro service and place the address of this area in GPR 13 and a zero in AR 13.

Note: When the HSPALET parameter is specified, the application's RANGLIST data may be modified by the system.

Do not specify RELEASE=YES with the HSPALET parameter.

Programming Notes for Obtaining ALETs for Hiperspaces:
Example of a HSPSERV with the HSPALET Parameter: The following example creates a non-shared hiperspace. To get additional performance from HSPSERV, the program obtains an ALET from the ALESERV macro and uses that ALET as input to HSPSERV. The example assumes the ASC mode is primary.
⋮
* DSPSERV CREATES A NON-SHARED STANDARD HIPERSPACE OF 20 4096-BYTE BLOCKS
*
         DSPSERV CREATE,NAME=HSNAME,TYPE=HIPERSPACE,BLOCKS=20,         X
               STOKEN=HSSTOKEN,ORIGIN=HSORIG1
*
* ALESERV RETURNS AN ALET ON THE DU-AL FOR THE HIPERSPACE
*
         ALESERV ADD,STOKEN=HSSTOKEN,ALET=HSALET,AL=WORKUNIT
*
* THE STORAGE MACRO OBTAINS FOUR PAGES OF ADDRESS SPACE STORAGE,
* THE BNDRY=PAGE PARAMETER ALIGNS PAGES ON A 4K BOUNDARY
*   - THE FIRST AND SECOND PAGES ARE THE SWRITE SOURCE
*   - THE THIRD AND FOURTH PAGES ARE THE SREAD TARGET
* COPY INTO FIRST AND SECOND PAGES THE DATA TO BE WRITTEN TO HIPERSPACE
   .
         STORAGE OBTAIN,LENGTH=4096*4,BNDRY=PAGE
         ST   1,ASPTR               * SAVE ADDR SPACE STORAGE ADDRESS
         MVC  0(20,1),SRCTEXT1      * INIT FIRST ADDR SPACE PAGE
         A    1,ONEBLK              * COMPUTE PAGE TWO ADDRESS
         MVC  0(20,1),SRCTEXT2      * INIT SECOND ADDR SPACE PAGE
   .
* SET UP THE SWRITE RANGE LIST TO WRITE FROM THE FIRST AND SECOND
* ADDRESS SPACE PAGES INTO THE HIPERSPACE
   .
         L    1,ASPTR               * GET FIRST ADDR PAGE ADDRESS
         ST   1,ASPTR1              * PUT ADDRESS INTO RANGE LIST
   .
* SAVE CONTENTS OF AR/GPR 13 BEFORE RESETTING THEM FOR HSPSERV
   .
         ST   13,SAVER13            * SAVE THE CONTENTS OF GPR 13
         EAR  13,13                 * LOAD GPR 13 FROM AR 13
         ST   13,SAVEAR13           * SAVE THE CONTENTS OF AR 13
   .
* ESTABLISH ADDRESS OF 144-BYTE SAVE AREA, AS HSPALET ON HSPSERV REQUIRES
* AND WRITE TWO PAGES FROM THE ADDRESS SPACE TO THE HIPERSPACE
   .
         SLR  13,13                 * SET GPR 13 TO 0
         SAR  13,13                 * SET AR 13 TO 0
         LA   13,WORKAREA           * SET UP AR/GPR 13 TO WORKAREA ADDR
         HSPSERV SWRITE,STOKEN=HSSTOKEN,RANGLIST=RANGPTR1,HSPALET=HSALET
   .
* AFTER THE SWRITE, THE FIRST TWO ADDRESS SPACE PAGES MIGHT BE OVERLAID
   .
* RESTORE ORIGINAL CONTENTS OF AR/GPR 13
   .
         L    13,SAVEAR13           * SET GPR 13 TO SAVED AR 13
         SAR  13,13                 * RESET AR 13
         L    13,SAVER13            * RESET GPR 13
   .
* SET UP THE SREAD RANGE LIST TO READ INTO THE THIRD AND FOURTH
* ADDRESS SPACE PAGES WHAT WAS PREVIOUSLY WRITTEN TO THE HIPERSPACE
   .
         MVC  HSORIG2,HSORIG1     * COPY ORIGIN OF HIPERSPACE TO HSORIG2
         L    1,ASPTR               * GET FIRST ADDR PAGE ADDRESS
         A    1,TWOBLKS             * COMPUTE THIRD PAGE ADDRESS
         ST   1,ASPTR2              * PUT ADDRESS INTO RANGE LIST
   .
* SAVE CONTENTS OF AR/GPR 13
   .
         ST   13,SAVER13            * SAVE THE CONTENTS OF GPR 13
         EAR  13,13                 * LOAD GPR 13 FROM AR 13
         ST   13,SAVEAR13           * SAVE THE CONTENTS OF AR 13
   .
* ESTABLISH ADDRESS OF 144-BYTE SAVE AREA, AS HSPALET ON HSPSERV REQUIRES,
* AND READ TWO BLOCKS OF DATA FROM THE HIPERSPACE INTO THE
* THIRD AND FOURTH PAGES IN THE ADDRESS SPACE STORAGE USING HSPALET
   .
         SLR  13,13                 * SET GPR 13 TO 0
         SAR  13,13                 * SET AR 13 TO 0
         LA   13,WORKAREA           * SET UP AR/GPR 13 TO WORKAREA ADDR
         HSPSERV SREAD,STOKEN=HSSTOKEN,RANGLIST=RANGPTR2,HSPALET=HSALET
   .
* RESTORE ORIGINAL CONTENTS OF AR/GPR 13
   .
         L    13,SAVEAR13           * SET GPR 13 TO SAVED AR 13
         SAR  13,13                 * RESET AR 13
         L    13,SAVER13            * RESET GPR 13
   .
* FREE THE ALET, FREE ADDRESS SPACE STORAGE, AND DELETE THE HIPERSPACE
⋮
* DATA AREAS AND CONSTANTS
   .
HSNAME   DC    CL8'SCROLLHS'          * NAME FOR THE HIPERSPACE
HSSTOKEN DS    CL8                    * STOKEN FOR THE HIPERSPACE
HSALET   DS    CL4                    * ALET FOR THE HIPERSPACE
ASPTR    DS    1F                     * LOCATION OF ADDR SPACE STORAGE
SAVER13  DS    1F                     * LOCATION TO SAVE GPR 13
SAVEAR13 DS    1F                     * LOCATION TO SAVE AR 13
WORKAREA DS    CL144                  * WORK AREA FOR HSPSERV
ONEBLK   DC    F'4096'                * LENGTH OF ONE BLOCK OF STORAGE
TWOBLKS  DC    F'8192'                * LENGTH OF TWO BLOCKS OF STORAGE
SRCTEXT1 DC    CL20' INVENTORY ITEMS    '
SRCTEXT2 DC    CL20' INVENTORY SURPLUSES'
         DS    0F
RANGPTR1 DC    A(SWRITLST)            * ADDRESS OF SWRITE RANGE LIST
RANGPTR2 DC    A(SREADLST)            * ADDRESS OF SREAD RANGE LIST
         DS    0F
SWRITLST DS    0CL12                  * SWRITE RANGE LIST
ASPTR1   DS    F                      * START OF ADDRESS SPACE SOURCE
HSORIG1  DS    F                      * TARGET LOCATION IN HIPERSPACE
NUMBLKS1 DC    F'2'                   * NUMBER OF 4K BLOCKS IN SWRITE
         DS    0F
SREADLST DS    0CL12                  * SREAD RANGE LIST
ASPTR2   DS    F                      * TARGET LOCATION IN ADDR SPACE
HSORIG2  DS    F                      * START OF HIPERSPACE SOURCE
NUMBLKS2 DC    F'2'                   * NUMBER OF 4K BLOCKS IN SREAD
         DS    0F