Syntax Overview | V9 ARM Log Format | SAS 9 Examples
Example 1 - define a permanent library to store ARMPROC output
libname user 'f:\arm\user'; %armproc(lib=user); run;
Example 2 - define an ARM log to be read on WIN NT platform
%armproc(log=f:\armlogs\mytest.log); run;
libname user 'f:\arm\user'; %armjoin(libin=user,libout=user); run;
%armstrt(txnidvar=txn1,shdlvar=hdl1,corr=1); %armstrt(txnidvar=txn2,corr=3,parntvar=hdl1,shdlvar=hdl1a); %armstrt(txnidvar=txn2,corr=2,parntvar=hdl1a,shdlvar=hdl2);run;
data _null_; %arminit(appname='Appl 1', appuser='sasjrs'); run; data _null_; %armgtid(txnname='Txn 1', metrNam1=smallStr,metrDef1=short); run; data _null_; %armstrt(metrVal1='Start'); run; data _null_; /* bufftype in ARM log is generated from data parameters entered */ %armupdt(data='FORMAT 2 DATA'); %armupdt(metrVal1='Update'); %armupdt(data='FORMAT 2 DATA',metrVal1='Update'); /* generates warning message */ %armupdt(); /* default no extra data */ run; data _null_; %armstop(status=2,metrVal1='Stop'); run; data _null_; %armend; run;Resulting SAS log:
NOTE: Copyright (c) 1999-2001 by SAS Institute Inc., Cary, NC, USA. NOTE: SAS (r) Proprietary Software Version 9.00 (TS A0) Licensed to SAS Institute Inc., Site 0000000001. NOTE: This session is executing on the WIN_NT platform. NOTE: SAS initialization used: real time 2.81 seconds cpu time 1.92 seconds NOTE: AUTOEXEC processing beginning; file is c:\sasv9\autoexec.sas. NOTE: Libref ARMCAT was successfully assigned as follows: Engine: V9 Physical Name: f:\armv9\sampsio NOTE: AUTOEXEC processing completed. 1 2 data _null_; 3 %arminit(appname='Appl 1', appuser='sasjrs'); 4 run; NOTE: DATA statement used (Total process time): real time 0.37 seconds cpu time 0.25 seconds 5 6 data _null_; 7 %armgtid(txnname='Txn 1', metrNam1=smallStr,metrDef1=short); 8 run; NOTE: DATA statement used (Total process time): real time 0.36 seconds cpu time 0.34 seconds 9 10 data _null_; 11 %armstrt(metrVal1='Start'); 12 run; NOTE: DATA statement used (Total process time): real time 0.27 seconds cpu time 0.28 seconds 13 14 data _null_; 15 /* bufftype in ARM log is generated from data parameters entered */ 16 %armupdt(data='FORMAT 2 DATA'); 17 %armupdt(metrVal1='Update'); 18 %armupdt(data='FORMAT 2 DATA',metrVal1='Update'); /* generates warning message */ WARNING: DATA= parameter found. User metrics ignored. 19 %armupdt(); /* default no extra data */ 20 run; NOTE: DATA statement used (Total process time): real time 0.54 seconds cpu time 0.40 seconds 21 22 data _null_; 23 %armstop(status=2,metrVal1='Stop'); 24 run; NOTE: DATA statement used (Total process time): real time 0.25 seconds cpu time 0.16 seconds 25 26 data _null_; 27 %armend; 28 run; NOTE: DATA statement used (Total process time): real time 0.14 seconds cpu time 0.12 secondsResulting ARM log file (input to %ARMPROC):
I,1326833654.503000,1,1.602304,1.291857,Appl 1,sasjrs G,1326833654.894000,1,1,Txn 1,,smallStr,ShortStr S,1326833655.194000,1,1,1,2.193153,1.371972,Start U,1326833655.745000,1,1,1,2.563686,1.412030,2,FORMAT 2 DATA U,1326833655.745000,1,1,1,2.563686,1.412030,1,Update U,1326833655.745000,1,1,1,2.563686,1.412030,2,FORMAT 2 DATA U,1326833655.745000,1,1,1,2.563686,1.412030,0 P,1326833656.25000,1,1,1,2.703888,1.452088,2,Stop E,1326833656.186000,1,2.814046,1.482131
%let _armacro=1; /* all ARM macros are outside of data steps */ %arminit(appname='test app',getid=yes,txnname='trans1', txndet='txn desc1'); %armstrt; run; %armupdt; run; data one; do i=1 to 100; output; end; run; %armstop; run; %armend; run;Resulting SAS log:
NOTE: Copyright (c) 1999-2001 by SAS Institute Inc., Cary, NC, USA. NOTE: SAS (r) Proprietary Software Version 9.00 (TS A0) Licensed to SAS Institute Inc., Site 0000000001. NOTE: This session is executing on the WIN_NT platform. NOTE: SAS initialization used: real time 2.61 seconds cpu time 1.87 seconds NOTE: AUTOEXEC processing beginning; file is c:\sasv9\autoexec.sas. NOTE: Libref ARMCAT was successfully assigned as follows: Engine: V9 Physical Name: f:\armv9\sampsio NOTE: AUTOEXEC processing completed. 1 %let _armacro=1; /* all ARM macros are outside of data steps */ 2 3 %arminit(appname='test app',getid=yes,txnname='trans1', 4 txndet='txn desc1'); 5 %armstrt; 6 run; 7 %armupdt; 8 run; 9 10 data one; 11 do i=1 to 100; 12 output; 13 end; 14 run; NOTE: The data set WORK.ONE has 100 observations and 1 variables. NOTE: DATA statement used (Total process time): real time 1.30 seconds cpu time 0.20 seconds 15 16 %armstop; 17 run; 18 %armend; 19 run;Resulting ARM log file (input to %ARMPROC):
I,1326834273.473000,1,1.792577,1.542217,test app,* G,1326834273.714000,1,1,trans1,txn desc1 S,1326834274.174000,1,1,1,2.343369,1.572260 U,1326834274.625000,1,1,1,2.623772,1.592289,0 E,1326834276.498000,1,3.4320,1.812606
%let _armacro = 0; data _null_; /* initialize */ rc = 0; appl_id=0; txn_id1=0; txn_stat=0; sHandle1=0; sHandle2=0; sHandle3=0; %arminit(appname="Appl 1"); %armgtid(txnname="Trans 1",txndet="Transaction #1", txnidvar=txn1, metrnam1=1usrcnt32,metrDef1=count32, metrnam2=2gag64, metrDef2=gauge64, metrnam3=3id32, metrDef3=id32, metrnam4=4id64, metrDef4=id64); %armgtid(txnname="Trans 1a",txndet="Transaction 1a",txnidvar=txn2); /* txn_id,correlator func, parent start handle, user metrics....*/ %armstrt(txnidvar=txn1,shdlvar=hdl1,corr=1, metrval1=12, metrval2=34, metrval3=_N_, metrval4=_N_); %armstrt(txnidvar=txn2,corr=3,parntvar=hdl1,shdlvar=hdl1a); %armstrt(txnidvar=txn2,corr=2,parntvar=hdl1a,shdlvar=hdl2); %armstop(shdlvar=hdl2,status=txn_stat); %armstop(shdlvar=hdl1a,status=txn_stat); %armstop(shdlvar=hdl1,status=txn_stat,metrval1=43, metrval2=21, metrval3=_N_, metrval4=_N_); %armend(); run;Resulting SAS log:
NOTE: Copyright (c) 1999-2001 by SAS Institute Inc., Cary, NC, USA. NOTE: SAS (r) Proprietary Software Version 9.00 (TS A0) Licensed to SAS Institute Inc., Site 0000000001. NOTE: This session is executing on the WIN_NT platform. NOTE: SAS initialization used: real time 22.91 seconds cpu time 5.37 seconds NOTE: AUTOEXEC processing beginning; file is c:\sasv9\autoexec.sas. NOTE: Libref ARMCAT was successfully assigned as follows: Engine: V9 Physical Name: f:\armv9\sampsio NOTE: AUTOEXEC processing completed. 1 %let _armacro = 0; 2 3 data _null_; 4 5 /* initialize */ 6 rc = 0; 7 appl_id=0; 8 txn_id1=0; 9 txn_stat=0; 10 sHandle1=0; 11 sHandle2=0; 12 sHandle3=0; 13 14 %arminit(appname="Appl 1"); 15 %armgtid(txnname="Trans 1",txndet="Transaction #1", 16 txnidvar=txn1, 17 metrnam1=1usrcnt32,metrDef1=count32, 18 metrnam2=2gag64, metrDef2=gauge64, 19 metrnam3=3id32, metrDef3=id32, 20 metrnam4=4id64, metrDef4=id64); 21 %armgtid(txnname="Trans 1a",txndet="Transaction 1a",txnidvar=txn2); 22 /* txn_id,correlator func, parent start handle, user metrics....*/ 23 %armstrt(txnidvar=txn1,shdlvar=hdl1,corr=1, 24 metrval1=12, 25 metrval2=34, 26 metrval3=_N_, 27 metrval4=_N_); 28 %armstrt(txnidvar=txn2,corr=3,parntvar=hdl1,shdlvar=hdl1a); 29 %armstrt(txnidvar=txn2,corr=2,parntvar=hdl1a,shdlvar=hdl2); 30 31 %armstop(shdlvar=hdl2,status=txn_stat); 32 %armstop(shdlvar=hdl1a,status=txn_stat); 33 %armstop(shdlvar=hdl1,status=txn_stat,metrval1=43, 34 metrval2=21, 35 metrval3=_N_, 36 metrval4=_N_); 37 %armend(); 38 39 run; NOTE: DATA statement used (Total process time): real time 3.49 seconds cpu time 2.02 secondsResulting ARM log:
I,1326893707.995000,1,3.314766,5.127372,Appl 1,* G,1326893707.995000,1,1,Trans 1,Transaction #1,1usrcnt32,Count32,2gag64,Gauge64,3id32,Id32,4id64,Id64 G,1326893707.995000,1,2,Trans 1a,Transaction 1a S,1326893707.995000,1,1,1,3.314766,5.127372,12,34,1,1 C,1326893707.995000,1,2,2,1,1,3.314766,5.127372 C,1326893708.5000,1,2,3,2,2,3.324780,5.127372 P,1326893708.5000,1,2,3,3.324780,5.127372,0 P,1326893708.5000,1,2,2,3.324780,5.127372,0 P,1326893708.5000,1,1,1,3.324780,5.127372,0,43,21,1,1 E,1326893708.5000,1,3.324780,5.127372
/********************* BASE:BIT PERFORMANCE TEST ********************** NAME: putc.sas PURPOSE: Put statement to DUMMY with character formats VARIES: format AUTHOR: Jason Secosky - jaseco SUPPORT: Jason Secosky - jaseco NOTES: Little I/O to stress data step execution : Not going through ODS : Uses no column controls, and @ & + column controls : Uses frequently used formats : gtidset macro contained in perfauto.sas (base dvd) HISTORY: 07Oct99 created **********************************************************************//*-- gtidsetup is for tests that start more than one ARM 'application' --*/ %macro gtidset(fmt, desc, appid); %if ("&fmt" = "") %then %do; %armgtid(txnname='NONE', txndet='&desc', txnidvar=round1, appidvar=&appid); %armgtid(txnname='NONE', txndet='&desc', txnidvar=round2, appidvar=&appid); %armgtid(txnname='NONE', txndet='&desc', txnidvar=round3, appidvar=&appid); %end; %else %do; %armgtid(txnname='&fmt', txndet='&desc', txnidvar=round1, appidvar=&appid); %armgtid(txnname='&fmt', txndet='&desc', txnidvar=round2, appidvar=&appid); %armgtid(txnname='&fmt', txndet='&desc', txnidvar=round3, appidvar=&appid); %end; %mend; /*-- Turn on ARM macros --*/ %let _armexec = 1; %let _armacro = 1; *%filename( ARMLOG, putc, txt ); options armloc="putc.log"; %arminit(appname='DATASTEP;&sysscpl;&sysvlong', txnname='putc', getid=yes, appidvar=app); %arminit(appname='DATASTEP;&sysscpl;&sysvlong;ABS', txnname='putc', getid=yes, appidvar=appabs); %arminit(appname='DATASTEP;&sysscpl;&sysvlong;REL', txnname='putc', getid=yes, appidvar=apprel); /*------------------------*/ %macro mvsopts; %if %quote(&sysscpl)=%quote(OS/390) or %quote(&sysscpl)=%quote(MVS) %then options stats; %mend; %mvsopts; %let nsteps=3; %put **NSTEPS= &nsteps; %put **DATE= &sysdate9; %put **PUTC**; %let nlines = 80000; /** ** MACRO: LIMSETUP ** Host specific number of lines to output, to vary exec time. **/ %macro limsetup; %if %str(&sysscp) = %str(OS) %then %let nlines = 40000; %mend; %limsetup; %let outfile = nul; %let nelem = 100; %let charsz = 20; filename nul DUMMY; data _null_; file &outfile; x=1; put x=; run; /** ** MACRO: PUTTST ** Use no column controls to output data to default output device. **/ %macro puttst(fmt); %put ##FMT= &fmt; %gtidset(&fmt, PUTC, app); %do i = 1 %to &nsteps; %armstrt(txnidvar=round&i ); data _null_; file &outfile; array arr{&nelem} $ &charsz; do i = 1 to &nelem; arr{i} = repeat('j', &charsz); end; do i = 1 to &nlines; put arr{*} &fmt; end; run; %armstop; %end; %mend; /** ** MACRO: ABSEXP ** Create put statement that uses @ column control. **/ %macro absexp(nelem, fmt); %local i; %do i = 1 %to &nelem; @%eval(&i*(&charsz+1)) arr{&i} &fmt %end; %mend; /** ** MACRO: PUTTST2 ** Use @ column controls to output data to default output device. **/ %macro puttst2(fmt); %put ##FMTABS= &fmt; %gtidset(&fmt, PUTC_ABS, appabs); %do i = 1 %to &nsteps; %armstrt(txnidvar=round&i ); data _null_; file &outfile; array arr{&nelem} $ &charsz; do i = 1 to &nelem; arr{i} = repeat('j', &charsz); end; do i = 1 to &nlines; put %absexp(&nelem, &fmt); end; run; %armstop; %end; %mend; /** ** MACRO: RELEXP ** Create put statement that uses + column control. **/ %macro relexp(nelem, fmt); %local i; %do i = 1 %to &nelem; +3 arr{&i} &fmt %end; %mend; /** ** MACRO: PUTTST3 ** Use + column controls to output data to default output device. **/ %macro puttst3(fmt); %put ##FMTREL= &fmt; %gtidset(&fmt, PUTC_REL, apprel); %do i = 1 %to &nsteps; %armstrt(txnidvar=round&i ); data _null_; file &outfile; array arr{&nelem} $ &charsz; do i = 1 to &nelem; arr{i} = repeat('j', &charsz); end; do i = 1 to &nlines; put %relexp(&nelem, &fmt); end; run; %armstop; %end; %mend; %puttst($); %puttst($&charsz..); %puttst($CHAR&charsz..); %puttst($ASCII&charsz..); %puttst($HEX%eval(&charsz * 2).); %puttst($UPCASE&charsz..); %puttst2($); %puttst2($&charsz..); %puttst2($CHAR&charsz..); %puttst2($ASCII&charsz..); %puttst2($HEX%eval(&charsz * 2).); %puttst2($UPCASE&charsz..); %puttst3($); %puttst3($&charsz..); %puttst3($CHAR&charsz..); %puttst3($ASCII&charsz..); %puttst3($HEX%eval(&charsz * 2).); %puttst3($UPCASE&charsz..); /*-- Unarm application --*/ %armend(appidvar=app); %armend(appidvar=appabs); %armend(appidvar=apprel);SAS log:
NOTE: Copyright (c) 1999-2001 by SAS Institute Inc., Cary, NC, USA. NOTE: SAS (r) Proprietary Software Version 9.00 (TS A0) Licensed to SAS Institute Inc., Site 0000000001. NOTE: This session is executing on the WIN_NT platform. NOTE: SAS initialization used: real time 2.29 seconds cpu time 2.04 seconds NOTE: AUTOEXEC processing beginning; file is c:\sasv9\autoexec.sas. NOTE: Libref ARMCAT was successfully assigned as follows: Engine: V9 Physical Name: f:\armv9\sampsio NOTE: AUTOEXEC processing completed. 1 /********************* BASE:BIT PERFORMANCE TEST ********************** 2 3 NAME: putc.sas 4 PURPOSE: Put statement to DUMMY with character formats 5 VARIES: format 6 AUTHOR: Jason Secosky - jaseco 7 SUPPORT: Jason Secosky - jaseco 8 NOTES: Little I/O to stress data step execution 9 : Not going through ODS 10 : Uses no column controls, and @ & + column controls 11 : Uses frequently used formats 12 : gtidset macro contained in perfauto.sas (base dvd) 13 HISTORY: 07Oct99 created 14 15 **********************************************************************//*-- gtidsetup is 15 ! for tests that start more than one ARM 'application' --*/ 16 %macro gtidset(fmt, desc, appid); 17 18 %if ("&fmt" = "") %then 19 %do; 20 %armgtid(txnname='NONE', txndet='&desc', txnidvar=round1, appidvar=&appid); 21 %armgtid(txnname='NONE', txndet='&desc', txnidvar=round2, appidvar=&appid); 22 %armgtid(txnname='NONE', txndet='&desc', txnidvar=round3, appidvar=&appid); 23 %end; 24 %else 25 %do; 26 %armgtid(txnname='&fmt', txndet='&desc', txnidvar=round1, appidvar=&appid); 27 %armgtid(txnname='&fmt', txndet='&desc', txnidvar=round2, appidvar=&appid); 28 %armgtid(txnname='&fmt', txndet='&desc', txnidvar=round3, appidvar=&appid); 29 %end; 30 %mend; 31 32 /*-- Turn on ARM macros --*/ 33 %let _armexec = 1; 34 %let _armacro = 1; 35 *%filename( ARMLOG, putc, txt ); 36 options armloc="putc.log"; 37 %arminit(appname='DATASTEP;&sysscpl;&sysvlong', txnname='putc', 38 getid=yes, appidvar=app); 39 %arminit(appname='DATASTEP;&sysscpl;&sysvlong;ABS', txnname='putc', 40 getid=yes, appidvar=appabs); 41 %arminit(appname='DATASTEP;&sysscpl;&sysvlong;REL', txnname='putc', 42 getid=yes, appidvar=apprel); 43 /*------------------------*/ 44 45 %macro mvsopts; 46 %if %quote(&sysscpl)=%quote(OS/390) or 47 %quote(&sysscpl)=%quote(MVS) 48 %then options stats; 49 %mend; 50 %mvsopts; 51 52 %let nsteps=3; %put **NSTEPS= &nsteps; %put **DATE= &sysdate9; %put **PUTC**; **NSTEPS= 3 **DATE= 17JAN2002 **PUTC** 53 %let nlines = 80000; 54 55 /** 56 ** MACRO: LIMSETUP 57 ** Host specific number of lines to output, to vary exec time. 58 **/ 59 %macro limsetup; 60 %if %str(&sysscp) = %str(OS) %then 61 %let nlines = 40000; 62 %mend; 63 %limsetup; 64 65 %let outfile = nul; 66 %let nelem = 100; 67 %let charsz = 20; 68 69 filename nul DUMMY; 70 data _null_; file &outfile; x=1; put x=; run; NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 1 record was written to the file NUL. The minimum record length was 3. The maximum record length was 3. NOTE: DATA statement used (Total process time): real time 0.05 seconds cpu time 0.06 seconds 71 72 73 /** 74 ** MACRO: PUTTST 75 ** Use no column controls to output data to default output device. 76 **/ 77 %macro puttst(fmt); 78 %put ##FMT= &fmt; 79 80 %gtidset(&fmt, PUTC, app); 81 %do i = 1 %to &nsteps; 82 83 %armstrt(txnidvar=round&i ); 84 data _null_; 85 file &outfile; 86 array arr{&nelem} $ &charsz; 87 do i = 1 to &nelem; 88 arr{i} = repeat('j', &charsz); 89 end; 90 do i = 1 to &nlines; 91 put arr{*} &fmt; 92 end; 93 run; 94 %armstop; 95 %end; 96 %mend; 97 98 99 /** 100 ** MACRO: ABSEXP 101 ** Create put statement that uses @ column control. 102 **/ 103 %macro absexp(nelem, fmt); 104 %local i; 105 %do i = 1 %to &nelem; 106 @%eval(&i*(&charsz+1)) arr{&i} &fmt 107 %end; 108 %mend; 109 110 111 /** 112 ** MACRO: PUTTST2 113 ** Use @ column controls to output data to default output device. 114 **/ 115 %macro puttst2(fmt); 116 %put ##FMTABS= &fmt; 117 118 %gtidset(&fmt, PUTC_ABS, appabs); 119 %do i = 1 %to &nsteps; 120 121 %armstrt(txnidvar=round&i ); 122 data _null_; 123 file &outfile; 124 array arr{&nelem} $ &charsz; 125 do i = 1 to &nelem; 126 arr{i} = repeat('j', &charsz); 127 end; 128 do i = 1 to &nlines; 129 put %absexp(&nelem, &fmt); 130 end; 131 run; 132 %armstop; 133 134 %end; 135 %mend; 136 137 138 /** 139 ** MACRO: RELEXP 140 ** Create put statement that uses + column control. 141 **/ 142 %macro relexp(nelem, fmt); 143 %local i; 144 %do i = 1 %to &nelem; 145 +3 arr{&i} &fmt 146 %end; 147 %mend; 148 149 150 /** 151 ** MACRO: PUTTST3 152 ** Use + column controls to output data to default output device. 153 **/ 154 %macro puttst3(fmt); 155 %put ##FMTREL= &fmt; 156 157 %gtidset(&fmt, PUTC_REL, apprel); 158 %do i = 1 %to &nsteps; 159 160 %armstrt(txnidvar=round&i ); 161 data _null_; 162 file &outfile; 163 array arr{&nelem} $ &charsz; 164 do i = 1 to &nelem; 165 arr{i} = repeat('j', &charsz); 166 end; 167 do i = 1 to &nlines; 168 put %relexp(&nelem, &fmt); 169 end; 170 run; 171 %armstop; 172 173 %end; 174 %mend; 175 176 177 %puttst($); ##FMT= $ NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 720000 records were written to the file NUL. The minimum record length was 83. The maximum record length was 251. NOTE: DATA statement used (Total process time): real time 9.36 seconds cpu time 9.29 seconds 178 %puttst($&charsz..); ##FMT= $20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 720000 records were written to the file NUL. The minimum record length was 80. The maximum record length was 240. NOTE: DATA statement used (Total process time): real time 7.13 seconds cpu time 7.08 seconds 179 %puttst($CHAR&charsz..); ##FMT= $CHAR20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 720000 records were written to the file NUL. The minimum record length was 80. The maximum record length was 240. NOTE: DATA statement used (Total process time): real time 7.38 seconds cpu time 7.26 seconds 180 %puttst($ASCII&charsz..); ##FMT= $ASCII20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 720000 records were written to the file NUL. The minimum record length was 80. The maximum record length was 240. NOTE: DATA statement used (Total process time): real time 8.95 seconds cpu time 8.89 seconds 181 %puttst($HEX%eval(&charsz * 2).); ##FMT= $HEX40. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 1360000 records were written to the file NUL. The minimum record length was 160. The maximum record length was 240. NOTE: DATA statement used (Total process time): real time 27.31 seconds cpu time 23.04 seconds 182 %puttst($UPCASE&charsz..); ##FMT= $UPCASE20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 720000 records were written to the file NUL. The minimum record length was 80. The maximum record length was 240. NOTE: DATA statement used (Total process time): real time 14.46 seconds cpu time 14.37 seconds 183 184 %puttst2($); ##FMTABS= $ NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 7200000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 250. NOTE: DATA statement used (Total process time): real time 37.75 seconds cpu time 36.69 seconds 185 %puttst2($&charsz..); ##FMTABS= $20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 7200000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 250. NOTE: DATA statement used (Total process time): real time 34.28 seconds cpu time 33.61 seconds 186 %puttst2($CHAR&charsz..); ##FMTABS= $CHAR20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 7200000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 250. NOTE: DATA statement used (Total process time): real time 33.36 seconds cpu time 32.75 seconds 187 %puttst2($ASCII&charsz..); ##FMTABS= $ASCII20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 7200000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 250. NOTE: DATA statement used (Total process time): real time 37.61 seconds cpu time 37.03 seconds 188 %puttst2($HEX%eval(&charsz * 2).); ##FMTABS= $HEX40. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 7280000 records were written to the file NUL. The minimum record length was 40. The maximum record length was 249. NOTE: DATA statement used (Total process time): real time 51.86 seconds cpu time 51.08 seconds 189 %puttst2($UPCASE&charsz..); ##FMTABS= $UPCASE20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 7200000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 250. NOTE: DATA statement used (Total process time): real time 43.62 seconds cpu time 42.93 seconds 190 191 %puttst3($); ##FMTREL= $ NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 800000 records were written to the file NUL. The minimum record length was 236. The maximum record length was 239. NOTE: DATA statement used (Total process time): real time 19.15 seconds cpu time 18.82 seconds 192 %puttst3($&charsz..); ##FMTREL= $20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 800000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 253. NOTE: DATA statement used (Total process time): real time 17.75 seconds cpu time 17.49 seconds 193 %puttst3($CHAR&charsz..); ##FMTREL= $CHAR20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 800000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 253. NOTE: DATA statement used (Total process time): real time 17.66 seconds cpu time 17.39 seconds 194 %puttst3($ASCII&charsz..); ##FMTREL= $ASCII20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 800000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 253. NOTE: DATA statement used (Total process time): real time 20.14 seconds cpu time 19.79 seconds 195 %puttst3($HEX%eval(&charsz * 2).); ##FMTREL= $HEX40. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 1360000 records were written to the file NUL. The minimum record length was 212. The maximum record length was 255. NOTE: DATA statement used (Total process time): real time 36.32 seconds cpu time 35.41 seconds 196 %puttst3($UPCASE&charsz..); ##FMTREL= $UPCASE20. NOTE: The file NUL is: File Name=, RECFM=V,LRECL=256 NOTE: 800000 records were written to the file NUL. The minimum record length was 20. The maximum record length was 253. NOTE: DATA statement used (Total process time): real time 26.28 seconds cpu time 25.83 seconds 197 198 /*-- Unarm application --*/ 199 %armend(appidvar=app); 200 %armend(appidvar=appabs); 201 %armend(appidvar=apprel);V9 Arm log:
I,1326895477.699000,1,1.792577,1.592289,DATASTEP;WIN_NT;9.00.00A0D011602,* G,1326895478.60000,1,1,putc, I,1326895478.110000,2,2.153096,1.632347,DATASTEP;WIN_NT;9.00.00A0D011602;ABS,* G,1326895478.200000,2,2,putc, I,1326895478.240000,3,2.283283,1.632347,DATASTEP;WIN_NT;9.00.00A0D011602;REL,* G,1326895478.340000,3,3,putc, G,1326895478.861000,1,4,$,PUTC S,1326895479.532000,1,4,1,3.434939,1.752520 P,1326895489.166000,1,4,1,12.938604,1.792577,0 G,1326895489.296000,1,5,$20.,PUTC S,1326895489.657000,1,5,2,13.429310,1.792577 P,1326895496.867000,1,5,2,20.549548,1.822620,0 G,1326895497.7000,1,6,$CHAR20.,PUTC S,1326895497.368000,1,6,3,21.40254,1.832635 P,1326895504.929000,1,6,3,28.370795,1.832635,0 G,1326895505.59000,1,7,$ASCII20.,PUTC S,1326895505.419000,1,7,4,28.861500,1.832635 P,1326895514.442000,1,7,4,37.794345,1.862678,0 G,1326895514.602000,1,8,$HEX40.,PUTC S,1326895514.963000,1,8,5,38.285051,1.862678 P,1326895542.352000,1,8,5,61.378257,1.882707,0 G,1326895542.483000,1,9,$UPCASE20.,PUTC S,1326895542.843000,1,9,6,61.868963,1.882707 P,1326895557.364000,1,9,6,76.269670,1.912750,0 G,1326895557.494000,2,10,$,PUTC_ABS S,1326895557.895000,2,10,7,76.730332,1.942793 P,1326895595.779000,2,10,7,113.483180,1.982851,0 G,1326895595.919000,2,11,$20.,PUTC_ABS S,1326895596.320000,2,11,8,114.3929,1.982851 P,1326895630.699000,2,11,8,147.662328,2.22908,0 G,1326895630.840000,2,12,$CHAR20.,PUTC_ABS S,1326895631.210000,2,12,9,148.173062,2.22908 P,1326895664.678000,2,12,9,181.265,2.52952,0 G,1326895664.818000,2,13,$ASCII20.,PUTC_ABS S,1326895665.189000,2,13,10,181.500985,2.62966 P,1326895702.903000,2,13,10,218.614352,2.72980,0 G,1326895703.43000,2,14,$HEX40.,PUTC_ABS S,1326895703.414000,2,14,11,219.125086,2.72980 P,1326895755.369000,2,14,11,270.268627,2.93009,0 G,1326895755.519000,2,15,$UPCASE20.,PUTC_ABS S,1326895755.889000,2,15,12,270.779361,2.103024 P,1326895799.642000,2,15,12,313.821252,2.103024,0 G,1326895799.782000,3,16,$,PUTC_REL S,1326895800.193000,3,16,13,314.331987,2.103024 P,1326895819.441000,3,16,13,333.219145,2.123052,0 G,1326895819.591000,3,17,$20.,PUTC_REL S,1326895819.951000,3,17,14,333.729880,2.123052 P,1326895837.787000,3,17,14,351.285123,2.143081,0 G,1326895837.927000,3,18,$CHAR20.,PUTC_REL S,1326895838.288000,3,18,15,351.785843,2.143081 P,1326895856.63000,3,18,15,369.240942,2.163110,0 G,1326895856.204000,3,19,$ASCII20.,PUTC_REL S,1326895856.564000,3,19,16,369.741662,2.163110 P,1326895876.813000,3,19,16,389.610232,2.183139,0 G,1326895876.953000,3,20,$HEX40.,PUTC_REL S,1326895877.324000,3,20,17,390.100937,2.193153 P,1326895913.736000,3,20,17,425.571942,2.213182,0 G,1326895913.877000,3,21,$UPCASE20.,PUTC_REL S,1326895914.227000,3,21,18,426.52633,2.223196 P,1326895940.615000,3,21,18,451.453142,2.253240,0 E,1326895940.855000,1,452.633401,2.253240 E,1326895940.905000,2,452.683473,2.253240 E,1326895940.945000,3,452.713516,2.263254
The code below converts the ARM log from Example 4 above: SAS Code:
%armconv(login='u:\arm\putc.log',logout='f:\arm\armlogs\putcV8.log'); run;Resulting V8 log:
17JAN2002:14:04:37.699 ARM_INIT AppID=1 AppName=DATASTEP;WIN_NT;9.00.00A0D011602 AppUser=* 17JAN2002:14:04:38.600 ARM_GETID AppID=1 ClsID=1 TxName=putc TxDet= 17JAN2002:14:04:38.110 ARM_INIT AppID=2 AppName=DATASTEP;WIN_NT;9.00.00A0D011602;ABS AppUser=* 17JAN2002:14:04:38.200 ARM_GETID AppID=2 ClsID=2 TxName=putc TxDet= 17JAN2002:14:04:38.240 ARM_INIT AppID=3 AppName=DATASTEP;WIN_NT;9.00.00A0D011602;REL AppUser=* 17JAN2002:14:04:38.340 ARM_GETID AppID=3 ClsID=3 TxName=putc TxDet= 17JAN2002:14:04:38.861 ARM_GETID AppID=1 ClsID=4 TxName=$ TxDet=PUTC 17JAN2002:14:04:39.532 ARM_START AppID=1 ClsID=4 TxSHdl=1 TxName=$ TxDet=PUTC 17JAN2002:14:04:49.166 ARM_STOP AppID=1 ClsID=4 TxSHdl=1 TxStat=0 TxElap=0:00:12.939 TxCpu=0:00:01.793 17JAN2002:14:04:49.296 ARM_GETID AppID=1 ClsID=5 TxName=$20. TxDet=PUTC 17JAN2002:14:04:49.657 ARM_START AppID=1 ClsID=5 TxSHdl=2 TxName=$20. TxDet=PUTC 17JAN2002:14:04:56.867 ARM_STOP AppID=1 ClsID=5 TxSHdl=2 TxStat=0 TxElap=0:00:20.550 TxCpu=0:00:01.823 17JAN2002:14:04:57.700 ARM_GETID AppID=1 ClsID=6 TxName=$CHAR20. TxDet=PUTC 17JAN2002:14:04:57.368 ARM_START AppID=1 ClsID=6 TxSHdl=3 TxName=$CHAR20. TxDet=PUTC 17JAN2002:14:05:04.929 ARM_STOP AppID=1 ClsID=6 TxSHdl=3 TxStat=0 TxElap=0:00:28.371 TxCpu=0:00:01.833 17JAN2002:14:05:05.590 ARM_GETID AppID=1 ClsID=7 TxName=$ASCII20. TxDet=PUTC 17JAN2002:14:05:05.419 ARM_START AppID=1 ClsID=7 TxSHdl=4 TxName=$ASCII20. TxDet=PUTC 17JAN2002:14:05:14.442 ARM_STOP AppID=1 ClsID=7 TxSHdl=4 TxStat=0 TxElap=0:00:37.794 TxCpu=0:00:01.863 17JAN2002:14:05:14.602 ARM_GETID AppID=1 ClsID=8 TxName=$HEX40. TxDet=PUTC 17JAN2002:14:05:14.963 ARM_START AppID=1 ClsID=8 TxSHdl=5 TxName=$HEX40. TxDet=PUTC 17JAN2002:14:05:42.352 ARM_STOP AppID=1 ClsID=8 TxSHdl=5 TxStat=0 TxElap=0:01:01.378 TxCpu=0:00:01.883 17JAN2002:14:05:42.483 ARM_GETID AppID=1 ClsID=9 TxName=$UPCASE20. TxDet=PUTC 17JAN2002:14:05:42.843 ARM_START AppID=1 ClsID=9 TxSHdl=6 TxName=$UPCASE20. TxDet=PUTC 17JAN2002:14:05:57.364 ARM_STOP AppID=1 ClsID=9 TxSHdl=6 TxStat=0 TxElap=0:01:16.270 TxCpu=0:00:01.913 17JAN2002:14:05:57.494 ARM_GETID AppID=2 ClsID=10 TxName=$ TxDet=PUTC_ABS 17JAN2002:14:05:57.895 ARM_START AppID=2 ClsID=10 TxSHdl=7 TxName=$ TxDet=PUTC_ABS 17JAN2002:14:06:35.779 ARM_STOP AppID=2 ClsID=10 TxSHdl=7 TxStat=0 TxElap=0:01:53.483 TxCpu=0:00:01.983 17JAN2002:14:06:35.919 ARM_GETID AppID=2 ClsID=11 TxName=$20. TxDet=PUTC_ABS 17JAN2002:14:06:36.320 ARM_START AppID=2 ClsID=11 TxSHdl=8 TxName=$20. TxDet=PUTC_ABS 17JAN2002:14:07:10.699 ARM_STOP AppID=2 ClsID=11 TxSHdl=8 TxStat=0 TxElap=0:02:27.662 TxCpu=0:00:02.229 17JAN2002:14:07:10.840 ARM_GETID AppID=2 ClsID=12 TxName=$CHAR20. TxDet=PUTC_ABS 17JAN2002:14:07:11.210 ARM_START AppID=2 ClsID=12 TxSHdl=9 TxName=$CHAR20. TxDet=PUTC_ABS 17JAN2002:14:07:44.678 ARM_STOP AppID=2 ClsID=12 TxSHdl=9 TxStat=0 TxElap=0:03:01.265 TxCpu=0:00:02.530 17JAN2002:14:07:44.818 ARM_GETID AppID=2 ClsID=13 TxName=$ASCII20. TxDet=PUTC_ABS 17JAN2002:14:07:45.189 ARM_START AppID=2 ClsID=13 TxSHdl=10 TxName=$ASCII20. TxDet=PUTC_ABS 17JAN2002:14:08:22.903 ARM_STOP AppID=2 ClsID=13 TxSHdl=10 TxStat=0 TxElap=0:03:38.614 TxCpu=0:00:02.730 17JAN2002:14:08:23.430 ARM_GETID AppID=2 ClsID=14 TxName=$HEX40. TxDet=PUTC_ABS 17JAN2002:14:08:23.414 ARM_START AppID=2 ClsID=14 TxSHdl=11 TxName=$HEX40. TxDet=PUTC_ABS 17JAN2002:14:09:15.369 ARM_STOP AppID=2 ClsID=14 TxSHdl=11 TxStat=0 TxElap=0:04:30.269 TxCpu=0:00:02.930 17JAN2002:14:09:15.519 ARM_GETID AppID=2 ClsID=15 TxName=$UPCASE20. TxDet=PUTC_ABS 17JAN2002:14:09:15.889 ARM_START AppID=2 ClsID=15 TxSHdl=12 TxName=$UPCASE20. TxDet=PUTC_ABS 17JAN2002:14:09:59.642 ARM_STOP AppID=2 ClsID=15 TxSHdl=12 TxStat=0 TxElap=0:05:13.821 TxCpu=0:00:02.103 17JAN2002:14:09:59.782 ARM_GETID AppID=3 ClsID=16 TxName=$ TxDet=PUTC_REL 17JAN2002:14:10:00.193 ARM_START AppID=3 ClsID=16 TxSHdl=13 TxName=$ TxDet=PUTC_REL 17JAN2002:14:10:19.441 ARM_STOP AppID=3 ClsID=16 TxSHdl=13 TxStat=0 TxElap=0:05:33.219 TxCpu=0:00:02.123 17JAN2002:14:10:19.591 ARM_GETID AppID=3 ClsID=17 TxName=$20. TxDet=PUTC_REL 17JAN2002:14:10:19.951 ARM_START AppID=3 ClsID=17 TxSHdl=14 TxName=$20. TxDet=PUTC_REL 17JAN2002:14:10:37.787 ARM_STOP AppID=3 ClsID=17 TxSHdl=14 TxStat=0 TxElap=0:05:51.285 TxCpu=0:00:02.143 17JAN2002:14:10:37.927 ARM_GETID AppID=3 ClsID=18 TxName=$CHAR20. TxDet=PUTC_REL 17JAN2002:14:10:38.288 ARM_START AppID=3 ClsID=18 TxSHdl=15 TxName=$CHAR20. TxDet=PUTC_REL 17JAN2002:14:10:56.630 ARM_STOP AppID=3 ClsID=18 TxSHdl=15 TxStat=0 TxElap=0:06:09.241 TxCpu=0:00:02.163 17JAN2002:14:10:56.204 ARM_GETID AppID=3 ClsID=19 TxName=$ASCII20. TxDet=PUTC_REL 17JAN2002:14:10:56.564 ARM_START AppID=3 ClsID=19 TxSHdl=16 TxName=$ASCII20. TxDet=PUTC_REL 17JAN2002:14:11:16.813 ARM_STOP AppID=3 ClsID=19 TxSHdl=16 TxStat=0 TxElap=0:06:29.610 TxCpu=0:00:02.183 17JAN2002:14:11:16.953 ARM_GETID AppID=3 ClsID=20 TxName=$HEX40. TxDet=PUTC_REL 17JAN2002:14:11:17.324 ARM_START AppID=3 ClsID=20 TxSHdl=17 TxName=$HEX40. TxDet=PUTC_REL 17JAN2002:14:11:53.736 ARM_STOP AppID=3 ClsID=20 TxSHdl=17 TxStat=0 TxElap=0:07:05.572 TxCpu=0:00:02.213 17JAN2002:14:11:53.877 ARM_GETID AppID=3 ClsID=21 TxName=$UPCASE20. TxDet=PUTC_REL 17JAN2002:14:11:54.227 ARM_START AppID=3 ClsID=21 TxSHdl=18 TxName=$UPCASE20. TxDet=PUTC_REL 17JAN2002:14:12:20.615 ARM_STOP AppID=3 ClsID=21 TxSHdl=18 TxStat=0 TxElap=0:07:31.453 TxCpu=0:00:02.253 17JAN2002:14:12:20.855 ARM_END AppID=1 AppNCls=1 AppNTxSt=18 AppNTxSp=0 AppNTxUp=0 AppNTx0=0 AppNTx1=0 AppNTx2=0 AppElap=0:07:32.633 AppCpu=0:00:02.253 AppAvgRt=0:00:25.146 AppMinTx=27777:46:39.00 AppMaxTx=0:00:00.000 17JAN2002:14:12:20.905 ARM_END AppID=2 AppNCls=1 AppNTxSt=18 AppNTxSp=0 AppNTxUp=0 AppNTx0=0 AppNTx1=0 AppNTx2=0 AppElap=0:07:32.683 AppCpu=0:00:02.253 AppAvgRt=0:00:25.149 AppMinTx=27777:46:39.00 AppMaxTx=0:00:00.000 17JAN2002:14:12:20.945 ARM_END AppID=3 AppNCls=19 AppNTxSt=18 AppNTxSp=18 AppNTxUp=0 AppNTx0=18 AppNTx1=0 AppNTx2=0 AppElap=0:07:32.714 AppCpu=0:00:02.263 AppAvgRt=0:00:25.151 AppMinTx=0:00:12.939 AppMaxTx=0:07:31.453