mirror of
https://github.com/sasjs/core.git
synced 2025-12-10 14:04:36 +00:00
Removed line breaks and reduced label length by moving the information to the core doc site and providing a link instead
77 lines
2.6 KiB
SAS
77 lines
2.6 KiB
SAS
/**
|
|
@file
|
|
@brief The CNTLOUT table generated by proc format
|
|
@details The actual CNTLOUT table may have varying variable lengths,
|
|
depending on the data values, therefore the max possible lengths
|
|
(given various practical restrictions) are described here to enable
|
|
consistency when dealing with format data.
|
|
|
|
The HLO variable may have a number of values, documented here due to the
|
|
256 char label description length limit:
|
|
|
|
F=Standard format/informat.
|
|
H=Range ending value is HIGH.
|
|
I=Numeric informat.
|
|
J=Justification for an informat.
|
|
L=Range starting value is LOW.
|
|
M=MultiLabel.
|
|
N=Format or informat has no ranges, including no OTHER= range.
|
|
O=Range is OTHER.
|
|
R=ROUND option is in effect.
|
|
S=Specifies that NOTSORTED is in effect.
|
|
U=Specifies that the UPCASE option for an informat be used.
|
|
|
|
|
|
**/
|
|
|
|
|
|
%macro mddl_sas_cntlout(libds=WORK.CNTLOUT);
|
|
|
|
proc sql;
|
|
create table &libds(
|
|
TYPE char(1) label=
|
|
'Format Type: either N (num fmt), C (char fmt), I (num infmt) or J (char infmt)'
|
|
,FMTNAME char(32) label='Format name'
|
|
,FMTROW num label=
|
|
'CALCULATED Position of record by FMTNAME (reqd for multilabel formats)'
|
|
,START char(32767) label='Starting value for format'
|
|
/*
|
|
Keep lengths of START and END the same to avoid this err:
|
|
"Start is greater than end: -<."
|
|
Similar usage note: https://support.sas.com/kb/69/330.html
|
|
*/
|
|
,END char(32767) label='Ending value for format'
|
|
,LABEL char(32767) label='Format value label'
|
|
,MIN num length=3 label='Minimum length'
|
|
,MAX num length=3 label='Maximum length'
|
|
,DEFAULT num length=3 label='Default length'
|
|
,LENGTH num length=3 label='Format length'
|
|
,FUZZ num label='Fuzz value'
|
|
,PREFIX char(2) label='Prefix characters'
|
|
,MULT num label='Multiplier'
|
|
,FILL char(1) label='Fill character'
|
|
,NOEDIT num length=3 label='Is picture string noedit?'
|
|
,SEXCL char(1) label='Start exclusion'
|
|
,EEXCL char(1) label='End exclusion'
|
|
,HLO char(13) label=
|
|
'More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'
|
|
,DECSEP char(1) label='Decimal separator'
|
|
,DIG3SEP char(1) label='Three-digit separator'
|
|
,DATATYPE char(8) label='Date/time/datetime?'
|
|
,LANGUAGE char(8) label='Language for date strings'
|
|
);
|
|
|
|
%local lib;
|
|
%let libds=%upcase(&libds);
|
|
%if %index(&libds,.)=0 %then %let lib=WORK;
|
|
%else %let lib=%scan(&libds,1,.);
|
|
|
|
proc datasets lib=&lib noprint;
|
|
modify %scan(&libds,-1,.);
|
|
index create
|
|
pk_cntlout=(type fmtname fmtrow)
|
|
/nomiss unique;
|
|
quit;
|
|
|
|
%mend mddl_sas_cntlout;
|