You can use SAS formats and user-defined formats with high-performance analytical procedures as you can with other procedures in the SAS System. However, because the analytic work is carried out in a distributed environment and might depend on the formatted values of variables, some special handling can improve the efficiency of work with formats.
High-performance analytical procedures examine the variables that are used in an analysis for association with user-defined formats. Any user-defined formats that are found by a procedure are transmitted automatically to the appliance. If you are running multiple high-performance analytical procedures in a SAS session and the analysis variables depend on user-defined formats, you can preprocess the formats. This step involves generating an XML stream (a file) of the formats and passing the stream to the high-performance analytical procedures.
Suppose that the following formats are defined in your SAS program:
proc format; value YesNo 1='Yes' 0='No'; value checkThis 1='ThisisOne' 2='ThisisTwo'; value $cityChar 1='Portage' 2='Kinston'; run;
The next group of SAS statements create the XML stream for the formats in the file Myfmt.xml
, associate that file with the file reference myxml
, and pass the file reference with the FMTLIBXML= option in the PROC HPLOGISTIC statement:
filename myxml 'Myfmt.xml'; libname myxml XML92 xmltype=sasfmt tagset=tagsets.XMLsuv; proc format cntlout=myxml.allfmts; run;
proc hplogistic data=six fmtlibxml=myxml; class wheeze cit age; format wheeze best4. cit $cityChar.; model wheeze = cit age; run;
Generation and destruction of the stream can be wrapped in convenience macros:
%macro Make_XMLStream(name=tempxml); filename &name 'fmt.xml'; libname &name XML92 xmltype=sasfmt tagset=tagsets.XMLsuv; proc format cntlout=&name..allfmts; run; %mend; %macro Delete_XMLStream(fref); %let rc=%sysfunc(fdelete(&fref)); %mend;
If you do not pass an XML stream to a high-performance analytical procedure that supports the FMTLIBXML= option, the procedure generates an XML stream as needed when it is invoked.