SAS User File for H220C Data This file contains information and sample SAS programs to create a permanent SAS dataset for users who want to use SAS in processing the MEPS data provided in this PUF release. There are two ways to create a permanent SAS dataset, using either the SAS transport data file (H220C.SSP) or the ASCII data file (H220C.DAT) supplied in this PUF release. Section A provides a sample SAS program for the first alternative, which is to convert the SAS transport data file to a regular SAS dataset using the SAS procedure: CIMPORT. Section B provides a sample SAS program for the second alternative, which is to read data from the ASCII data file using a SAS DATA step with INFILE, INPUT, and LABEL statements. Section C explains format-related SAS statements that a user may optionally use when working with the SAS dataset. Examples of SAS programs (DATA step or PROC) are provided in all three sections, primarily for the benefit of inexperienced users. Section D contains complete SAS statements that must be used in the programs described in Sections B and C. ****************************************************************************** The sample SAS programs provided in Sections A and B show how to create a permanent SAS dataset from the data files provided in this PUF release. A. A Sample SAS Program for Converting the SAS Transport File to a Permanent SAS Dataset The SAS procedure CIMPORT will read a SAS transport file and convert the data to regular SAS format, storing the output in a permanent SAS dataset. This permanent SAS dataset can then be used for all future processing and analyses. Below is a sample SAS program that can be used to convert the SAS transport file to a permanent SAS dataset (in a Windows environment). LIBNAME PUFLIB 'C:\MEPS\SASDATA'; FILENAME IN1 'C:\MEPS\DOWNLOAD\H220C.SSP'; PROC CIMPORT DATA=PUFLIB.H220C INFILE=IN1; RUN; Below are SAS statements to print a list of variables and a few sample records from the permanent SAS dataset: PROC CONTENTS DATA=PUFLIB.H220C; TITLE 'List of Variables in MEPS H220C SAS Dataset'; RUN; PROC PRINT DATA=PUFLIB.H220C (OBS=20); TITLE 'First 20 Observations in MEPS H220C SAS Dataset'; RUN; The LIBNAME statement tells SAS the location (directory name) to store the permanent SAS dataset which is output by PROC CIMPORT. The FILENAME statement tells SAS the location (complete directory and file name) of the input SAS transport data file. NOTES: 1) The names used in the LIBNAME and FILENAME statements shown above (i.e., PUFLIB, IN1) are arbitrary; they are only temporary aliases. 2) The directory and file names used in the LIBNAME and FILENAME statements shown above are Windows syntax and may need to be modified for other operating systems such as UNIX and Linux. 3) H220C is the internal SAS dataset name (also the PC file name, without the extension) prior to the creation of the SAS transport data file. After running PROC CIMPORT, the output SAS dataset assumes the same dataset name (or file name). Hence, in the example above, a file named H220C.SAS7BDAT will be created under the C:\MEPS\SASDATA directory when PROC CIMPORT runs successfully. 4) The SAS transport file H220C.SSP was created from a SAS V9 data file, using PROC CPORT. This file should work with earlier versions of SAS, although it has not been tested with those versions. Users who are unable to use this SAS transport file should instead convert the ASCII data file H220C.DAT to a SAS dataset as described in Section B. B. A Sample SAS Program for Converting the ASCII Data File to a Permanent SAS Dataset The complete SAS statements (INPUT and LABEL) included in Section D are intended to save time for those users wishing to create a permanent SAS dataset from the H220C.DAT ASCII data file. These statements must be used in combination with other SAS statements to create the appropriate SAS program, as shown below. To use the statements provided in Section D to create a SAS program, you will need an ASCII text editor. If you are using an interactive form of SAS (Windows, UNIX, Linux, etc.), use the editor provided as part of the SAS software. Following is a sample Windows SAS program that will convert the ASCII data file to SAS format: LIBNAME PUFLIB 'C:\MEPS\SASDATA'; FILENAME IN1 'C:\MEPS\DOWNLOAD\H220C.DAT'; DATA PUFLIB.H220C; INFILE IN1 LRECL=151; INPUT .....; * to user: insert the complete INPUT statement that is provided in Section D; LABEL .....; * to user: insert the complete LABEL statement that is provided in Section D; RUN; Here is an explanation of the SAS statements used in the program above. LIBNAME statement: This tells SAS the location (directory name) of the permanent SAS dataset. FILENAME statement: This tells SAS the location of the input ASCII data file. DATA statement: This signifies the beginning of a SAS DATA step and specifies the output SAS dataset, referencing the LIBNAME entry (PUFLIB) and assigning an internal SAS dataset name (H220C). In the example, after the successful completion of the DATA step, a PC file named H220C.SAS7BDAT would have been created in the C:\MEPS\SASDATA directory. INFILE statement: This tells SAS the location (directory and file name) of the input ASCII data file. Also provided is the logical record length (151 bytes), with the default of RECFM=V implied when this parameter is omitted. LRECL and RECFM are optional parameters in the INFILE statement. With regard to these options, please note the following: the ASCII data file H220C.DAT contains a 2-byte carriage return/line feed at the end of each record. When converting to a PC-SAS file, the LRECL option should be used to specify the record length to avoid use of a default record length by PC-SAS. If the RECFM=V option is used, the LRECL option must be specified as the logical record length (e.g., 151 for H220C.DAT). If RECFM=F is used, then the LRECL value must be specified as the logical record length plus 2 (153 for H220C.DAT). Note that if the RECFM option is omitted, then the default option of RECFM=V is automatically used, and LRECL should be specified as the logical record (151 for H220C.DAT). INPUT statement: This specifies the input record layout, giving names, the beginning column positions, and the lengths for data items (which become SAS variables) in the ASCII data file (H220C.DAT). Variable type (numeric or character) is also defined by character variables having a dollar sign ($) directly before the variables length, while numeric variables do not have a dollar sign. LABEL statement: This associates descriptive names with the SAS variables. RUN statement: This tells SAS to execute all commands up to this point. C. Optional Format-related SAS Statements If a user wants to use formats for the SAS variables, a SAS format catalog must first be created. Below is a SAS program that will accomplish this: LIBNAME PUFLIB 'C:\MEPS\SASDATA'; PROC FORMAT LIBRARY=PUFLIB; VALUE .....; * to user: insert the complete set of VALUE statements found in Section D; VALUE .....; .......... ; RUN; Below is an example of how to use the SAS formats defined by the PROC FORMAT procedure: LIBNAME PUFLIB 'C:\MEPS\SASDATA'; OPTIONS FMTSEARCH=(PUFLIB); PROC FREQ DATA=PUFLIB.H220C; TABLES .... / LIST MISSING; FORMAT varnam1 fmtnam1. Varnam2 fmtnam2. .... ; * to user: substitute varnam1 and fmtnam1 with actual variable names and format names; * Insert the FORMAT statement provided in Section D, if you are using all the variables in the TABLES statement; TITLE 'Frequency Distributions ....'; RUN; Here is an explanation of the SAS statements used above. LIBNAME statement: This tells SAS the location (directory name) of the SAS format library. Please note that SAS datasets (file name extension is 'SAS7BDAT') and format catalog (file name extension is 'SAS7BCAT') can be stored under the same directory. OPTIONS FMTSEARCH=...: This specifies the SAS format library. PROC FORMAT statement: This identifies the SAS procedure that will make SAS formats according to VALUE statements. Formats will be stored in a file named FORMATS.SAS7BCAT. Please note that the option 'LIBRARY=...' can be omitted if the user does not want to create a permanent SAS format library. When simply 'PROC FORMAT;' is used, the formats are defined only for the duration of the batch SAS program or an interactive SAS session. VALUE statement: This gives a) names to formats; and b) descriptive labels for individual values, or range of values. The format names can then be invoked using a FORMAT statement if desired. PROC FREQ statement: This identifies the SAS procedure that generates frequency distributions of variables specified in the TABLES statement, formatted if a FORMAT statement is used. The input SAS dataset is specified in the 'DATA=' option. FORMAT statement: This associates existing formats with variables. When using this statement, the formats must have already been created with a PROC FORMAT procedure. RUN statement: This tells SAS to execute all commands up to this point. NOTES: 1) Use of formats is entirely optional, and depends on the types of analyses that you are doing. It is recommended that you create and use them as appropriate. 2) The names used in the LIBNAME and FILENAME statements shown above (i.e., PUFLIB, IN1) are arbitrary; they are only temporary aliases. 3) The file and directory specifications in the LIBNAME and FILENAME statements are Windows syntax and may need to be modified for other operating systems such as UNIX and Linux. D. SAS Statements This section contains SAS INPUT, LABEL, FORMAT, and VALUE statements for use in converting the ASCII H220C.DAT file into a SAS dataset, and for creating SAS formats. * INPUT STATEMENTS; INFILE IN LRECL=151; INPUT @1 DUID 7.0 @8 PID 3.0 @11 DUPERSID $10.0 @21 EVNTIDX $16.0 @37 EVENTRN 1.0 @38 PANEL 2.0 @40 OMTYPE_M18 1.0 @41 OMSF20X 8.2 @49 OMMR20X 8.2 @57 OMMD20X 8.2 @65 OMPV20X 8.2 @73 OMVA20X 8.2 @81 OMTR20X 7.2 @88 OMOF20X 8.2 @96 OMSL20X 7.2 @103 OMWC20X 7.2 @110 OMOT20X 8.2 @118 OMXP20X 8.2 @126 OMTC20X 8.2 @134 IMPFLAG 1.0 @135 PERWT20F 12.6 @147 VARPSU 1.0 @148 VARSTR 4.0 ; * FORMAT STATEMENTS; FORMAT DUID DUIDF. PID PIDF. DUPERSID $DUPERSIDF. EVNTIDX $EVNTIDXF. EVENTRN EVENTRNF. PANEL PANELF. OMTYPE_M18 OMTYPE_M18F. OMSF20X OMSF20XF. OMMR20X OMMR20XF. OMMD20X OMMD20XF. OMPV20X OMPV20XF. OMVA20X OMVA20XF. OMTR20X OMTR20XF. OMOF20X OMOF20XF. OMSL20X OMSL20XF. OMWC20X OMWC20XF. OMOT20X OMOT20XF. OMXP20X OMXP20XF. OMTC20X OMTC20XF. IMPFLAG IMPFLAGF. PERWT20F PERWT20FF. VARPSU VARPSUF. VARSTR VARSTRF. ; * LABEL STATEMENTS; LABEL DUID ="PANEL # + ENCRYPTED DU IDENTIFIER" PID ="PERSON NUMBER" DUPERSID ="PERSON ID (DUID + PID)" EVNTIDX ="EVENT ID" EVENTRN ="EVENT ROUND NUMBER" PANEL ="PANEL NUMBER" OMTYPE_M18 ="OTHER MEDICAL EXPENSE TYPE" OMSF20X ="AMOUNT PAID, FAMILY (IMPUTED)" OMMR20X ="AMOUNT PAID, MEDICARE (IMPUTED)" OMMD20X ="AMOUNT PAID, MEDICAID (IMPUTED)" OMPV20X ="AMOUNT PAID, PRIVATE INSURANCE (IMPUTED)" OMVA20X ="AMOUNT PAID, VETERANS/CHAMPVA(IMPUTED)" OMTR20X ="AMOUNT PAID, TRICARE(IMPUTED)" OMOF20X ="AMOUNT PAID, OTHER FEDERAL (IMPUTED)" OMSL20X ="AMOUNT PAID, STATE & LOCAL GOV (IMPUTED)" OMWC20X ="AMOUNT PAID, WORKERS COMP (IMPUTED)" OMOT20X ="AMOUNT PAID, OTHER INSURANCE (IMPUTED)" OMXP20X ="SUM OF OMSF20X-OMOT20X (IMPUTED)" OMTC20X ="HHLD REPORTED TOTAL CHARGE (IMPUTED)" IMPFLAG ="IMPUTATION STATUS" PERWT20F ="EXPENDITURE FILE PERSON WEIGHT, 2020" VARPSU ="VARIANCE ESTIMATION PSU, 2020" VARSTR ="VARIANCE ESTIMATION STRATUM, 2020" ; * VALUE STATEMENTS; VALUE DUIDF 2320018 - 2579834 = "VALID ID" ; VALUE $DUPERSIDF '2320018101' - '2579834102' = "VALID ID" ; VALUE EVENTRNF 1 = "1 ROUND 1" 2 = "2 ROUND 2" 3 = "3 ROUND 3" 4 = "4 ROUND 4" 5 = "5 ROUND 5" 6 = "6 ROUND 6" 7 = "7 ROUND 7" ; VALUE $EVNTIDXF '2320018101600102' - '2579834102200102' = "VALID ID" ; VALUE IMPFLAGF 0 = "0 NOT ELIGIBLE FOR IMPUTATION" 1 = "1 COMPLETE HC DATA" 2 = "2 COMPLETE MPC DATA" 3 = "3 FULLY IMPUTED" 4 = "4 PARTIALLY IMPUTED" 5 = "5 CAPITATION IMPUTATION" ; VALUE OMMD20XF 0 = "0" 1.18 - 49.7 = "$1.18 - $49.70" 49.71 - 221.55 = "$49.71 - $221.55" 221.56 - 767.9 = "$221.56 - $767.90" 767.91 - 36900 = "$767.91 - $36,900.00" ; VALUE OMMR20XF 0 = "0" 0.01 - 64.19 = "$0.01 - $64.19" 64.2 - 250 = "$64.20 - $250.00" 250.01 - 783.32 = "$250.01 - $783.32" 783.33 - 23930 = "$783.33 - $23,930.00" ; VALUE OMOF20XF 0 = "0" 14.45 - 49.32 = "$14.45 - $49.32" 49.33 - 224.8 = "$49.33 - $224.80" 224.81 - 726.97 = "$224.81 - $726.97" 726.98 - 11319.71 = "$726.98 - $11,319.71" ; VALUE OMOT20XF 0 = "0" 34.3 - 49.85 = "$34.30 - $49.85" 49.86 - 455 = "$49.86 - $455.00" 455.01 - 1551.2 = "$455.01 - $1,551.20" 1551.21 - 30000 = "$1,551.21 - $30,000.00" ; VALUE OMPV20XF 0 = "0" 0.73 - 80 = "$0.73 - $80.00" 80.01 - 194.51 = "$80.01 - $194.51" 194.52 - 447 = "$194.52 - $447.00" 447.01 - 46200 = "$447.01 - $46,200.00" ; VALUE OMSF20XF 0 = "0" 1 - 30 = "$1.00 - $30.00" 30.01 - 90 = "$30.01 - $90.00" 90.01 - 272 = "$90.01 - $272.00" 272.01 - 35000 = "$272.01 - $35,000.00" ; VALUE OMSL20XF 0 = "0" 24.31 - 36.79 = "$24.31 - $36.79" 36.8 - 126.89 = "$36.80 - $126.89" 126.9 - 1528.59 = "$126.90 - $1,528.59" 1528.6 - 3773.24 = "$1,528.60 - $3,773.24" ; VALUE OMTC20XF 0 = "0" 16.31 - 69 = "$16.31 - $69.00" 69.01 - 266 = "$69.01 - $266.00" 266.01 - 868.5 = "$266.01 - $868.50" 868.51 - 97000 = "$868.51 - $97,000.00" ; VALUE OMTR20XF 0 = "0" 8.93 - 43.35 = "$8.93 - $43.35" 43.36 - 140.89 = "$43.36 - $140.89" 140.9 - 387.8 = "$140.90 - $387.80" 387.81 - 4862.85 = "$387.81 - $4,862.85" ; VALUE OMTYPE_M18F -8 = "-8 DK" -7 = "-7 REFUSED" -1 = "-1 INAPPLICABLE" 1 = "1 GLASSES OR CONTACT LENSES" 2 = "2 AMBULANCE SERVICES" 3 = "3 DISPOSABLE SUPPLIES" 4 = "4 LONG TERM MEDICAL EQUIPMENT" ; VALUE OMVA20XF 0 = "0" 12 - 55 = "$12.00 - $55.00" 55.01 - 120 = "$55.01 - $120.00" 120.01 - 389.03 = "$120.01 - $389.03" 389.04 - 22369.09 = "$389.04 - $22,369.09" ; VALUE OMWC20XF 0 = "0" 145.89 - 583.54 = "$145.89 - $583.54" 583.55 - 923.94 = "$583.55 - $923.94" 923.95 - 972.57 = "$923.95 - $972.57" 972.58 - 4790 = "$972.58 - $4,790.00" ; VALUE OMXP20XF 0 = "0" 21.32 - 65 = "$21.32 - $65.00" 65.01 - 235 = "$65.01 - $235.00" 235.01 - 628 = "$235.01 - $628.00" 628.01 - 55000 = "$628.01 - $55,000.00" ; VALUE PANELF 23 = "23 PANEL 23" 24 = "24 PANEL 24" 25 = "25 PANEL 25" ; VALUE PERWT20FF 0 = "0.000000" 409.386831 - 80931.517052 = "409.386831 - 80931.517052" ; VALUE PIDF 101 - 501 = "VALID ID" ; VALUE VARPSUF 1 - 6 = "1 - 6 VARPSU" ; VALUE VARSTRF 2001 - 2117 = "2001 - 2117 VARSTR" ;