Traditional ARM Log

The SAS 9.3 ARM interface preserves the existing SAS 9.1 ARM interface as much as possible, including the ARM log. After you install SAS 9.3, you do not have to use the SAS logging facility or the performance macros. You can continue using user-defined correlators, ARM macros with user-defined metrics, and the ARMLOC= system option.
The ARM log is a preformatted output file, which contains comma-separated contents. The format includes a one-character identifier that represents the ARM call, a date.time group, transaction ID, user CPU time, and system CPU time. This information is followed by transaction-unique details, such as correlators and user metrics.
Instructions for defining correlators and user metrics are in the SAS 9.1 documentation.
The following code uses the ARM macros, user-defined metrics, and correlators:
/*******************************************************/
/* ARM sample and ARMLOG.LOG output with ARM macros    */
/* enabled outside the data step.                      */
/*                                                     */
/* The default name of the log file is ARMLOG.LOG. To  */
/* specify a unique name, use the ARMLOC system option */
/*******************************************************/
/*******************************************************/
/* Enable ARM Sub-System ARM_PROC                      */
/*******************************************************/
options ARMSUBSYS=(ARM_PROC); 

/*******************************************************/
/* Enable ARM macro support                            */
/*******************************************************/
%let _armexec=1;

/*******************************************************/
/* Enable ARM macro support outside of the data step   */
/*******************************************************/
%let _armacro=1;

%arminit(appname="OpenCodeARMGTID test w/ user metrics");
%armgtid(txnname="OpenCode02",txnidvar=txn1,
     metrNam1="ShtStr",
     metrDef1=short,
     metrNam2="cnt32",
     metrDef2=count32);

%armstrt(txnidvar=txn1,metrval1=&syshostname); 

 data x;
 do i=1 to 10000;
 x=i; y=0-i;
 output;
 end; run;

proc sort  data=x threads; by y;  run;

%armstop; 
%armend;

The following is the ARM log output with _armacro=1 and ARMSUBSYS=(ARM_PROC):
I,1568904424.107000,1,0.796875,0.921875,SAS,sasgyc
G,1568904424.107000,1,1,PROCEDURE,PROC START/STOP,PROC_NAME,ShortStr,PROC_IO,
  Count64,PROC_MEM,Count64,PROC_LABEL,LongStr
I,1568904424.482000,2,0.796875,0.953125,OpenCodeARMGTID test w/ user metrics,*
G,1568904424.514000,2,2,OpenCode02,,ShtStr,ShortStr,cnt32,Count32
S,1568904424.529000,2,2,1,0.812500,0.984375,L13021  ,
S,1568904424.545000,1,1,2,0.812500,1.015625,DATASTEP,0,0,
P,1568904424.873000,1,1,2,0.812500,1.046875,0,DATASTEP,287803,260680,
S,1568904424.967000,1,1,3,0.812500,1.078125,SORT    ,0,0,
P,1568904424.982000,1,1,3,0.828125,1.093750,0,SORT    ,509499,1945640,
P,1568904424.998000,2,2,1,0.843750,1.093750,0
E,1568904424.998000,2,0.843750,1.093750

/*******************************************************/
/* ARM sample and ARMLOG.LOG output with ARM macros    */
/* enabled within a data step.                         */
/*******************************************************/
/*******************************************************/
/* Set ARM Sub-System ARM_NONE                         */
/*******************************************************/
options ARMSUBSYS=(ARM_NONE); 

/*******************************************************/
/* Enable ARM macro support                            */
/*******************************************************/
%let _armexec=1;
/*******************************************************/
/* Set _armacro=0, therefore, ARM macros must be within*/
/* a data step boundary.                               */
/*******************************************************/
%let _armacro=0;
data x;
%arminit(appname="DataStepCode test w/ user metrics");
%armgtid(txnname="DataStepTxn1",txnidvar=txn1,
     metrNam1="ShtStr",
     metrDef1=short,
     metrNam2="cnt32",
     metrDef2=count32);
%armstrt(shdlvar=startid,txnidvar=txn1,metrval1="&syshostname"); 

do i=1 to 10000;
  x=i; y=0-i;
  output;
  end; 

%armstop(shandle=startid); 
%armend;
run; 

The following is the ARM log output with _armacro=0 and ARMSUBSYS=(ARM_NONE):
I,1568907360.964000,1,0.703125,0.718750,SAS,sasgyc
I,1568907361.120000,2,0.750000,0.750000,DataStepCode test w/ user metrics,*
G,1568907361.120000,2,1,DataStepTxn1,,ShtStr,ShortStr,cnt32,Count32
S,1568907361.120000,2,1,1,0.750000,0.750000,L13021  ,
P,1568907361.136000,2,1,1,0.750000,0.765625,0
E,1568907361.136000,2,0.750000,0.765625

Note: If you use the SAS 9.3 ARM interface, the SAS logging facility, and the performance macros, do not use the postprocessing macros.
The following example uses the %ARMPROC and %ARMJOIN postprocessing macros:
filename ARMLOG 'd:\armlog';
  %armproc();
  %armjoin();