12
SAS PROGRAMMING WORKSHOP Example Programs For WIPRO ,INDIA Intellects Powered by Lemurians LEMURIA Technologies Limited No 1 Lake Area, First Main Road Nungabakkam , Chennai 24 Phone: 91 44 52068503, 91 44 52137403 www.lemuriatech.com

Sas Example

Embed Size (px)

Citation preview

Page 1: Sas Example

SAS PROGRAMMING WORKSHOP Example Programs For WIPRO ,INDIA Intellects Powered by Lemurians LEMURIA Technologies Limited No 1 Lake Area, First Main Road Nungabakkam , Chennai 24 Phone: 91 44 52068503, 91 44 52137403 www.lemuriatech.com

Page 2: Sas Example

EXAMPLE 1 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA LISTINP; 000006 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000007 INPUT ID HEIGHT WEIGHT GENDER $ AGE; 000008 DATALINES; 000009 1 68 144 M 23 000010 2 78 202 M 34 000011 3 62 99 F 37 000012 4 61 101 F 45 000013 ; 000014 PROC PRINT DATA=LISTINP; 000015 TITLE 'MY FIRST SIMPLE SAS PROGRAM '; 000016 RUN; 000017 /* EXAMPLE 2 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA COMMAS; 000006 INFILE DATALINES DLM=','; 000007 INPUT ID HEIGHT WEIGHT GENDER $ AGE; 000008 DATALINES; 000009 1,68,144,M,23 000010 2,78,202,M,34 000011 3,62,99,F,37 000012 4,61,101,F,45 000013 ; 000014 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000015 PROC PRINT DATA=COMMAS; TITLE 'SIMPLE SAS DELIMTED FILE'; 000017 RUN; 000018 /*

EXAMPLE 3 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA COMMAS; 000006 INFILE DATALINES DSD ; 000007 INPUT X Y TEXT $; 000008 DATALINES;

Page 3: Sas Example

000009 1,2,XYZ 000010 3,,STRING 000011 4,5,"TESTING" 000012 6,,"ABC,XYZ" 000013 ; 000014 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000015 PROC PRINT DATA=COMMAS; TITLE 'SIMPLE DELIMITED FILE WITH DSD OPTION'; 000017 RUN; 000018 /*

EXAMPLE 4 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA INFORMS; 000006 INFORMAT LASTNAME $20. DOB MMDDYY8. GENDER $1.; 000007 INPUT ID LASTNAME DOB HEIGHT WEIGHT GENDER AGE; 000008 FORMAT DOB MMDDYY8.; 000009 DATALINES; 000010 1 SMITH 1/23/66 68 144 M 26 000011 2 JONES 3/14/60 78 202 M 32 000012 3 DOE 11/26/47 62 99 F 45 000013 4 WASHINGTON 8/1/70 66 101 F 22 000014 ; 000015 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000016 PROC PRINT DATA=INFORMS; 000017 TITLE 'FORMAT AND INFORMAT EXAMPLE REPORT'; 000018 RUN; 000019 /*

EXAMPLE 5 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA COLONS; 000006 INPUT ID LASTNAME : $20. DOB : MMDDYY8. 000007 HEIGHT WEIGHT GENDER : $1. AGE; 000008 FORMAT DOB MMDDYY8.; 000009 DATALINES; 000010 1 SMITH 01/23/66 68 144 M 26 000011 2 JONES 3/14/60 78 202 M 32 000012 3 DOE 11/26/47 62 99 F 45 000013 4 WASHINGTON 8/1/70 66 101 F 22 000014 ; 000015 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000016 PROC PRINT DATA=COLONS; 000017 TITLE 'FORMAT AND COLONS EXAMPLE REPORT'; 000018 RUN; 000019 /*

Page 4: Sas Example

EXAMPLE 6 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA AMPERS; 000006 INPUT NAME & $25. AGE GENDER : $1.; 000007 DATALINES; 000008 RASPUTIN 45 M 000009 BETSY ROSS 62 F 000010 ROBERT LOUIS STEVENSON 75 M 000011 ; 000012 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000013 PROC PRINT DATA=AMPERS; 000014 TITLE 'AMBERSEND FORMATING REPORT'; 000015 RUN; 000016 /*

EXAMPLE 7 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * DATA NEW; INPUT A B @@; DATALINES; 1 2 3 4 5 6 7 8 ; OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; PROC PRINT DATA=NEW ; TITLE 'WITH @@ SYMBOL FOR UNSTRUCTURED DATA'; RUN; /*

EXAMPLE 8 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA POINT; 000006 INPUT @1 ID 3. 000007 @5 GENDER $1. 000008 @7 AGE 2. 000009 @10 HEIGHT 2. 000010 @13 DOB MMDDYY6.; 000011 FORMAT DOB MMDDYY8.; 000012 DATALINES; 000013 101 M 26 68 012366 000014 102 M 32 78 031460

Page 5: Sas Example

000015 103 F 45 62 112647 000016 104 F 22 66 080170 000017 ; 000018 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000019 PROC PRINT DATA=POINT ; 000020 TITLE 'DATE FORMAT EXAMPLE'; 000021 RUN; 000022 /*

EXAMPLE 9 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA _NULL_; 000006 DATE='19JAN2000'D; 000007 PUT DATE= YYMMDDN8.; 000008 PUT DATE= DDMMYYC10.; 000009 PUT DATE= MMDDYYP8.; 000010 PUT DATE= YYMMDDS10.; 000011 PUT DATE= DDMMYYD8.; 000012 PUT DATE= MMDDYYD10.; 000013 RUN; 000014 /*

EXAMPLE 10 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA _NULL_; 000006 DATE='19JUL2000'D; 000007 SASDATE1=COMPRESS(PUT(DATE,YYMMDD10.),'-'); 000008 SASDATE2=TRANSLATE(PUT(DATE,YYMMDD10.),'/','-'); 000009 PUT SASDATE1=; 000010 PUT SASDATE2=; 000011 RUN; 000012 /*

EXAMPLE 11 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA SASFUNC; 000006 INPUT NAME $14. X TEST1 TEST2 TEST3;

Page 6: Sas Example

000007 INTCVT = INT(TEST1); 000008 INTCVT2 = INT(TEST2); 000009 RNDT1 = ROUND(TEST1); 000010 RNDT2 = ROUND(TEST2,.1); 000011 MEANTST = MEAN(TEST1, TEST2, TEST3); 000012 DATALINES; 000013 JOHN SMITH 4.2 86.5 84.55 81 000014 SAMUEL ADAMS 9.0 70.3 82.37 . 000015 BEN JOHNSON -6.2 82.1 84.81 87 000016 CHRIS ADRAKTAS 9.5 94.2 92.64 93

EXAMPLE 12 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA FUNCT2; 000006 INPUT X; 000007 XSQRT = SQRT(X); /* SQUARE ROOT */ 000008 XLOG = LOG(X); /* LOG BASE 10 */ 000009 XEXP = EXP(X); /* E RAISED TO THE POWER */ 000010 DATALINES; 000011 4.2 000012 9.0 000013 -6.2 000014 9.5 000015 . ; 000017 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000018 PROC PRINT DATA = FUNCT2; 000019 RUN; 000020 /*

EXAMPLE 13 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * DATA FUNCT3; INPUT NAME $; C1 = UPCASE(NAME); /* CONVERT TO UPPER CASE */ LEN = LENGTH(NAME); /* LENGTH OF STRING */ IND = INDEX(NAME,' '); /* POSITION IN STRING */ FNAME = SUBSTR(NAME,1,INDEX(NAME,' ')); DATALINES; JOHN SMITH SAMUEL ADAMS BEN JOHNSON CHRIS ADRAKTAS JOHN BROWN 000017 ;

