1 กกกกกกกก 1 กกกกกก: SAS Language Elements กกกก : กกกกกกกกกกกกกกกกกกกกกกกกกก (STATISTICAL DATA PROCESSING) กกกกกกกกกกกกกกก: SAS กกกกกกก? กกกกกกกกกกกกกกกกกกกก Formats and Informats กกกกกกกกกกกกกกกกกกกกกกกกกกกกก ARM Macros กกกกกกก กกกกกกกกกกกก SAS SAS กกกกกกก? กกกกกกกกกกก SAS กกกกกกก กกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก -กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกก SAS กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกก SAS: กกกกกกกกก
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
กลมท 1 หวขอ: SAS Language Elementsวชา: การประมวลผลขอมลเชงสถต (STATISTICAL
DATA PROCESSING)
เนอหามดงน:
SAS คออะไร? ตวเลอกของชดขอมล Formats and Informats ฟงกชนและการเรยกชดคำาสง ARM Macros คำาสง ตวเลอกระบบ SAS
SAS คออะไร? พนฐานภาษา SAS ทสนใจ
การตดตงขอมล การจดขอมลและขาวสาร ฟงกชนและการตดตงชดคำาสง -ทผเขยนขนจะมการตอบสนองตอโปรแกรม ทางเลอกของระบบ SAS
สวนใหญการตงคาของชดขอมล SAS สามารถนำาไปใชกบการปอนขอมลหรอการสงออกของชดขอมล SAS ในแตละขนตอนถาเลอกชดขอมลทมความเกยวของกบการปอนขอมล ขอมลจะถกอานถาตวเลอกทปรากฏในชดขอมลหลงจากทมการสงออกจากการกำาหนดในชดขอมลในขนตอน PROC จะมการแสดงผลชดขอมล SAS และจะตองปรากฏอยในขอความ ปจจบนอาจจะไมไดอยใน OUTPUT ใดๆ
ชดขอมลบางชดอาจมการเลอกเชน COMPRESS ซงมความหมายเฉพาะ เมอสรางชดขอมล SAS และมคณสมบตตามทชดขอมลกำาหนดการสรางชดขอมลสามารถเปลยนแปลงตวเลอกอนๆเชน (PW= and LABEL=) กบชดขอมล PROC สำาหรบขอมลเพมเตมโปรดดทคมอขนตอนของชดขอมลในฐาน SAS
1 options obs=100;23 data final;4 set two(obs=5) three;ERROR: File WORK.TWO.DATA does not exist.ERROR: File WORK.THREE.DATA does not exist.5 run;
NOTE: The SAS System stopped processing this step because of errors.WARNING: The data set WORK.FINAL may be incomplete. When this step was stopped there were 0 observations and 0 variables.NOTE: DATA statement used (Total process time): real time 0.19 seconds cpu time 0.03 seconds
6
5
7 proc print data=final;8 run;
NOTE: No variables in data set WORK.FINAL.NOTE: PROCEDURE PRINT used (Total process time): real time 0.01 seconds cpu time 0.01 seconds
Formats and Informants
ความหมายของรปแบบรปแบบเปนชนดขององคประกอบภาษา SAS ทใชรปแบบหรอรนคำา
สงสำาหรบคาขอมลทจะแสดงหรอเขยนเปนเอาทพท ประเภทของรปแบบสอดคลองกบชนดขอมลของ ตวอกษร, ตวเลข, วนท, เวลาหรอการประทบเวลา ความสามารถในการสรางรปแบบทผใชกำาหนดยงสนบสนนตวอยางของรปแบบ SAS เปนไบนาร, วนท, และคำาพด ตวอยางเชน WORDS22 รปแบบซงจะแปลงคาตวเลขทเทยบเทาของพวกเขาในคำาพดเขยนคาตวเลข 692 เปน six hundred ninety-two.วากยสมพนธ
ไวยกรณ Formats SASไวยกรณ Formats SAS มตอไปน:<$> formats< w > . < d >
จดรปแบบ ชอรปแบบ รปแบบทเปนรปแบบ SAS หรอรปแบบทผใชกำาหนดทถกกำาหนดไวกอนหนาดวยคำาสงในรปแบบ PROC สำาหรบขอมลเกยวกบผใชกำาหนดรปแบบใหดทขนตอนการจดรปแบบในคมอฐาน SAS
6
w ระบความกวางของรปแบบ ซงรปแบบมากทสดคอจำานวนของคอลมนในผลลพธของขอมล
d ระบปจจยทเลอกทศนยมในรปแบบทเปนตวเลขรปแบบทมกจะประกอบดวยรอบระยะเวลา (.) เปนสวนหนงของ
ชอ ถาคณละเวน w และ d คาจากรปแบบ SAS ใชคาเรมตน d คาทคณระบมรปแบบทบอก SAS เพอแสดงตำาแหนงทศนยมทมจำานวนมาก รปแบบทไมเคยเปลยนแปลงหรอตดเกบไวภายในคาขอมล ตวอยางเชนใน DOLLAR10.2 คา w จาก 10 ระบสงสด 10 คอลมน สำาหรบคา d จาก 2 ระบวาทงสองคอลมนนเปนสวนทศนยมของคาซงใบแปดคอลมนสำาหรบทกตวอกษรทเหลออยในคา คอลมนทเหลอรวมจดทศนยมคาตวเลขทเหลอเครองหมายลบถาคาเปนลบเครองหมายดอลลารและเครองหมายจลภาค
ถารปแบบความกวางแคบเกนไปทจะเปนตวแทนของคา SAS จะพยายามทบบคาลงในพนทวาง รปแบบตวอกษรตดทอนคาทางดานขวา รปแบบตวเลขบางครงกลบไปทดทสดของ WD รปแบบ SAS พมพเครองหมายดอกจนถาคณไมไดระบความกวางเพยงพอ ในตวอยางตอไปนผลทไดคอ x = **
x = 123;put x = 2.;
ถาคณใชรปแบบทไมถกตอง เชน การใชรปแบบตวเลขในการเขยนตวอกษรโปรแกรม SAS จะพยายามใชรปแบบคลายกบประเภทอนๆ หากเกดขอผดพลาดโปรแกรม SAS จะอธบายถงปญหาทเกดขน
จะพมพคำาสง PUT หลงจากทชอตวแปรจะใชรปแบบการเขยนคาของขอมล ตวอยางเชน DOLLAR w. d รปแบบการเขยนคาตวเลขสำาหรบจำานวนเงนทเปนจำานวนเงน
amount=1145.32;put amount dollar10.2;
DOLLAR w. d ในรปแบบคำาสง PUT จะไดผลดงน$ 1,145.32
ดขอมลเพมเตมไดท PUT ฟงกชน : พจนานกรมสำาหรบขอมลเพมเตม ฟงกชน PUT, PUTC หรอ PUTN
ฟงกชนแปลง PUT ตวแปรทเปนตวเลข ตวอกษร ตวแปร หรอคาคงทใด ๆ โดยใชรปแบบทถกตองและสงผลในรปคาตวอกษร ตวอยางเชนคำาสงตอไปน แปลงคาของตวแปรทเปนตวเลขในการแทนเลขฐานสบหกสองตวอกษร
num=15; char=put(num, hex2.);
ฟงกชน PUT สงกลบคาของ 0F ซงมการกำาหนดคาใหกบตวแปรฟงกชน PUT จะเปนประโยชนสำาหรบการแปลงคาตวเลขใหกบคาตวอกษรสำาหรบขอมลเพมเตมโปรดดท PUT ฟงกชน ในฟงกชนและ SAS การปฏบต CALL ขอมลอางอง
ตวแปรทเปนตวเลขทมรปแบบทเปนตวเลข SAS จะใชรปแบบการเขยนคาของตวแปรทคณระบ ตวอยางเชนคำาสงตอไปน ในขนตอนขอมลรวมจลภาค w . d รปแบบตวเลขกบตวแปร SALES1 ผาน SALES3
format sales1-sales3 comma10.2; หมายเหต : ถาคณกำาหนดรปแบบดวยกบคำาสงรปแบบกอนทจะสง PUT ทกชองวางนำากำาลงตด รปแบบทเกยวของกบตวแปรโดยใชคำาสง FORMAT ปรบปรงในคำาสง PUT ทตามมา สำาหรบรายละเอยดเกยวกบการใชการปรบปรงรปแบบด PUT คำาชแจงรายการ ในรายงาน SAS ขอมลอางอง
เมอคณระบรปแบบในคำาสง PUT SAS จะใชรปแบบการเขยนคาของขอมลในระหวางขนตอนขอมล แตไมไดอยางถาวรเชอมโยงรปแบบทมตวแปร อยางถาวรเชอมโยงรปแบบทมตวแปรใชคำาสงรปแบบหรอคำาสง attrib ในขนตอนขอมล SAS รวมงานอยางถาวรในรปแบบทมตวแปรโดยการปรบเปลยนขอมลทบงชในชดขอมล SAS
ใชคำาสงรปแบบหรอคำาสง attrib ในขนตอน PROC รปแบบทมตวแปรสำาหรบ ขนตอน PROC นนเชนเดยวกบขอมลใด ๆ ทเอาทพทชดวาขนตอนการสรางทมตวแปรทจดรปแบบ สำาหรบขอมลเพมเตมเกยวกบการใชรปแบบในขนตอน SAS ด คาทจดรปแบบ ในฐาน SAS ขนตอนคมอ
Informatsความหมายของ Informats
informat เปนชนดขององคประกอบภาษา SAS ทใชรปแบบหรอรนคำาสงสำาหรบคาขอมลทจะอานเปน input ประเภท informats สอดคลองกบชนดขอมลของตวอกษร, ตวเลข, วนท, เวลาหรอการประทบเวลาความสามารถในการสรางผใชกำาหนด informats ยงสนบสนน ตวอยางของ informats SAS เปนวนท, ไบนาร และจลภาค ตวอยางเชนคาตอไปนมเครองหมายดอลลารและจลภาค
$ 1,000,000ในการลบเครองหมายดอลลาร ($) และเครองหมายจลภาค (,) กอนทการจดเกบคาตวเลขในตวแปร 1000000 อานคานดวย COMMA11 informat ถาคณกำาหนดตวแปรแรก SAS ใช informat เพอตรวจสอบวาตวแปรเปนตวเลขหรอตวอกษร SAS ยงใช informat เพอกำาหนดความยาวของตวแปรตวอกษรไวยกรณ Informat SASไวยกรณ Informat SAS มตอไปน:<$> informat < w >. < d >
Informats ประกอบดวยรอบระยะเวลา (.) เปนสวนหนงของชอ ถาคณละเวน w และ d คาจาก informat SAS ใชคาเรมตน หากขอมลทมจดทศนยม SAS ละเวน d มลคาและอานจำานวนตำาแหนงทศนยมทเปนจรงในการปอนขอมล
เมอปญหาเกดขนกบ informat SAS เขยนบนทกลงในบนทก SAS และกำาหนดคาทหายไปใหกบตวแปร ปญหาทเกดขนถาคณใช informat เขากนไมไดเชน informat ตวเลขการอานขอมลตวอกษรหรอถาคณระบความกวางของ informat วนทและเวลาททำาให SAS การอานอกขระพเศษในคอลมนสดทาย
$ w. informat ตวอกษรทอานคาลงสไตลตวแปร w . d ตวเลข informat อานคาลงราคาตวแปลสำาหรบการอภปรายทสมบรณของคำาสง INPUT ใหด คำาชแจง INPUT ในรายงาน SAS ขอมลอางอง
ดวย INPUT, INPUTC และฟงกชน INPUTN
SAS ใช informat ระบ informat กำาหนดวาคาผลลพธเปนตวเลขหรอตวอกษร ดงนนฟงกชน Input เปนประโยชนสำาหรบการแปลงขอมล ตวอยางเชน
บงชสญญาณจะขนอยกบสภาพแวดลอมการทำางานของคณ เมอไอบเอม mainframes ปายจะแสดงโดยแทะลาสด ทมรปแบบ C หมายถงคาบวก และ D หมายถงคาลบ ดวย informats, A, C, E, F และระบคาเปนบวกและ B และ D ระบคาลบใดๆ และอนๆไมถกตองสำาหรบลงนาม
สำาหรบการเปนตวแทนทศนยมบรรจระบไวขางตน X ระบจำานวนของตวเลขทเปนตวแทนและ W มจำานวนไบต สำาหรบ PIC S9 (X) บรรจทศนยม W มceil ((x 1) / 2) . สำาหรบ PIC 9 (X) บรรจทศนยม W มceil (x / 2) . ตวอยางเชน PIC S9 (5) บรรจทศนยมเปนตวเลขหาหลก ถาสญญาณรวม Nibbles หกมความจำาเปน ceil ((5 +1) / 2) มความยาวสามไบตและความคมคาของ W คอ 3
โปรดทราบวาคณสามารถใชแทน COMP-3 สำาหรบบรรจทศนยม ไอบเอมในภาษาประกอบ สง P บงชทศนยมบรรจและคำาสง Z บงชทศนยมโลโก ตอไปนแสดงใหเหนถงขอความทตดตอนมาจากรายการของภาษาประกอบแสดงใหเหนถงการชดเชย
offset value (in hex) inst label directive
+000000 00001C 2 PEX1 DC PL3'1' +000003 00001D 3 PEX2 DC PL3'-1'+000006 F0F0C1 4 ZEX1 DC
ZL3'1'
22
+000009 F0F0D1 5 ZEX2 DC ZL3'1'
ใน PL / I, แอตทรบวตทศนยมถาวรถกนำามาใชรวมกบขอมลทศนยมบรรจ คณตองใชสเปคภาพทจะเปนตวแทนขอมลทศนยมโลโก ไมมการแสดงมาตรฐานของขอมลทศนยมสำาหรบ Fortran หรอภาษา C สรปสาระสำาคญของบรรจกลองรปแบบทศนยมทศนยมและโลโกและ Informats
ฟงกชนของ SAS ดำาเนนการคำานวณหรอการจดการระบบในขอขดแยงและสงกลบคา การทำางานสวนใหญใชขอขดแยงของผใชงาน แตมจำานวนผใชไมมากทไดรบจากสภาพแวดลอมการทำางานในซอฟแวรฐาน SAS คณสามารถใชฟงกชนของ SAS ในขนตอนการสรางขอมล ในการสงผานขอมลของ WHERE ในภาษาทผใชเขยนขนเอง ใน PROC REPORT และในโครงสรางภาษาตอบคำาถาม (SQL)บางขนตอนทางสถตใชฟงกชนของ SAS ดวย และมากกวานน SAS ซอฟแวรอนทสามารถใชในขนตอนการสรางขอมล อางถงการเตรยมเอกสารทเปนของ SAS ซอฟแวร ทใชในขอมลเพมเตมของฟงกชนเหลานความหมายของการเรยกชดคำาสงการเรยกชดคำาสงปรบเปลยนคาของตวแปรหรอสรางระบบฟงกชนอนๆ การเรยกชดคำาสงกเหมอนฟงกชน แตคณไมสามารถใชมนในงานทไดรบหมอบหมายไดชดคำาสงของ SAS ทงหมดนน ถกอางกบการเรยก นนกคอ ชอของชดคำาสงตองปรากฏหลงคยเวรดในการเรยก
ปญหาฟงกชนของสถตพรรณนาSAS สรางฟงกชนทคนคาสถตพรรณนา ยกเวนฟงกชนทหายไป คอฟงกชนทกอใหเกดการผลตทางสถตโดย MEANS วธการคำานวณแตละสถตถกแลกเปลยนในขนตอนการสรางสถตเบองตนโดย SAS ในการ
30
แนะนำาขนตอนพนฐานของ SAS ไดคำานวณสถตพรรณนาสำาหรบคาทไมไดหายไปของขอขดแยงฟงกชนทางการเงนSAS สรางกลมของฟงกชนทใชในการคำานวณทางการเงน มนถกจดกลมดงน:
ตวอยางตอไปนตรวจสอบรายการของหมายเลขโทรศพท การจะมความถกตองหมายเลขโทรศพทจะตองมหนงในรปแบบดงตอไปน (XXX) XXX-XXXX or XXX-XXX-XXXX. data _null_; if _N_ = 1 then do; paren = "\([2-9]\d\d\) ?[2-9]\d\d-\d\d\d\d"; dash = "[2-9]\d\d-[2-9]\d\d-\d\d\d\d"; regexp = "/(" || paren || ")|(" || dash || ")/";
44
retain re; re = prxparse(regexp); if missing (re) then do; putlog "ERROR: Invalid regexp " regexp; stop; end; end; length first last home business $ 16; input first last home business; if ^prxmatch(re, home) then putlog "NOTE: Invalid home phone number for " first last home; if ^prxmatch(re, business) then putlog "NOTE: Invalid business phone number for " first last business; datalines; Jerome Johnson (919)319-1677 (919)846-2198 Romeo Montague 800-899-2164 360-973-6201 Imani Rashid (508)852-2146 (508)366-9821 Palinor Kent . 919-782-3199 Ruby Archuleta . . Takei Ito 7042982145. Tom Joad 209/963/2764 2099-66-8474 ; รายการตอไปนตรงกบสายทมหมายเลขในขนตอนขอมลทแสดงไวดานบน 1.สรางขนตอน ขอมล
โทรศพท ธรกจไม คำาสง PUTLOG เขยน บนทกลงในบนทก SAS ตอไปนถกเขยนไปยง Log SAS:
NOTE: Invalid home phone number for Palinor Kent NOTE: Invalid home phone number for Ruby Archuleta NOTE: Invalid business phone number for Ruby Archuleta NOTE: Invalid home phone number for Takei Ito 7042982145NOTE: Invalid business phone number for Takei Ito NOTE: Invalid home phone number for Tom Joad 209/963/2764NOTE: Invalid business phone number for Tom Joad 2099-66-8474 ตวอยางท 2: การแทนทขอความ
คณสามารถใชนพจนปกต Perl เพอหาตวอกษรทเฉพาะเจาะจงภายในสตรง จากนนคณสามารถลบตวอกษรหรอแทนทพวกเขากบตวแบบอน ๆ ในตวอยางนทงสองเหตการณทเกดขนจากตวอกษรนอยกวา (<) จะถกแทนทดวย <และทงสองเหตการณทเกดขนจากตวแบบทใหญกวา (>) จะถกแทนทโดย>data _null_; if _N_ = 1 then do; retain lt_re gt_re; lt_re = prxparse('s/</</'); gt_re = prxparse('s/>/>/'); if missing(lt_re) or missing(gt_re) then do; putlog "ERROR: Invalid regexp."; stop; end; end; input; call prxchange(lt_re, -1, _infile_); call prxchange(gt_re, -1, _infile_);
47
put _infile_; datalines4; The bracketing construct ( ... ) creates capture buffers. To refer to the digit'th buffer use \<digit> within the match. Outside the match use "$" instead of "\". (The \<digit> notation works in certain circumstances outside the match. See the warning below about \1 vs $1 for details.) Referring back to another part of the match is called backreference.;;;;
การ Debugging output SASPRXPARSE: Compiling REx `[bc]d(ef*g)+h[ij]k$'size 41 first at 1rarest char g at 0rarest char d at 0 1: ANYOF[bc](10) 10: EXACT <d>(12) 12: CURLYX[0] {1,32767}(26) 14: OPEN1(16) 16: EXACT <e>(18) 18: STAR(21) 19: EXACT <f>(0) 21: EXACT <g>(23) 23: CLOSE1(25) 25: WHILEM[1/1](0)
50
26: NOTHING(27) 27: EXACT <h>(29) 29: ANYOF[ij](38) 38: EXACT <k>(40) 40: EOL(41) 41: END(0)anchored `de' at 1 floating `gh' at 3..2147483647 (checking floating) stclass `ANYOF[bc]' minlen 7 PRXMATCH: Guessing start of match, REx `[bc]d(ef*g)+h[ij]k$' against `abcdefg_gh_'...Did not find floating substr `gh'...Match rejected by optimizerสำาหรบคำาอธบายรายละเอยดของการสงออกในการแกปญหา Perl, ในการอางอง PRXDEBUG CALL ในภาษา SAS: พจนานกรม
ฟงกชนฐาน SAS สำาหรบการใชงานในเวบ
ฟงกชนทจดการเนอหาบนเวบทเกยวของทมอยในฐาน SAS ซอฟแวร HtmlEncode และ URLENCODE สตรงเขารหส HTMLDECODE และ URLDECODE สตรงถอดรหส สำาหรบขอมลเกยวกบเวบทใชเครองมอการ SAS ทำาตามการเชอมโยงชมชนกบการสนบสนนลกคา SAS support.sas.com
ARM Macros
คำาอธบายของ ARM MacrosARM Macros เปนวธในการวดประสทธภาพของโปรแกรมทพวก
เขาดำาเนนการใช Macros เขยนบนทกรายการลงในบนทก
51
ของ ARMARM log คอผลลพธไฟลขอความภายนอกทมการบนทกเขา ARM ทำารายการคณใส ARM Macros ลงในโปรแกรม SAS ของคณทจดยทธศาสตรเพอทจะสรางสง ARM API เรยกฟงกชนฟงกชน API ARM เรยกโดยทวไปแลวจะเขาสเวลาสงและขอมลอน ๆ ทเกยวของไปยงแฟมบนทกการวดเวลาระหวาง ARM API เรยกฟงกชนเหลานทำาใหการวดการเวลาตอบสนองโดยประมาณ
ARMmacros มขอมลในตวและไมสงผลกระทบตอรหสทอยโดยรอบๆ
โดยมเงอนไขวาชอตวแปรผานการเปนตวเลอกในการ ARM macros มความเปนเอกลกษณ ARM macros ทใชในรหสเปด (รหสทไมไดอยในขนตอน PROC หรอ DATA) และในการจดเตรยมขอมลหรอ SCL environments.
มสองประเภทของแมโคร ARM คอ:
-ARM macros การใชงานเครองมอ
-macros หลงการประมวลผล ARM ทจะใชกบการเขาสระบบ ARM macrosหมายเหต: ARM macros ไมใชสวนหนงของสงอำานวยความสะดวก SAS Macro พวกเขาเปนสวนหนงของอนเตอรเฟซ SAS ARM เหนการตรวจสอบประสทธภาพการใชการวดการตอบสนองการใชงาน (ARM) สำาหรบขอมลเกยวกบอนเตอรเฟซ SAS ARM ทประกอบดวยการดำาเนนการของ API ARM เปนตวแทน ARM,ARM macros และ ARM system options
52
การใช ARM Macrosภาพรวมของ ARM Macros
ARM macros เรยกใช ARM API function ARM macros โดยอตโนมตการจดการรหสกลบมาจาก ARM API การเรยกฟงกชน ARM API การเรยกฟงกชนจะดำาเนนการในซอฟตแวรทม SAS ARM macros และการเรยกฟงกชนเหลานเปนวธการวดประสทธภาพการทำางานของ SAS applications ขณะทพวกเขากำาลงทำางานอยสำาหรบ ARM API แตละการเรยกฟงกชนม macros ทสอดคลองกนตารางตอไปนแสดงใหเหนถงความสมพนธระหวาง SAS ARM macros และ ARM API function calls:
ตารางความสมพนธระหวาง SAS Macros ARM และฟงกชน API ARM
SAS ARM Macro
ARM API Function Call
%ARMINIT ARM_INIT%ARMGTI
DARM_GETID
%ARMSTRT
ARM_START
%ARMUPDT
ARM_UPDATE
%ARMSTOP
ARM_STOP
%ARMEND ARM_ENDSAS ARM macro ARM API function call.
สามารถใชได ARM macros ดงตอไปน
53
%ARMINIT Macro สรางการเรยกใชฟงกชน ARM_INIT ซงชอโปรแกรมและเลอกผใชของโปรแกรมและทำาการเรมตน ARM environment สำาหรบโปรแกรม โดยปกตคณจะใสmacro นในรหสของคณอกครง
ARM macros สามารถทำางานไดภายในการจดการขอมลหรอในรหสเปด ใชตวแปร _ARMACRO หรอ MACONLY = yes | no ตวเลอก macros ทจะบอกการดำาเนน macros ซงโหมดนจะถกนำามาใช สำาหรบขอมลเพมเตมโปรดดทการตงคาของสงแวดลอม
การใชตวแปรทม ARM MacrosARM macros ใชตวแปรทจะสงรหสและขอมลอน ๆ จากทหนงไป
ยงอก macros เพราะ ARM macros function ภายในการจดเตรยมขอมลเดยวกนขามการจดเตรยมขอมลและในรหสเปดตวแปรทใชโดย macros สามารถใชรปแบบของขอมลทตวแปรขนตอนหรอตวแปร macros ตามทกำาหนดโดยเศรษฐกจมหภาค
การจดเตรยมตวแปร SAS DATA จะใชในการสงผานขอมล ID ระหวางสองหรอมากกวา ARM macros ในการจดเตรยมขอมลเดยวกน การจดเตรยมตวแปร SAS DATA จะใชในการสงผานขอมล ID ระหวาง
55
สองหรอมากกวา ARM macros ใน DATA step environment แตไมไดอยใน SCL environment คำาสง DROP ถกสรางขนสำาหรบตวแปรเหลานเพอใหพวกเขาจะไมรวมอยโดยไมตงใจในชดขอมลทสงออก
หากขอมลท ID จะตองผานระหวางสองหรอมากกวา ARM macros ขามการจดเตรยมขอมลทแยกตางหาก,
แลวตวแปร Macros ทถกนำามาใช
SAS DATA step variables และ macro variables เปนทนำามาใชทวโลก ดงน
Global ARM Macro VariablesVariable Description Set By Used as Input
by_ARMA
PIDapplication ID
%ARMINIT %ARMEND_ARMT
XIDtransaction class ID
%ARMGTID %ARMSTRT_ARMS
HDLstart handle %ARMSTRT %ARMUPDT,
%ARMSTOP_ARMR
Cerror status %ARMUPDT
%ARMSTOP%ARMEND
none
_ARMGLVL
global level indicator
calling program
all
_ARMTLVL
target level indicator
calling program
all
_ARMEXEC
global enablement
calling program
all
_ARMACRO
open code enablement
calling program
all
56
_ARMSCL
SCL code enablement
calling program
All
วตถประสงคของ ARM API 3 ขอทระบใน วตถประสงคของ ARM API ดงตอไปน
การใชงานทเปนตวแทนของระบบทคณกำาลงสราง,เชน สนคาคงคลงหรอโปรแกรมสงคำาสง เพราะอนเตอรเฟซ SAS กบ API ARM ใหผลรวมกบพนฐานตอการประยกตใชคณอาจตองการทจะพจารณานเมอคณกำาหนดขอบเขตโปรแกรมของคณ
API ARM ใชตวบงชตวเลขหรอรหสทไมซำากนการระบ ARM ทมอนพทและเอาทพทจาก ARM macros ชนสามท
o แตกตางรหสโปรแกรมo รหสรายการคลาสo เรมตนจดการ (เวลาเรมตน) สำาหรบกรณรายการกนของรหส
ทสอดคลองกบ ARM ชนสามเปน
57
การจดการ ID การใช ARM macrosตวอยางเหลานแสดงใหเหนถงวธการท ARM macros
ทำางาน ARM macros โดยอตโนมตการจดการรหสการประยกตใชรหสการทำาธรกรรม และเรมตนจดการการจดการ ID และเรมตนทำางานไดดทสดในรปแบบการเรยก ARM งาย ด ARM แบบแผน macros ทซบซอนสำาหรบขอมลเพมเตม โดยคาเรมตน ARM macros ใชรหสทถกสรางขนมาจากการเรยก macros ลาสด ตวอยางตอไปนแสดงใหเหนถงวธการใชงานทงหมดของ ARM macros:
/*global macro variable to indicate ARM macros are outside the data step*/%let _armacro=1;
/* start of the application */%arminit(appname='Sales App', appuser='userxyz');
/* define the transaction classes */%armgtid(txnname='Sales Order', txndet='Sales Order Transaction'); /* more arm_getid calls go here for different transaction classes */
/* start of a transaction */%armstrt;
data_null_; /* place the actual transaction code here *//* update the status of the transaction as it is running */%armupdt(data='Sales transaction still running...',maconly=no);run;
/* place the actual transaction stop here *//* the transaction has stopped */%armstop(status=0);
/* end of the application */%armend;
58
การจดการ ID ทงหมดจะดำาเนนการโดย macros โดยไมตองเรยกโปรแกรมเพอตดตามรหส macros ในตวอยางกอนหนานใชในแตละสวนใหญสรางขนลาสดคา ID จาก macros กอนหนาตวอยางตอไปนเหมอนกนแตความเหนอธบายผานของรหสในรายละเอยดเพมเตมไดท:
%let _armacro=1;
/* * This %arminit macro will generate both a SAS * variable and global macro variable by the name * of _armapid and set it in the ID that is returned * from the arm_init() function call that is * wrapped by the macro. */ %arminit(appname='Sales App', appuser='userxyz');
/* * This %armgtid macro uses the _armapid SAS variable * as input to the arm_getid() function call that it wraps. * It also generates both a SAS variable and global macro* variable by the name of _armtxid and sets them to the* ID that is returned from the arm_getid function call that* it wraps. */ %armgtid(txnname='Sales Order', txndet='Sales Order Transaction');
/* * Because we are still in the same DATA step, the %armstrt * macro below will use the _armtxid SAS variable that is * generated from the previous %armgtid macro as input * to the arm_start() function call that it wraps. It * also generates an _armshdl variable. */ %armstrt;
/* * The %armupdt call below uses the _armshdl SAS variable * that is generated from the previous %armstrt macro. */ %armupdt(data='Sales transaction still running...');
/* * The armstop call also uses the same _armshdl SAS * variable from the %armstrt. */ %armstop(status=0);
59
/* * The %armend call uses the _armapid SAS variable * generated by the %arminit macro earlier to end * the application. */ %armend;
run;
คณไดรหส ARM macros ทงทแตกตางกนการจดเตรยมขอมลดงตอไปนและบรรลผลเดยวกน:
run;
data_null_; /* note the start of the transaction */ %armstrt;
/* place the actual transaction here */run;
data_null_; /* update the status of the transaction as it is running */ %armupdt(data='Sales transaction still running...');run;
data_null_;/* place the actual transaction stop here */
/* note that the transaction has stopped */ %armstop(status=0);run;
data_null_;/* note the end of the application */ %armend;run;
/* WRONG! This assumes that the %armupdt is updating * the first transaction. However, it is actually updating the * second transaction instance because _armshdl contains the value * from the last macro call that was executed, which is the second * transaction. */data_null_; %armupdt(data='txn instance 1 still running...');
/* start transaction instance 1 and save the ID using shdlvar= */data_null_; %armstrt(shdlvar=savhdl1 );run;
61
/* start transaction instance 2 and save the ID using shdlvar= */data_null_;/*armstrt(shdlvar=savhd12 );run;
/* Now use the shandle= parameter after retrieving the first id. */data_null_; %armupdt(data='updating txn 1', shdlvar=savhdl1);run;
/* Use the same technique to stop the transactions *//* in the order they were started. */data_null_; %armstop(shdlvar=savhdl1); %armstop(shdlvar=savhdl2); %armend();run;
ในตวอยางกอนหนานแสดงใหเหนถงใชตวเลอก var * ลดความซบซอนของรหสเทคนคกอนหนานจะแนะนำาสำาหรบใชในทก ARM macro calls
ตวอยางตอไปนแสดงใหเหนถงวธการใชทงหมดของตวเลอก var * ไดโดยอตโนมตการจดการรหสสำาหรบการใชงานพรอมกน transaction classes, transaction instances และกรณรายการมความสมพนธ
การกำาหนดตวชวดของผใชงานใน ARM macroตวชวดทเปนตอบโตวดตวเลข ID, หรออกขระทคณกำาหนด คณ
สามารถระบหนง หรอมากกวาตวชวดสำาหรบแตละชนรายการ ARM เมอชวงเรมตน (ตวอยางของชนรายการ) จะเรมตนการปรบปรง หรอหยด, การประยกตใชคาทบงชสำาหรบตวชวดและเขยนมนไปยงลอก ARM โดยตวแทน ARM
/* name and define the user defined metrics */%armgtid(txnname='Sales Order', txndet='Sales Order Transaction', metrnam1=aname, metrdef1=count32); /* aname is the NAME of the metric and can be anything up to 8 characters */
/* start of user defined metric *//* initial value of the metric */%armstrt(metrval1=0);
datamyfile;../*some SAS statements*/.end=EOF;run;
/* value of the metric is the automatic observation */%armupdt(data='Sales transaction still running...',maconly=no, metrval1=_N_);
datamyfile;../*more SAS statements*/.if EOF then
/* value of the metric is at the highest observation count */%armstop(status=0, metrval1=_N_,maconly=no);run;
65
%armend;
นยาม Correlators ใน ARM Macrosหลกหรอรายการหลกจะมองคประกอบหลายหรอรายการลกทซอน
%armgtid(appidvar=appid,txnname='TranCls',txndet='Transaction Class Def',txnidvar=txnid);%armstrt(txnidvar=txnid,corr=1,shdlvar=HDL100);%armstrt(txnidvar=txnid,corr=0,shdlvar=HDL200<,...user metrics>);%armstrt(txnidvar=txnid,corr=2,shldvar=HDL110,parntvar=HDL100);%armstrt(txnidvar=txnid,corr=3,shldvar=HDL120,parntvar=HDL100);%armstrt(txnidvar=txnid,corr=2,shldvar=HDL130,parntvar=HDL100);%armstrt(txnidvar=txnid,corr=2,shldvar=HDL121,parntvar=HDL120);%armstrt(txnidvar=txnid,corr=2,shldvar=HDL122,parntvar=HDL120);...%armstop(shdlvar=HDL200);%armstop(shdlvar=HDL121);%armstop(shdlvar=HDL122);%armstop(shdlvar=HDL120);%armstop(shdlvar=HDL130);%armstop(shdlvar=HDL110);%armstop(shdlvar=HDL100)
การเปดใชงานการประมวลผล ARM Macroการตงคาตวแปร Macro _ARMEXEC
ทงหมด ARM macros จะปดใชงานโดยคาเรมตนเพอแทรก ARM macros ภายในรหสนถกสรางขนทจะไมสงผลใหเกดโดยไมไดตงใจไมไมพงประสงค ทวไปเปดใชงานการทำางานของ ARM macros คณตองตงคาตวแปร macros _ARMEXEC ทวไปเพอคา 1 คาใด ๆ ทอน ๆ สำาหรบการปดการใชงาน macros _ARMEXEC ARM
นอกจากนเพอใหการรวบรวมทเหมาะสมของแมโคร ARM ภายใน SCL คณตองตงคาตวแปรแมโคร_ARMSCL ทวไปถง 1 กอนทจะออกแมโคร ARM ใด ๆ ตวแปรนยบยงรนของงบ DROP ซงเปนสงทไมถกตองใน SCL
การดำาเนน เงอนไข ARM Macroมนจะมประโยชนใหรหส ARM Macro ในโปรแกรมของคณแตพวก
ถาระดบ Value = บน ARM Macro นอยกวาหรอเทากบคา _ARMGLVL แลว Macro จะถกดำาเนนการ ถาระดบ value = บน ARM Macro มากกวาคา _ARMGLVL แลวดำาเนนการ ARM Macro ขาม /* Set the global level to 10 */
มคา 1 หรอ 0 คา 1 ระบวา ARM Macro ทงหมด ARM เกดขนในรหสเปดและคา 0 ระบวา ARM Macro เกดขนเฉพาะในการจดเตรยมขอมล คณใชตวเลอก MACONLY = ถา ARM Macro บคคลไมไดอยดานนอกของสภาพแวดลอมของโลกทกำาหนดโดยการตงคา _ARMACRO สำาหรบโปรแกรม SCL คณระบ _ARMSCL มมลคา 1
ตารางตอไปนแสดงใหเหนถง Value สวนกลางตวเลอกชวคราวทจำาเปนและผล
การใช _ARMACRO _ARMSCL และการตงคา ARM Macro Environment
Global Value Temporary Option
Result
%let _ARMACRO=0
;
MACONLY=NO macro is in DATA step
%let _ARMACRO=1
;
MACONLY=YES macro is in open code
%let none macro is in
70
_ARMSCL=1; SCL%let
_ARMSCL=0;none macro is not
in SCLตวอยางตอไปนแสดงใหเหนถงวธการตงคา macro environment ในจดเตรยมขอมล:
/* set global environment */%let _armacro = 1;data_null_; %arminit(appname='Appl 1', appuser='user1', appidvar=appl, maconly=no);/* exception to global value */run;
/* using global setting *//* maconly= parameter not needed */ %armgtid(txnname='Txn 1A', txndet='Txn Class 1A', appidvar=appl, txnidvar=txn1a);???????????????????????????????????????????? macro environment???????? SCL autoexec:/* set global environment */%let _armscl = 1;%let _armexec = 1;???????????????????????????????????????????? macro environment ?? SCL:init: %arminit(appname='Appl 1', appuser='user1', appidvar=appl); %armgtid(txnname='Txn 1A', txndet='Txn Class 1A', appidvar=appl, txnidvar=txn1a);return;main: %armstrt(txnidvar=txn1a,shdlvar=strt1);return;term: %armstop(shdlvar=strt1); %armend(appidvar=app1);return;
การใช macro หลงการประมวลผล ARMหลงการประมวลผล ARM macros นอกจากนยงม เหลาน ARM
macros ระบถงการดำาเนนการตาม ARM SAS พวกเขาจะไมไดเปนสวนหนงของ ARM API มาตรฐาน
หลงจากเขาสระบบขอมลประสทธภาพการทำางานไปยง ARM log,แลวคณสามารถใช ARM macros ในการอานบนทกและสรางขอมล
71
SAS ชดสำาหรบการรายงานและการวเคราะห ชอเรมตนของไฟลจะถก ARMLOG.LOG เพอระบไฟลทสงออกทแตกตางกนใชตวเลอก ARMLOC ระบบ = ม3 macros หลงการประมวลผล ARM คอ:
%ARMCONV Macro แปลงลอก ARM ถกสรางขนใน SAS 9 หรอในภายหลงซงจะเปนรปแบบทเรยบงายเปนปายกำากบ = รปแบบ ARM รายการทใชใน SAS 8.2
%ARMPROC Macro เขาสระบบการประมวลผล ARM และผลหก SAS ชดขอมลทมขอมลจากบนทก ทจะประมวลผล ARM บนทกทมนยาม metadata ใชเกยวกบรายการการเรยนและคาขอมลของผใชในการเรมตนการจดการปรบปรงและหยดทำารายการ
%ARMJOIN Macro กระบวนการหกชดขอมล SAS ทสรางขนโดย ARMPROC% และสรางชดขอมลและมมมอง SQL ทมขอมลทวไปเกยวกบการใชงานและรายการ
สำาหรบ SAS 9 หรอตอมาในรปแบบทเรยบงายของบนทกเขาสระบบ ARM เปนทคนดวยเครองหมายจลภาคซงประกอบดวยจากคอลมนของขอมลทแยกออกจากกนดวยเครองหมายจลภาคตราประทบวนทและเวลาและ ตวระบการเรยกเสมอปรากฏในตำาแหนงคอลมนเดยวกน
รปแบบทใชใน SAS 8.2 คอ ปายกำากบเทากบแบบรายกาและจะงายตอการอาน แตนาเสยดายทSAS ใชเวลามากเวลาการจดรปแบบอกขระและเรองนมผลกระทบตอประสทธภาพการทำางาน ใน SAS 9 หรอในภายหลงบนทก ARM สามารถเปรยบเทยบกบ SAS 8.2ARM log โดยใชวธการดงตอไปน:
1. คณสามารถสราง SAS 9 หรอ ARM log ตอมาและประมวลผลโดยใช SAS 9 หรอ ARMPROC% ในภายหลงและ ARMJOIN%สงผลใหชดขอมลทมสถตสมบรณสำาหรบการสนสดของการจดการชวงเรมตนและจดสนสดของการประยกตใช
72
2. การแปลง SAS 9 หรอในภายหลงแบบลอก ARM SAS 8.2 รปแบบทคณใช SAS ARM macro% ARMCONV
คำาสง
คำานยามของคำาสง
คำาสงของ SAS เปนชดคำาสงทอาจจะรวมถงคำาหลก ชอคำาสง ตวอกษรพเศษ คำาสงของ SAS ทงหมดจะสนสดดวยการปฏบตของการทำางาน SAS หรอการใหขอมลระบบ
สวนนจะครอบคลมสองชนดคำาสง SAS
ผทนำาขนตอนมาใชในการเขยนโปรแกรม ผคนทอยทวโลกสามารถใชโปรแกรม SAS ในทใดกได
ขนตอนวธการใชSAS ใหคำาอธบายรายละเอยดของคำาสง SAS ทมในแตละขนตอนของ SAS โดยเฉพาะ การสงออกของขอมลของ SAS คมอการใชงานจะชวยอธบายรายละเอยดของ output
StatementATTRIB DROP LENGTHBY END RENAMECARDS FORMAT RETAINCARDS4 INFORMAT WHEREDATA KEEP WINDOW
คำาสงทวโลก
คำาสงทวโลกโดยทวไปมการใหขอมลกบระบบ SAS มการขอขอมลหรอขอมลทเคลอนยายไปมาระหวางโหมดทแตกตางกนของการดำาเนนการ ระบบคำาสงมการสงออกในรปแบบทหลากหลาย เชน ในรปแบบ Hypertext markup สามารถใชคำาสงใดกไดในโปรแกรม SAS คำาสงทวไปจะไมดำาเนนการสงเหลานจะมผลทนททระบบ SAS มการรวบรวมในโปรแกรม
นอกจากน SAS เปนผลตภณฑ ของชดคำาสงซอฟแวร สำาหรบขอมลเพมเตมโปรดดทเอกสาร SAS สำาหรบผลตภณฑเหลานน
ตวเลอกระบบ SAS
นยามของตวเลอก ระบบ SAS
75
ตวเลอกระบบเปนคำาสงทมผลกระทบตอชอ SAS ของคณ พวกเขาควบคมวธการท SAS ทำาการดำาเนนการ เชน ระบบเตรยม SAS, ฮารดแวรและซอฟแวรเชอมตอ, และใสคา, การประมวลผล, และการสงออกของงานและ ไฟลSAS
Option Value Information For SAS Option CMPOPT Option Value: (NOEXTRAMATH NOMISSCHECK NOPRECISE NOGUARDCHECK) Option Scope: SAS Session How option value set: Site Administrator Restricted
Your site administrator has not restricted any options.
การกำาหนดวธมลคา SAS ตวเลอก การตงคา ระบบ
เพอตรวจสอบวาคาตวเลอกการตงคาระบบใชขนตอนตวเลอกทมตวเลอกมลคาทระบไวในคำาสงตวเลอก ตวเลอกมลคาแสดงคาตวเลอกทกำาหนดและขอบเขต ตวอยางเชนคำาสงตอไปนเขยนขอความลงในบนทก SAS ทจะบอกคณวาคาตวเลอกสำาหรบ CENTER ตวเลอกถกจดตงระบบ:
proc options option=center value;
run;
ดงตอไปนLog SAS บางสวนแสดงใหเหนวาคาตวเลอกสำาหรบ CENTER เปนคาเรมตนทจดสงโดยผลลพธ
ในระบบ SAS หนาตางตวเลอก : ถาคณอยใน windowing environment เลอกชนดในกลองหรอบนบรรทดคำาสงเพอเปดหนาตางระบบ SAS ตวเลอกระบบ SAS หนาตางตวเลอกแสดงชอของ SAS กลมตวเลอกระบบ จากนนคณสามารถขยายกลมเพอดชอตวเลอกและการเปลยนแปลงการตงคาปจจบนของพวกเขา หรอคณสามารถใชคำาสงตวเลอกคนหาตวเลอกในเมนผดขนทจะไปโดยตรงไปยงตวเลอก การเปลยนแปลงจะมผลทนทและยงคงมผลตลอดทง session จนกวาคณจะตงคาพวกเขาดวยคำาสงตวเลอกหรอเปลยนพวกเขาในหนาตางระบบ SAS ตวเลอก
ขอมลสภาพแวดลอมในการดำาเนนงาน : บน UNIX, Open VMS,และ z/OS hosts,ตวเลอกระบบ SAS สามารถถก จำากด ไดโดยผดแลเวบไซตเพอใหพวกเขาไมสามารถเปลยนแปลงไดโดยผใช ทงนขนอย
81
กบสภาพแวดลอมการปฏบตการของคณตวเลอกระบบสามารถ จำากดสากลโดยกลมหรอโดยผใช คณสามารถใชขนตอนในการตรวจสอบตวเลอกตวเลอกทถก จำากด สำาหรบขอมลเพมเตมเกยวกบวธการทจะ จำากด ตวเลอกใหดทคมอกำาหนดคาสำาหรบสภาพแวดลอม SAS ปฏบตการของคณ สำาหรบขอมลเพมเตมเกยวกบขนตอนการเลอกดเอกสาร SAS สำาหรบสภาพแวดลอมการปฏบตการของคณ
วธ การตงคา ตวเลอก ระบบ ระยะยาว จะมผล
เมอคณระบการตงคา ตวเลอก SAS ระบบการตงคาสามารถใชไดกบทก ขนตอน ทตามมา สำาหรบระยะเวลาของ session SAS หรอจนกวาคณจะ ตงคา ดงทแสดง: