#BEGINBUCKET PROMOTEDSNEXIST
#/ ------------------------------------------------------------------
#BEGINDEFS
#/ ------------------------------------------------------------------
#/EXCEPTIONFORMISSINGSYMBOL
#/ ------------------------------------------------------------------
#BEGININSTANCEQUALIFIERS
#/ ------------------------------------------------------------------
#/ Need to force the OSE.CNTL dataset allocation because in the
#/ payload it is indicated as xx - preedit dataset for saseditx symbol resolutions
#IFNOTEQ {PRODUCT} raptor #THEN NOTRAPTOR
#IFNOTEQ {MVS2BDSCODE} XX #THEN NEXT
#INSTANCEUNIQUEKEY OCENNE #NOTUNIQUE NEXT
#STATICINSTANCE MVS2BDSCODE=OC;LANG2BDSCODE=EN;ENCODE=NE;COPY2BDSCODE=;
#NEXT
#INSTANCEUNIQUEKEY OHENNE #NOTUNIQUE #NEXT
#STATICINSTANCE MVS2BDSCODE=OH;LANG2BDSCODE=EN;ENCODE=NE;COPY2BDSCODE=;
#NEXT
#STATICINSTANCE MVS2BDSCODE=OG;LANG2BDSCODE=EN;ENCODE=[ORDERENCODING];
#STATICINSTANCE MVS2BDSCODE=OP;LANG2BDSCODE=EN;ENCODE=[ORDERENCODING];
#STATICINSTANCE MVS2BDSCODE=OT;LANG2BDSCODE=EN;ENCODE=[ORDERENCODING];
#NOTRAPTOR
#TABLEFIX {MVS2BDSCODE} #/ Fix ds table row from the instance.
#/hotfix code first otherwise the uss pieces get processed as PDS section
#IFEQ [HOTFIX] TRUE #THEN NEXTPIECE
#THEN NOTHOTFIX
#NEXTPIECE
#/ bypass including the allocation of the datasets involving config, invokers
#IFEQ {PRODUCT} zostools #THEN DOESNOTQUALIFY
#NOTHOTFIX
#IF [NOSAL] #THEN NEXT  #/ If not a staged library skip it
#IFEQ [DATASETTYPE] PDS #THEN QUALIFIES
#IFEQ [DATASETTYPE] PDSE #THEN QUALIFIES
#IFEQ [DATASETTYPE] SASDATALIB  #THEN QUALIFIES
#THEN NEXT
#QUALIFIES
#SET [DSLANGCODE] {LANG2BCODE}
#INSTANCEUNIQUEKEY [LOQUAL] #NOTUNIQUE NEXT
#CREATEINSTANCEFROMENTRY
#DOESNOTQUALIFY
#NEXT
#BEGINPREFIX
#/        Prefix invokes SAS from targeted SAS installation
#SET [DSLANGCODE] EN         #/ Set language symbol to EN for firing up SAS
//STGALLOC EXEC PGM=[ENTRY],
//  PARM=('SETINIT MSGCASE CAPSOUT ERRORABEND NOWORKTERM',
//        'MACRO ERRORCHECK=STRICT SASUSER=WORK')
#IFEQ [HOST] z64 #THEN USEZE
#TABLEFIX LD  #/ Load Library
#THEN STEPLIB
#USEZE
#TABLEFIX ZE  #/ 64-bit load library
#STEPLIB
//STEPLIB  DD DISP=SHR,
//  DSN=[CUSTPRODQUAL].[LOQUAL]
#TABLEFIX SH  #/ Sashelp
//[DFLTDDN]  DD DISP=SHR,
//  DSN=[CUSTPRODQUAL].[LOQUAL]
#TABLEFIX AU  #/ Autocalls
//[DFLTDDN] DD DISP=SHR,
//  DSN=[CUSTPRODQUAL].[LOQUAL]
#IFEQ [HOST] z64 #THEN SKIPSM
#TABLEFIX SM  #/ SAS messages
//[DFLTDDN] DD DISP=SHR,
//  DSN=[CUSTPRODQUAL].[LOQUAL]
#SKIPSM
//TKMVSENV DD DATA,DLM='!1'
#SNIPPETINSERT SASDefaultTkmvsenv.txt
!1
//WORK     DD UNIT=[TMPUNI],SPACE=(6144,([WORKSPC])),
//         DCB=(RECFM=FS,LRECL=6144,BLKSIZE=6144)
//SASLOG   DD SYSOUT=[SYSOUT]
//SASCLOG  DD SYSOUT=[SYSOUT]
//CONFIG   DD DATA,DLM='!1'
#SNIPPETINSERT SASDefaultConfig.txt
!1
//SASLIST  DD SYSOUT=[SYSOUT]
//SASPARM  DD UNIT=[TMPUNI],SPACE=(400,(100,300)),
//         DCB=(RECFM=FB,LRECL=80,BLKSIZE=400,BUFNO=1)
//SYSIN  DD DATA,DLM='!1'  #/ Begin source code stream for SAS session. Delimiter is !^ in column 1 of line
options filestat symbolgen mprint mlogic;
%macro dsnq;               #/ Invoke SAS macro compiler.
#/ -------------------------------------------------------------------
#BEGININSTANCE
#/ -------------------------------------------------------------------
#/ First, make sure the production dataset exists - this step will allocate
#/ it if it doesn't exist, or just leave it alone if it does.
#SET [DSLANGCODE] EN         #/ Set language symbol to EN for empty/blank language argument.
#IFNOT {LANG2BCODE} #THEN NEXT     #/ Is language symbol non-blank?
#SET [DSLANGCODE] {LANG2BCODE}     #/ If so set general use language symbol to instance argument value.
#NEXT
#SET [MVSDSCODE] {MVS2BDSCODE}
#TABLEFIX [MVSDSCODE] #/ Fix ds table row to OTP2 from the instance.
#IFNOT [ALIASTO] #THEN NOALIAS #/ See if it's marked alias in ds table, if not then skip
#SET [MVSDSCODE] [ALIASTO]     #/ Hold the aliased ds from the table row
#TABLEFIX [MVSDSCODE]  #/ Reset the table row to the aliased OTP2.
#NOALIAS
#SET [NOSTAGECHK] TRUE
#SET [PROMOTE] TRUE
#SNIPPETINSERT AllocateDataset.txt
#SET [PROMOTE] FALSE
#/ -------------------------------------------------------------------
#BEGINSUFFIX                 #/ This suffix is intentionally null
#/ -------------------------------------------------------------------
%mend dsnq; %dsnq    #/ close macro and execute macro
!1                   #/ end of dsnexist program
//*
#ENDBUCKET PROMOTEDSNEXIST
