#/ This snippet is used in several other templates to allocate a dataset using SAS
#/ It was created to eliminate a bunch of duplicated template content that was difficult
#/ to maintain.
#/
#IF [NOSTAGECHK] #THEN ALLOCATEATPRODUCTION #/ skip staged check for promote jobs
#IF [NOSAL] #THEN ALLOCATEATPRODUCTION  #/ Check whether dataset is staged at all and branch if not
#IFNOT [USEML] #THEN USESTAGED
#IFEQ {MVS2BDSCODE} SH #THEN USEML  #/ Need to use copy of SASHELP
#IFNOTEQ [RECFM] U #THEN USESTAGED
#USEML
 dsnexst '[CUSTPRODQUAL].ML.[LOQUAL]';   #/query whether dataset already exists
#THEN NEXT
#USESTAGED
 dsnexst '[CUSTPRODQUAL][STAGEQUAL].[LOQUAL]';  #/ Query whether dataset already exists.
#NEXT
#IFNOTEQ [DATASETTYPE] SASDATALIB #THEN ALLOCFILENAME  #/ Allocate libname or filename?
#IFNOT [USEML] #THEN USESTAGED
#IFNOTEQ {MVS2BDSCODE} SH #THEN USESTAGED   #/ Need to use copy of SASHELP
 libname [OUTPDDNAME] '[CUSTPRODQUAL].ML.[LOQUAL]' #/ Allocate libname
#THEN GOCHECK
#USESTAGED
 libname [OUTPDDNAME] '[CUSTPRODQUAL][STAGEQUAL].[LOQUAL]' #/ Allocate libname
#THEN GOCHECK
#ALLOCFILENAME
#IFNOT [USEML] #THEN USESTAGED
#IFNOTEQ [RECFM] U #THEN USESTAGED
 filename [OUTPDDNAME] '[CUSTPRODQUAL].ML.[LOQUAL]' #/ Allocate filename
#THEN GOCHECK
#USESTAGED
 filename [OUTPDDNAME] '[CUSTPRODQUAL][STAGEQUAL].[LOQUAL]' #/ Allocate filename
#THEN GOCHECK
#ALLOCATEATPRODUCTION
 dsnexst '[CUSTPRODQUAL].[LOQUAL]';  #/ Query whether dataset already exists.
#IFNOTEQ [DATASETTYPE] SASDATALIB #THEN ALLOCFILENAME  #/ Allocate libname or filename?
 libname [OUTPDDNAME] '[CUSTPRODQUAL].[LOQUAL]' #/ Allocate libname
#THEN GOCHECK
#ALLOCFILENAME
 filename [OUTPDDNAME] '[CUSTPRODQUAL].[LOQUAL]' #/ Allocate filename
#GOCHECK
%if &sysdexst %then %do;  #/ does this dataset already exist?
     disp=old;            #/ if so then allocate disposition=old
#IFNOTEQ [DATASETTYPE] PDS #THEN SKIPDIR  #/ only need this for a PDS
#IF [INSTALL-NEW] #THEN SKIPDIR     #/ do not need this for Action A
#IF [INSTALL-DIRECT] #THEN DODIR    #/ need this for Action B
#IFEQ [PROMOTE] TRUE #THEN DODIR    #/ need this during promote for Action C
#THEN SKIPDIR
#DODIR
#DIRBLOCKSNEEDED #/ gets directory blocks needed from SPACEPARMS
#DIRBLOCKSACTUAL [CUSTPRODQUAL].[LOQUAL] #/ counts directory blocks in PDS
#IFEQ [DIRBLOCKSNEEDED] [DIRBLOCKSACTUAL] #THEN SKIPDIR
/* Dataset [CUSTPRODQUAL].[LOQUAL] has   [DIRBLOCKSACTUAL] directory blocks */
/* Dataset [CUSTPRODQUAL].[LOQUAL] needs [DIRBLOCKSNEEDED] directory blocks */
   dsnexst '[CUSTPRODQUAL].PL.[LOQUAL]';  #/ Query whether dataset already exists.
   filename [INPDDNAME] '[CUSTPRODQUAL].PL.[LOQUAL]'
%if &sysdexst %then %do;  #/ does this dataset already exist?
     disp=old;            #/ if so then allocate disposition=old
%end;
%else %do;
#SNIPPETINSERT Allocate.txt #/ allocate replacement production PDS
%end;
#SKIPDIR
%end;
%else %do;   #/ otherwise do rest of this to create dataset from scratch
#SNIPPETINSERT Allocate.txt #/ allocate new dataset
%end;
