Type : CREATION_INTERNE
Todos los datos se generan sintéticamente dentro del script. No se lee ninguna fuente de datos externa. La generación comienza con un bucle DO para crear una tabla de parámetros, que luego se extiende y enriquece con datos aleatorios para simular un proceso real.
| 1 | DATA Test_Matrix; LENGTH Vendor $21.; |
| 2 | DO Month=1 TO 12; |
| 3 | Mon="2008-"||PUT(Month, Z2.0); |
| 4 | Num=20+3*INT(Month/3); Mean=18; Sigma=2; DA=120; DB=.75; D_Sig=10; |
| 5 | Rate=.75; Vendor="ChiTronix Components"; OUTPUT; |
| 6 | Num=25+INT(Month/3); Mean=17; Sigma=2+(Month/12); DA=120; DB=2; D_Sig=20; |
| 7 | Rate=4-Month/4; Vendor="Duality Logic"; OUTPUT; |
| 8 | Num=15; Mean=13; Sigma=3; DA=140; DB=.5; D_Sig=15; |
| 9 | Rate=ROUND(1+Month/3, .1); Vendor="Empirical Engineering"; OUTPUT; |
| 10 | END; |
| 11 | RUN; |
| 1 | DATA Test_Matrix; SET Test_Matrix; |
| 2 | Mean = ROUND(Mean, .1); |
| 3 | Sigma = ROUND(Sigma, .1); |
| 4 | RUN; |
| 5 | PROC SORT DATA=Test_Matrix; BY Vendor Month; RUN; |
| 1 | DATA RECORDS; SET TEST_MATRIX; |
| 2 | DO Unit=1 TO Num; |
| 3 | OUTPUT; |
| 4 | END; |
| 5 | RUN; |
| 1 | %let D=500; %let D=7500; %LET D = 50000; %let B = 1; |
| 2 | DATA Import_This; SET RECORDS; retain SEED0 SEED1 SEED2 SEED3; |
| 3 | FORMAT Test_Time $25. Delay $12. Del 8.0 Resistance 8.2 RESULT $8. Fail 8.0; |
| 4 | FORMAT TestTime DATETIME20. TestDate MMDDYY10.; |
| 5 | TestTime=MDY(Month, min(30,Unit), 2008)*60*60*24; |
| 6 | TestDate=DATEPART(TestTime); |
| 7 | Test_Time=PUT(TestTime, DateTime20.); |
| 8 | IF Vendor="Empirical Engineering" THEN Test_Time=PUT(TestDate, MMDDYY10.); |
| 9 | IF _N_=1 THEN DO; SEED0=12345; SEED1=54321; SEED2=15243; SEED3=34251; END; |
| 10 | CALL RANNOR(SEED0, Z); |
| 11 | Resistance = Mean + Sigma*Z; |
| 12 | |
| 13 | |
| 14 | |
| 15 | |
| 16 | FORMAT RESULT $8.; |
| 17 | RESULT = "Pass"; Fail=0; |
| 18 | IF Resistance < 12.5 THEN RESULT="Fail Low"; |
| 19 | IF Resistance > 22.5 THEN RESULT="Fail Hi"; |
| 20 | IF RESULT ne "Pass" THEN Fail=1; |
| 21 | CALL RANNOR(SEED1, De); |
| 22 | Del = DA + DB*Resistance + .2*Resistance**2 + D_Sig*De; |
| 23 | Delay=PUT(Del, 8.0); |
| 24 | IF Vendor="Duality Logic" THEN DO; |
| 25 | IF Month=12 AND Unit>20 THEN Delay="N/A"; |
| 26 | END; |
| 27 | IF Vendor="Empirical Engineering" THEN DO; |
| 28 | IF Month=4 AND Unit>10 THEN Delay="N/A"; |
| 29 | END; |
| 30 | |
| 31 | |
| 32 | FORMAT Defects 8.0; |
| 33 | CALL RANPOI(Seed3, Rate, Defects); |
| 34 | DROP Mean Sigma Z Num DA DB D_Sig De Rate |
| 35 | SEED0 SEED1 SEED2 SEED3 |
| 36 | TestTime TestDate Del Defects; |
| 37 | RUN; |
| 1 | |
| 2 | PROC DATASETS LIBRARY=WORK GENNUM=ALL NOLIST; |
| 3 | DELETE Test_Matrix Records; |
| 4 | RUN; |
| 5 | |
| 6 | QUIT; |
| 7 |
| 1 | PROC EXPORT DATA=Import_This |
| 2 | OUTFILE ="&JES.input_data/import_this.csv" REPLACE; |
| 3 | RUN; |
| 4 | |
| 5 | PROC IMPORT DATAFILE="&JES.input_data/import_this.csv" |
| 6 | OUT =Import REPLACE; |
| 7 | RUN; |