Signifies the start of a transaction instance
| Type: | ARM macro |
|
|
Syntax |
| %ARMSTRT<(options)> |
|
Correlator Value |
Description |
|---|---|
| 0 | This transaction is not using correlators |
| 1 | This transaction is a parent transaction only |
| 2 | This transaction is a child transaction only |
| 3 | This transaction is both a parent and child transaction |
|
|
| Description |
%ARMSTRT signals the start of a transaction, also known as a transaction instance. A transaction instance is an instantiation of a transaction class that was previously defined using %ARMGTID.
|
|
| Input |
The transaction class ID that is generated from a previous %ARMGTID call is the input. If TXNIDVAR= option is supplied, the supplied value is used as the transaction ID. Otherwise, the value of the global macro variable _ARMTXID is used.
If GETID=YES and APPID= or APPIDVAR= options are supplied, the supplied value is used as the application ID. Otherwise, the value of the global macro variable _ARMAPID is used.
|
|
| Output |
The _ARMSHDL variable, which is the start handle, is the output. If GETID=YES, then the _ARMTXID variable is updated also. The variables that TXNIDVAR= and SHDLVAR= point to are also updated if supplied.
|
|
| Correlators |
In the definition below, "transaction" means a unique start handle (SHDLVAR) as defined in %ARMSTRT. "Transaction class" refers to a TXNIDVAR value defined by %ARMGTID. Each transaction is an occurrence or instance of a transaction class.
"Many client/server transactions consist of one transaction visible to the user, and any number of nested component transactions that are invoked by the one visible transaction. These component transactions are the children of the parent transaction (or the child of another child component transaction). It's very userful to know how much each component transaction contributes to the total response time of the visible transaction. Similarly, a failure in one of the component transactions will often lead to a failure in the visible transaction, and this information is also very useful." ARM API Guide 2.0
data _null_; %arminit(appname='Forecast')'; %armgtid(txnname='Txn 1A', txndet='Forecasting Txn Class'); %armstrt(shdlvar=sh1); run;
data _null_; %arminit(appname=aname, appuser='sasxyz'); %armgtid(txnname='txn OE', txndet= 'Order Entry txn class'); %armstrt(shdlvar=sh1); put "start handle is " sh1; run;
data _null_; %arminit(appname=aname, appuser='sasxyz'); %armgtid(txnname='txn OE', txndet= 'Order Entry txn class' txnidvar=txnnum); data _null_; %armstrt(txnidvar=txnname); run;
Transaction 120 consists of transactions 121 and 122.
Transaction 200 does not have any component transactions.
Here is a code fragment used to create these relationships.
%arminit(appname='Application",appidvar=appid);
%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);