Type : CREATION_INTERNE
Alle Daten werden synthetisch innerhalb des Skripts generiert. Es werden keine externen Datenquellen gelesen. Die Generierung beginnt mit einer DO-Schleife, um eine Parametertabelle zu erstellen, die dann erweitert und mit Zufallsdaten angereichert wird, um einen realen Prozess zu simulieren.
| 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; |