Page 7: Sas Example

000018 RUN; 000019 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000020 PROC PRINT DATA=FUNCT3; 000021 VAR NAME C1 LEN IND FNAME ; 000022 RUN; 000023 /*

EXAMPLE 14 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * DATA ONE; INPUT NAME $ AGE; DATALINES; CHRIS 36 JANE 21 JERRY 30 JOE 49 ; DATA TWO; INPUT NAME $ SALARY; FORMAT SALARY DOLLAR10.; DATALINES; 000017 CHRIS 33000 000018 JANE 40000 000019 JERRY 60000 000020 JOE 26000 000021 ZOE 60000 000022 ; 000023 DATA BOTH; 000024 MERGE ONE TWO; 000025 RUN; 000026 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000027 PROC PRINT DATA=BOTH; 000028 RUN; 000029 /*

EXAMPLE 15 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA ONE; 000006 INPUT ID NAME& $20.; 000007 DATALINES; 000008 1 NAY RONG 000009 2 KELLY WINDSOR 000010 3 JULIO MERAZ 000011 4 RICHARD KRABILL 000012 5 RITA GIULIANO

Page 8: Sas Example

000013 ; 000014 DATA TWO; 000015 INPUT ID SALE; 000016 FORMAT SALE DOLLAR10.; Command ===>

EXAMPLE 16 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * DATA ONE; INPUT ID NAME& $20.; DATALINES; 1 NAY RONG 2 KELLY WINDSOR 3 JULIO MERAZ 4 RICHARD KRABILL 5 RITA GIULIANO ; DATA TWO; 000017 DATALINES; 000018 1 28000 000019 2 30000 000020 3 35000 000021 4 25000 000022 5 40000 000023 ; 000024 DATA THREE; 000025 INPUT ID BONUS; 000026 FORMAT BONUS DOLLAR10.; 000027 DATALINES; 000028 1 2000 000029 2 4000 000030 3 3000 000031 4 2500 000032 5 2800 000033 ; 000034 DATA FINAL; 000035 MERGE ONE TWO THREE; 000036 BY ID; 000037 RUN; 000038 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000039 PROC PRINT DATA=FINAL; 000040 RUN; 000041 /*

Page 9: Sas Example

EXAMPLE 17 000001 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID 000002 //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) 000003 //SUMMARY EXEC SAS,TIME.SAS800=3 000004 //SYSIN DD * 000005 DATA FILE1; 000006 INPUT VAR NAME $; 000007 DATALINES; 000008 100 ANJA 000009 200 BOB 000010 400 CHANDRA 000011 600 DARRIN 000012 ; 000013 RUN; 000014 DATA FILE2; 000015 INFILE CARDS DSD TRUNCOVER; 16 INPUT VAR ADDRESS $ 13.;

EXAMPLE 18 000017 DATALINES; 000018 100,34 SMITH ROAD 000019 200,67 BURT AVE 000020 300,12 YOU ST 000021 400,45 YOUNGE ST 000022 500,79 WELLINGTON 000023 600,23 DONE ROAD 000024 ; 000025 DATA FILE3; 000026 INPUT VAR ZIP; 000027 DATALINES; 000028 100 28092 000029 200 27502 000030 300 27539 000031 600 27526 ; 000032 ; 000033 DATA THREE; 000034 MERGE FILE1 (IN=A) FILE2 (IN=B) FILE3 (IN = C ) 000035 BY VAR; 000036 IF A AND B AND C; 000037 RUN; 000038 OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; 000039 PROC PRINT DATA=THREE; 000040 RUN; 000041 /*

Page 10: Sas Example

EXAMPLE 19 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * DATA BODYTEMP; OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; INFILE 'LEM0U01.SAS.BODYTEMP'; INPUT ID $ TEMPF1-TEMPF10; ARRAY TEMPF(10); DO HOUR = 1 TO 10; IF TEMPF(HOUR) = 999 THEN TEMPF(HOUR) = .; TEMP = TEMPF(HOUR); KEEP ID HOUR TEMP; OUTPUT; END; RUN; PROC PRINT DATA = BODYTEMP; RUN; /*

EXAMPLE 20 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * DATA DEMO; OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; INFILE 'LEM0U01.SAS.GENDER'; INPUT GENDER $ AGE MARSTAT $ CREDITS STATE $ ; IF CREDITS > 12 THEN FULLTIME = 'Y'; ELSE FULLTIME = 'N'; IF STATE = 'MN' THEN RESID = 'Y'; ELSE RESID = 'N'; RUN; PROC PRINT DATA=DEMO ; VAR GENDER AGE MARSTAT CREDITS FULLTIME STATE ; RUN; /*

EXAMPLE 21 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; DATA UTAH; INFILE 'LEM0U01.SAS.UTAH' FIRSTOBS = 3 OBS = 4; INPUT PARK $ 1-12 YEAR ACRES; RUN; PROC PRINT DATA = UTAH ; TITLE 'INFILE STATEMENT OPTIONS FIRSTOBS OPTION ' RUN; /*

Page 11: Sas Example

EXAMPLE 22 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; DATA TEST; OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; TIME1=86399; FORMAT TIME1 DATETIME.; DATE1=86399; FORMAT DATE1 DATE.; TIME2=86399; FORMAT TIME2 TIMEAMPM.; RUN; PROC PRINT DATA=TEST; TITLE 'DISPLAYING DATE, TIME, AND DATETIME VALUES'; FOOTNOTE1 'TIME1 IS A SAS DATETIME VALUE'; FOOTNOTE2 'DATE1 IS A SAS DATE VALUE'; FOOTNOTE3 'TIME2 IS A SAS TIME VALUE'.; RUN; /*

EXAMPLE 23 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * DATA BODYTEMP; OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; INFILE 'LEM0U01.SAS.BODYTEMP'; INPUT ID $ TEMPF1-TEMPF10; ARRAY TEMPF(10); DO HOUR = 1 TO 10; IF TEMPF(HOUR) = 999 THEN TEMPF(HOUR) = .; TEMP = TEMPF(HOUR); KEEP ID HOUR TEMP; OUTPUT; END; RUN; PROC PRINT DATA = BODYTEMP; RUN; /*

Page 12: Sas Example

EXAMPLE 24 //LEMSAS JOB LEM01,RAJESH,CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID //SASPROCS JCLLIB ORDER=(SAS.R800.PROCLIB,SYS1.PROCLIB) //SUMMARY EXEC SAS,TIME.SAS800=3 //SYSIN DD * OPTIONS NODATE PAGENO=1 LINESIZE=80 PAGESIZE=60; DATA STOCKS; INFILE 'LEM0U01.SAS.STOCKS'; INPUT NAME $ SYMBOL $ / MAY / JUNE / JULY; RUN; PROC PRINT DATA = STOCKS; TITLE 'MULTIPLE LINES OF DATA PER OBSERVATION' RUN; /*