MACRO 00001000
&NM DMSFREE &DWORDS=, <NUMBER> | (0) *00002000
&MIN=, <NUMBER> | (1) *00003000
&TYPE=USER, USER | NUCLEUS *00004000
&TYPCALL=SVC, SVC | BALR *00005000
&ERR=, <LA-ADDRESS> | * *00006000
&AREA=, LOW | HIGH | <NULL> *00007000
&MSG=YES YES | NO 00008000
LCLA &C 00009000
LCLB &VB,&NB,&LB,&HB 00010000
AIF ('&NM' EQ '').NONM 00011000
&NM DS 0H 00012000
.NONM ANOP 00013000
AIF ('&TYPE' EQ 'NUCLEUS' OR '&TYPE' EQ 'USER').TOK 00014000
MNOTE 12,'DMSFRE001S ''TYPE'' NOT ''USER'' OR ''NUCLEUS''' 00015000
MEXIT 00016000
.TOK ANOP 00017000
&NB SETB ('&TYPE' EQ 'NUCLEUS') 00018000
AIF ('&AREA' EQ 'HIGH' OR '&AREA' EQ 'LOW').AOK 00019000
AIF ('&AREA' EQ '').AOK 00020000
MNOTE 12,'DMSFRE002S ''AREA'' NOT ''HIGH'' OR ''LOW'' OR NULL' 00021000
MEXIT 00022000
.AOK ANOP 00023000
&LB SETB ('&AREA' NE 'HIGH') 00024000
&HB SETB ('&AREA' NE 'LOW') 00025000
AIF ('&DWORDS' EQ '(0)').NOZ 00026000
L 0,=A(&DWORDS) SIZE OF REQUEST IN DOUBLEWORDS 00027000
.NOZ ANOP 00028000
&VB SETB ('&MIN' NE '') 00029000
AIF ('&MIN' EQ '' OR '&MIN' EQ '(1)').NOM 00030000
L 1,=A(&MIN) MINIMUM SIZE IN DOUBLEWORDS 00031000
.NOM ANOP 00032000
&C SETA X'40'*&VB+X'20'*&NB+X'10'+X'08'*&LB+X'04'*&HB 00033000
DMSFRX &TYPCALL,&C,4,&MSG,&ERR 00034000
MEND 00035000