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.
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.
Do not specify RELEASE=YES with the HSPALET parameter.
⋮
* 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