Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 4 Current »

Note

Available in EagleML 2016 January release or newer.
Standard EagleML Security Resolution logic can sometimes be not quite fit for a project. For these rare occasions we have made it possible to configure and enable custom security resolution logic.

Important Note

Please keep in mind that custom logic is global for an , meaning that it will be applied to every object type and stream processing. These changes should be carried out with care as they can affect stability and overall performance of the box.
If you want to use this feature, please edit /customer/eagleml/security_resolution_custom.inc and then enable your new logic by setting
<COL TAG="var_mid_customsec_res" EXPRESSION="'Y'"/>

in /eagle_ml-2-0_custom_cm/w_config_custom.inc

When you are finished make sure that security alias (tag10) gets a value as a result of resolution - this is essential for further processing. In the examples below the following code implements this:

<COL TAG="10" EXPRESSION="iif(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW',0,:tag10:)"/>

and for standard SWAP securities:

    <COL TAG="10" EXPRESSION="IF (:tag3931: = 'FWXXXX' AND :tag1377:= 'B') THEN :BUY_10:
    ELSE IF (:tag3931: = 'FWXXXX' AND :tag1377:= 'S') THEN :SELL_10:
    ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'C' THEN :CON_10:
    ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'P' THEN :PAY_10:
    ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'R' THEN :REC_10:
    ELSE ''" CONTENT="REFERENCE_NO"/>

Note

To skip standard Security Resolution set spokeCheckFlag to "1" in your SMF message. The aliases will be loaded into DB "as is" instead.
 Example of Custom Security Resolution file with logic identical to standard (click to expand)

<INCLUDE FILE="eagle_ml-2-0_cm/w_config.inc" RELATIVEPATHTYPE="RULESROOT"/>
<COL TAG="7250" EXPRESSION="iif((|spokeCheckFlag| = 'Y' or |spokeCheckFlag| = 'YES') and StringLength(|securityAlias|) &gt; 0,'1','')" />
  <COL TAG="SEC_RES_OPTION" EXPRESSION="IIf(stringlength(|assetResolutionOption|) &gt; 0,|assetResolutionOption|,Iif(StringLength( :CONFIG_SEC_RES_OPTION: ) &gt; 0,  :CONFIG_SEC_RES_OPTION:,  :SEC_RES_OPTION_DEFAULT:))"/>
  <COL TAG="UseSecAliasAsXREF" EXPRESSION="iif((:W_USE_SEC_ALIAS_AS_XREF: = 'YES' or Find(Upper(:SEC_RES_OPTION:),'USE_SEC_ALIAS_AS_XREF')!=-1) and StringLength(|securityAlias|) &gt; 0,'YES','NO' )"/>
  <STATUS EXPR="':SEC_RES_OPTION:='+:SEC_RES_OPTION:" CONDITION="1"/>
  <STATUS EXPR="':UseSecAliasAsXREF:='+:UseSecAliasAsXREF:" CONDITION="1"/>
  <COL TAG="varBattingOrder" EXPRESSION="'cusip,cusipPay,cusipReceive,bcusip,isin,sedol,reuters,bloombergId,sicovmId,valorenId,cedel,internalId,cinsId,uniqueProductId,uniqueSwapId,ticker,xId1,xId2,xId3,xId4,xId5,xId6,xId7,xId8,xId9,xId10'"/>
  <COL TAG="identifiersToLoad" EXPRESSION="'cusip,cusipPay,cusipReceive,bcusip,isin,sedol,reuters,bloombergId,sicovmId,valorenId,cedel,internalId,cinsId,uniqueProductId,uniqueSwapId,ticker,xId1,xId2,xId3,xId4,xId5,xId6,xId7,xId8,xId9,xId10'"/>
  <COL TAG="varBattingOrder" EXPRESSION="IIf(stringlength(|battingOrderSecm|) &gt; 0,|battingOrderSecm|,Iif(StringLength( :CONFIG_BATTING_ORDER: ) &gt; 0,  :CONFIG_BATTING_ORDER:,:varBattingOrder:))"/>
  <COL TAG="varBattingOrder" EXPRESSION="Iif(:tag3931: = 'FWXXXX' and :tag11: = 'FWD' and StringLength( :tag13: ) != 0, Replace(:varBattingOrder:,',ticker','') , :varBattingOrder: )"/>
  <STATUS EXPR="':varBattingOrder:='+:varBattingOrder:" CONDITION="1"/>
  <!-- -->
  <!-- remap identifiers alias-->
  <COL TAG="varticker" EXPRESSION="|ticker|"/>
  <COL TAG="varcusip" EXPRESSION="|cusip|"/>
  <COL TAG="varbcusip" EXPRESSION="|bcusip|"/>
  <COL TAG="varcusipPay" EXPRESSION="|cusipPay|"/>
  <COL TAG="varcusipReceive" EXPRESSION="|cusipReceive|"/>
  <COL TAG="varisin" EXPRESSION="|isin|"/>
  <COL TAG="varsedol" EXPRESSION="|sedol|"/>
  <COL TAG="varreuters" EXPRESSION="|reuters|"/>
  <COL TAG="varbloombergId" EXPRESSION="|bloombergId|"/>
  <COL TAG="varsicovmId" EXPRESSION="|sicovmId|"/>
  <COL TAG="varvalorenId" EXPRESSION="|valorenId|"/>
  <COL TAG="varcedel" EXPRESSION="|cedel|"/>
  <COL TAG="varinternalId" EXPRESSION="|internalId|"/>
  <COL TAG="varcinsId" EXPRESSION="|cinsId|"/>
  <COL TAG="varuniqueProductId" EXPRESSION="|uniqueProductId|"/>
  <COL TAG="varuniqueSwapId" EXPRESSION="|uniqueSwapId|"/>
  <COL TAG="varxId1" EXPRESSION="|xId1|"/>
  <COL TAG="varxId2" EXPRESSION="|xId2|"/>
  <COL TAG="varxId3" EXPRESSION="|xId3|"/>
  <COL TAG="varxId4" EXPRESSION="|xId4|"/>
  <COL TAG="varxId5" EXPRESSION="|xId5|"/>
  <COL TAG="varxId6" EXPRESSION="|xId6|"/>
  <COL TAG="varxId7" EXPRESSION="|xId7|"/>
  <COL TAG="varxId8" EXPRESSION="|xId8|"/>
  <COL TAG="varxId9" EXPRESSION="|xId9|"/>
  <COL TAG="varxId10" EXPRESSION="|xId10|"/>
  <COL TAG="varxIdType1" EXPRESSION="|xIdType1|"/>
  <COL TAG="varxIdType2" EXPRESSION="|xIdType2|"/>
  <COL TAG="varxIdType3" EXPRESSION="|xIdType3|"/>
  <COL TAG="varxIdType4" EXPRESSION="|xIdType4|"/>
  <COL TAG="varxIdType5" EXPRESSION="|xIdType5|"/>
  <COL TAG="varxIdType6" EXPRESSION="|xIdType6|"/>
  <COL TAG="varxIdType7" EXPRESSION="|xIdType7|"/>
  <COL TAG="varxIdType8" EXPRESSION="|xIdType8|"/>
  <COL TAG="varxIdType9" EXPRESSION="|xIdType9|"/>
  <COL TAG="varxIdType10" EXPRESSION="|xIdType10|"/>
  <!-- tag73 end_date for xreference.end_date-->
  <COL TAG="73" EXPRESSION="
    iif(stringlength(|xIdEndDate1|) &gt; 0,|xIdEndDate1|,iif(stringlength(|xIdEndDate2|) &gt; 0,|xIdEndDate2|,iif(stringlength(|xIdEndDate3|) &gt; 0,|xIdEndDate3|,
    iif(stringlength(|xIdEndDate4|) &gt; 0,|xIdEndDate4|,iif(stringlength(|xIdEndDate5|) &gt; 0,|xIdEndDate5|,iif(stringlength(|xIdEndDate6|) &gt; 0,|xIdEndDate6|,
    iif(stringlength(|xIdEndDate7|) &gt; 0,|xIdEndDate7|,iif(stringlength(|xIdEndDate8|) &gt; 0,|xIdEndDate8|,iif(stringlength(|xIdEndDate9|) &gt; 0,|xIdEndDate9|,
    iif(stringlength(|xIdEndDate10|) &gt; 0,|xIdEndDate10|,iif(stringlength(|xIdEndDate|) &gt; 0,|xIdEndDate|,'')))))))))))"/>
  <COL TAG="73" EXPRESSION="Replace(:tag73:,'-','')"/>
  <!-- -->
  <!--Check for duplicate identifiers and exclude the during the match-->
  <COL TAG="sqlRequestOCI" EXPRESSION="'select distinct XREF_TYPE from SECURITYDBO.non_unique_xrefid
    where XREF_QUALIFIER LIKE \'DUPLICATE%\' 
    and (investment_type is null OR investment_type IN (\'' + :tag11: +'\'))''"/>
  <COL TAG="sqlRequestOLEDB" EXPRESSION="'select distinct XREF_TYPE from security.dbo.non_unique_xrefid
    where XREF_QUALIFIER LIKE \'DUPLICATE%\' 
    and (investment_type is null OR investment_type IN (\'' + :tag11: +'\'))''"/>
  <STATUS EXPR="':tag11:='+:tag11:" CONDITION="1"/>
  <MSGEXCHANGE NAME="FIND_DUPL" CONDITION=":tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW'">
    <CHANNEL CHANNELTYPE="DB"/>
    <DBREQUEST RESULTVAR="FIND_DUPL_RESULT_DATA" TIMEOUT="60" FORMAT="TAGVALUE" AUTOMAPPING="YES">
      <EVENT>
        <IMPL DRIVER="OCI" SQLTYPE="SQL" EXPRESSION=":sqlRequestOCI:"/>
        <IMPL DRIVER="OLEDB" SQLTYPE="SQL" EXPRESSION=":sqlRequestOLEDB:"/>
        <INPUT_PAR>
        </INPUT_PAR>
      </EVENT>
    </DBREQUEST>
  </MSGEXCHANGE>
  <STATUS EXPR="':FIND_DUPL_RESULT_DATA:='+:FIND_DUPL_RESULT_DATA:" CONDITION=":tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW'"/>
  <CODE>
    :FIND_DUPL_RESULT_DATA: := Replace(:FIND_DUPL_RESULT_DATA:,'120::','');
  </CODE>
  <!-- Delete duplicate identifiers from batting order-->
  <COL TAG="varBattingOrder" EXPRESSION="','+:varBattingOrder:+','"/>
  <FOREACH DATASOURCE="EXPRESSION" FORMAT="STAR" DATAEXPRESSION=":FIND_DUPL_RESULT_DATA:" RECORDSEPARATOR="\n" TAGVALUESEPARATOR=":">
    <STATUS EXPR="'Duplicate Xref Type ='+:XREF_TYPE: "/>
    <LOOP CONDITION="Find(lower(:varBattingOrder:), ','+Lower(:XREF_TYPE:)) = -1 AND Find(:varBattingOrder:,',xId') !=-1 AND Find(',BBID,', ','+(:XREF_TYPE:)+',') = -1" TYPE="WHILE">
      <LOOP VARNAME="id_num" FROM="1" TO="10" STEP="1" TYPE="FOR">
        <CODE>
          IF :XREF_TYPE: = GetVariable('varxIdType'+:id_num:) THEN
          :varBattingOrder: := replace(:varBattingOrder:, 'xId'+:id_num:+',', '');
        </CODE>
      </LOOP>
      <BREAK CONDITION="1"/>
    </LOOP>
    <LOOP CONDITION="Find(lower(:varBattingOrder:), ','+Lower(:XREF_TYPE:)) != -1 or Find(',BBID,', ','+(:XREF_TYPE:)+',') != -1" TYPE="WHILE">
      <CODE>
        IF :XREF_TYPE:='BBID' THEN
        :varBattingOrder: := replace(:varBattingOrder:, ',bloombergId,', ',')
        ELSE
        IF :XREF_TYPE:='CUSIP' THEN :varBattingOrder: := replace(:varBattingOrder:, ',cusip,', ',')
        ELSE
        IF :XREF_TYPE:='CUSIPPAY' THEN :varBattingOrder: := replace(:varBattingOrder:, ',cusipPay,', ',')
        ELSE
        IF :XREF_TYPE:='CUSIPRECEIVE' THEN :varBattingOrder: := replace(:varBattingOrder:, ',cusipReceive,', ',')
        ELSE
        IF Find(:varBattingOrder:, ','+Lower(:XREF_TYPE:)+',') != -1 THEN :varBattingOrder: := replace(:varBattingOrder:, ','+Lower(:XREF_TYPE:)+',', ',')
        ELSE :varBattingOrder: := replace(:varBattingOrder:, lower(:XREF_TYPE:), '')
      </CODE>
      <BREAK CONDITION="1"/>
    </LOOP>
  </FOREACH>
  <CODE>
    :varBattingOrder: := replace(:varBattingOrder:, ',Id', '');
    :varBattingOrder: := replace(:varBattingOrder:, ',,', ',');
    IF Substring(:varBattingOrder:,StringLength(:varBattingOrder:)-1,1)  = ',' THEN :varBattingOrder: := Substring(:varBattingOrder:,0,StringLength(:varBattingOrder:)-1);
    IF Substring(:varBattingOrder:,0,1) =',' THEN :varBattingOrder: := Substring(:varBattingOrder:,1,StringLength(:varBattingOrder:)-1);
  </CODE>
  <!-- Map identifiers into tags for Security Resolution-->
  <STATUS EXPR="'Batting Order After Delete Duplicates='+:varBattingOrder:" CONDITION=":tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW'"/>
  <COL TAG="tmpBatOr" EXPRESSION=":varBattingOrder:"/>
  <INCLUDE FILE="/eagle_default/in/xml/include/identifiers_type_resolution.inc" RELATIVEPATHTYPE="RULESROOT"/>
  <LOOP VARNAME="i_1" FROM="0" TO="8" STEP="1" TYPE="FOR">
    <CODE>
      :xrefTag: :=1952+Atoi(:i_1:)*3;
      :xrefTypeTag: :=:xrefTag:+1;
      :pos1: :=Find(:tmpBatOr:,',');
      :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);
    </CODE>
    <LOOP CONDITION="StringLength(GetVariable('var'+:xrefName:))=0" TYPE="WHILE">
      <CODE>
        :tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);
        :pos1: :=Find(:tmpBatOr:,',');
        :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);
      </CODE>
      <BREAK CONDITION="Atoi(:pos1:)=-1"/>
    </LOOP>
    <BREAK CONDITION="StringLength(GetVariable('var'+:xrefName:))=0 AND Atoi(:pos1:)=-1"/>
    <CODE>:v_identifier: :=:xrefName:</CODE>
    <COL TAG="varTagValue" EXPRESSION="GetVariable('var'+:xrefName:)"/>
    <COL TAG="varTagTypeValue" EXPRESSION="ExecuteMethod('ident_type_resolution')"/>
    <CODE>
      CreateVariable('tag'+:xrefTag:,:varTagValue:);
      CreateVariable('tag'+:xrefTypeTag:,:varTagTypeValue:);
      :tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);
    </CODE>
    <STATUS EXPR="'tag'+:xrefTag:+' = '+GetVariable('tag'+:xrefTag:)+'/tag'+:xrefTypeTag:+' = '+GetVariable('tag'+:xrefTypeTag:)"/>
    <BREAK CONDITION="Atoi(:i_1:)=8 OR Atoi(:pos1:)=-1"/>
  </LOOP>
  <COL TAG="tag1976" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW', iif(StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0,|primaryAssetId| + |swapType| + '1',iif(StringLength(:tag14:)&gt;0 and StringLength(:tag4590:)&gt;0,:tag14: + :tag4590: + '1',:tag1976: )),:tag1976:)"/>
  <COL TAG="tag1977" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW' and (StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0 or StringLength(:tag14:)&gt;0 and StringLength(:tag4590:)&gt;0),'SWAPID',:tag1977:)"/>
  <COL TAG="tag1979" EXPRESSION=":tag14:"/>
  <COL TAG="tag1980" EXPRESSION="IIf(stringlength(:tag1979:) &gt; 0,:tag1432:,'')"/>
  <!-- remap tags -->
  <COL TAG="1952" EXPRESSION=":tag1952:"/>
  <COL TAG="1953" EXPRESSION=":tag1953:"/>
  <COL TAG="1955" EXPRESSION=":tag1955:"/>
  <COL TAG="1956" EXPRESSION=":tag1956:"/>
  <COL TAG="1958" EXPRESSION=":tag1958:"/>
  <COL TAG="1959" EXPRESSION=":tag1959:"/>
  <COL TAG="1961" EXPRESSION=":tag1961:"/>
  <COL TAG="1962" EXPRESSION=":tag1962:"/>
  <COL TAG="1964" EXPRESSION=":tag1964:"/>
  <COL TAG="1965" EXPRESSION=":tag1965:"/>
  <COL TAG="1967" EXPRESSION=":tag1967:"/>
  <COL TAG="1968" EXPRESSION=":tag1968:"/>
  <COL TAG="1970" EXPRESSION=":tag1970:"/>
  <COL TAG="1971" EXPRESSION=":tag1971:"/>
  <COL TAG="1973" EXPRESSION=":tag1973:"/>
  <COL TAG="1974" EXPRESSION=":tag1974:"/>
  <COL TAG="1976" EXPRESSION=":tag1976:"/>
  <COL TAG="1977" EXPRESSION=":tag1977:"/>
  <COL TAG="1979" EXPRESSION=":tag1979:"/>
  <COL TAG="1980" EXPRESSION=":tag1980:"/>
  <!-- -->
  <COL TAG="MATCH_XREF_ID" EXPRESSION="'MATCH_XREF_ID'"/>
  <!-- Tag 38 should be defined here as it is used for security resolution -->
  <COL TAG="38" EXPRESSION="IF StringLength (:tag38:) &gt;0 THEN :tag38: ELSE IF StringLength( |maturityDate| ) &gt; 0 THEN Convert( Date( Left(|maturityDate|,10), &quot;yyyy-mm-dd&quot; ), &quot;yyyymmdd&quot;) ELSE Convert( Date( Left(|expirationDate|,10), &quot;yyyy-mm-dd&quot; ), &quot;yyyymmdd&quot;)"/>
  <!-- UseSecAliasAsXREF section-->
  <LOOP CONDITION=":UseSecAliasAsXREF: = 'YES'" TYPE="WHILE">
    <COL TAG="SecAliasAsXREF_id" EXPRESSION="|securityAlias|"/>
    <COL TAG="SecAliasAsXREF_type" EXPRESSION="iif(StringLength(:W_SEC_ALIAS_XREF_TYPE:)!=0,:W_SEC_ALIAS_XREF_TYPE:,'SEC_ALIAS')"/>
    <STATUS EXPR="'Important Note: Incoming Security Alias will be used as XREF. Security Alias value='+:SecAliasAsXREF_id:+'; XrefType='+:SecAliasAsXREF_type:" CONDITION="1 "/>

    <CODE USERDESCRIPTION="SECURITY RESOLUTION INPUT">
      :sec_resolution_input: :='1256=MATCH_XREF_ID,';
      IF StringLength(:tag1981:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1981=tag1981,';
      IF StringLength(:tag38:)   &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '38=tag38,';
      IF StringLength(:tag85:)   &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '85=tag85,';
      :sec_resolution_input: := :sec_resolution_input: + '1952=SecAliasAsXREF_id,1953=SecAliasAsXREF_type,';
    </CODE>
    <STATUS EXPR="'Batting order (SecAliasAsXref only)  \n' + 
        'Pair 1: ' + :SecAliasAsXREF_id: + '/' + :SecAliasAsXREF_type: + '\n' +
        'Exchange: ' + :tag1981: + '\n' +
        'Currency: ' + :tag85: + '\n' +
        'Maturity: ' + :tag38: + '\n' +
        'SEC_RES_OPTION: ' + :SEC_RES_OPTION:"/>

    <LOOKUP NAME="SECURITY_RESOLUTION" CONDITION="Find( :sec_resolution_input:,',19',0,1 ) != -1" INMAP="" OUTMAP="10=10,1951=1951,1954=1954,1957=1957,1960=1960,1963=1963,1966=1966,1969=1969,1972=1972,1975=1975,1978=1978" INMAPEXPR=":sec_resolution_input:" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref-s-msgcntr.htm" FORCEADDTAGS="85"/>
    <STATUS EXPR="':sec_resolution_input:  = ' +:sec_resolution_input:  +'\nSECURITY_RESOLUTION_RESULT = ' + :SECURITY_RESOLUTION_RESULT: + '; 1952 ='+:tag1952:"/>
    <COL TAG="1443" EXPRESSION="IIF( Find(Upper(|objectType|),'UNDERLYING',0,1) = -1,  IF (Atoi(:tag1978:) = 0 AND (Atoi(:tag1951:) &gt; 1 OR Atoi(:tag1954:) &gt; 1 OR Atoi(:tag1957:) &gt; 1 OR Atoi(:tag1960:) &gt; 1 OR Atoi(:tag1963:) &gt; 1 OR Atoi(:tag1966:) &gt; 1 OR Atoi(:tag1969:) &gt; 1 OR Atoi(:tag1972:) &gt; 1 OR Atoi(:tag1975:) &gt; 1)) THEN &quot;Y&quot; ELSE &quot;N&quot; , '')"/>
    <COL TAG="10" EXPRESSION="IF (Atoi(:tag1951:) &gt; 1 OR Atoi(:tag1954:) &gt; 1 OR Atoi(:tag1957:) &gt; 1 OR Atoi(:tag1960:) &gt; 1 OR Atoi(:tag1963:) &gt; 1 OR Atoi(:tag1966:) &gt; 1 OR Atoi(:tag1969:) &gt; 1 OR Atoi(:tag1972:) &gt; 1 OR Atoi(:tag1975:) &gt; 1 OR Atoi(:tag1978:) &gt; 1) THEN :tag10: ELSE 0" CONTENT="REFERENCE_NO"/>
    <LOOKUP NAME="secdetail" CONDITION="atoi(:tag10:) &gt; 0 AND :tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW'" INMAP="10=tag10" OUTMAP="sw_14=14,sw_1432=1432" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qissuedetail.htm" USERDESCRIPTION="SMF DETAIL LOOKUP"/>
    <COL TAG="14" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_14:, :tag14:)"/>
    <COL TAG="1432" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_1432:, :tag1432:)"/>
    <COL TAG="10" EXPRESSION="iif(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW',0,:tag10:)"/>
    <COL TAG="IsSecAliasWasUsed" EXPRESSION="iif(atoi(:tag10:) = 0,'NO','YES')"/>
    <STATUS EXPR="'Is Incoming SecAlias Was Used and SMF was found using its:' + :IsSecAliasWasUsed: +'. Found SecAlias:' + :tag10:" CONDITION="1 "/>
    <BREAK CONDITION="1"/>
  </LOOP>
  <!-- MATCH_ALL section-->
  <LOOP CONDITION="Find( :SEC_RES_OPTION:, 'MATCH_ALL', 0, 1 ) != -1  AND ((:tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW') OR ((:tag3931: = 'FWXXXX' OR LEFT(:tag3931:,2) = 'SW') AND StringLength(:tag14:) = 0)) AND :IsSecAliasWasUsed: != 'YES'" TYPE="WHILE">
    <STATUS EXPR="'Pair 1: ' + :tag1952: + '/' + :tag1953: + '\n' +
    'Pair 2: ' + :tag1955: + '/' + :tag1956: + '\n' +
    'Pair 3: ' + :tag1958: + '/' + :tag1959: + '\n' +
    'Pair 4: ' + :tag1961: + '/' + :tag1962: + '\n' +
    'Pair 5: ' + :tag1964: + '/' + :tag1965: + '\n' +
    'Pair 6: ' + :tag1967: + '/' + :tag1968: + '\n' +
    'Pair 7: ' + :tag1970: + '/' + :tag1971: + '\n' +
    'Pair 8: ' + :tag1973: + '/' + :tag1974: + '\n' +
    'Pair 9: ' + :tag1976: + '/' + :tag1977: + '\n' +
    'Pair 10: ' + :tag1979: + '/' + :tag1980: + '\n' +
    'Exchange: ' + :tag1981: + '\n' +
    'Currency: ' + :tag85: + '\n' +
    'Maturity: ' + :tag38: + '\n' +
    'SEC_RES_OPTION: ' + :SEC_RES_OPTION:"/>
    <INCLUDE FILE="/eagle_default/in/xml/include/match_all_sec_resolution.inc" RELATIVEPATHTYPE="RULESROOT"/>
    <COL TAG="1443" EXPRESSION="IIF( Find(Upper(|objectType|),'UNDERLYING',0,1) = -1,  IF (Atoi(:tag1978:) = 0 AND (Atoi(:tag1951:) &gt; 1 OR Atoi(:tag1954:) &gt; 1 OR Atoi(:tag1957:) &gt; 1 OR Atoi(:tag1960:) &gt; 1 OR Atoi(:tag1963:) &gt; 1 OR Atoi(:tag1966:) &gt; 1 OR Atoi(:tag1969:) &gt; 1 OR Atoi(:tag1972:) &gt; 1 OR Atoi(:tag1975:) &gt; 1)) THEN &quot;Y&quot; ELSE &quot;N&quot; , '')"/>
    <LOOKUP NAME="secdetail" CONDITION="atoi(:tag10:) &gt; 0 AND :tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW'" INMAP="10=tag10" OUTMAP="sw_14=14,sw_1432=1432" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qissuedetail.htm" USERDESCRIPTION="SMF DETAIL LOOKUP"/>
    <COL TAG="14" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_14:, :tag14:)"/>
    <COL TAG="1432" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_1432:, :tag1432:)"/>
    <COL TAG="10" EXPRESSION="iif(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW',0,:tag10:)"/>
    <BREAK CONDITION="1"/>
  </LOOP>
  <LOOP CONDITION="Find( :SEC_RES_OPTION:, 'MATCH_ALL', 0, 1 ) = -1 AND ((:tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW') OR ((:tag3931: = 'FWXXXX' OR LEFT(:tag3931:,2) = 'SW') AND StringLength(:tag14:) = 0)) AND :IsSecAliasWasUsed: != 'YES'" TYPE="WHILE">
    <CODE USERDESCRIPTION="SECURITY RESOLUTION INPUT">
      :sec_resolution_input: :='1256=MATCH_XREF_ID,';
      IF :SEC_RES_OPTION: = 'ALL' THEN
      BEGIN
      IF StringLength(:tag1981:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1981=tag1981,';
      IF StringLength(:tag38:)   &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '38=tag38,';
      IF StringLength(:tag85:)   &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '85=tag85,';
      IF StringLength(:tag1953:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1952=tag1952,1953=tag1953,';
      IF StringLength(:tag1956:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1955=tag1955,1956=tag1956,';
      IF StringLength(:tag1959:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1958=tag1958,1959=tag1959,';
      IF StringLength(:tag1962:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1961=tag1961,1962=tag1962,';
      IF StringLength(:tag1965:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1964=tag1964,1965=tag1965,';
      IF StringLength(:tag1968:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1967=tag1967,1968=tag1968,';
      IF StringLength(:tag1971:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1970=tag1970,1971=tag1971,';
      IF StringLength(:tag1974:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1973=tag1973,1974=tag1974,';
      IF StringLength(:tag1977:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1976=tag1976,1977=tag1977,';
      END
      ELSE
      BEGIN
      IIF(Find( :SEC_RES_OPTION:, 'XREF_EXCHANGE', 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1981=tag1981,',NOP());
      IIF(Find( :SEC_RES_OPTION:, 'MATURITY_DATE', 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '38=tag38,',NOP());
      IIF(Find( :SEC_RES_OPTION:, 'ASSET_CURRENCY', 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '85=tag85,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1953:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1952=tag1952,1953=tag1953,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1956:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1955=tag1955,1956=tag1956,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1959:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1958=tag1958,1959=tag1959,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1962:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1961=tag1961,1962=tag1962,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1965:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1964=tag1964,1965=tag1965,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1968:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1967=tag1967,1968=tag1968,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1971:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1970=tag1970,1971=tag1971,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1974:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1973=tag1973,1974=tag1974,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1977:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1976=tag1976,1977=tag1977,',NOP());
      END;
      :sec_resolution_input: := :sec_resolution_input: + '1979=tag1979,1980=tag1980';
    </CODE>
    <STATUS EXPR="'Batting order  \n' + 
    'Pair 1: ' + :tag1952: + '/' + :tag1953: + '\n' +
    'Pair 2: ' + :tag1955: + '/' + :tag1956: + '\n' +
    'Pair 3: ' + :tag1958: + '/' + :tag1959: + '\n' +
    'Pair 4: ' + :tag1961: + '/' + :tag1962: + '\n' +
    'Pair 5: ' + :tag1964: + '/' + :tag1965: + '\n' +
    'Pair 6: ' + :tag1967: + '/' + :tag1968: + '\n' +
    'Pair 7: ' + :tag1970: + '/' + :tag1971: + '\n' +
    'Pair 8: ' + :tag1973: + '/' + :tag1974: + '\n' +
    'Pair 9: ' + :tag1976: + '/' + :tag1977: + '\n' +
    'Pair 10: ' + :tag1979: + '/' + :tag1980: + '\n' +
    'Exchange: ' + :tag1981: + '\n' +
    'Currency: ' + :tag85: + '\n' +
    'Maturity: ' + :tag38: + '\n' +
    'SEC_RES_OPTION: ' + :SEC_RES_OPTION:"/>

    <!-- <LOOKUP NAME="SECURITY_RESOLUTION" CONDITION="Find( :sec_resolution_input:,',19',0,1 ) != -1 AND (:tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW')" INMAP="" OUTMAP="10=10,1951=1951,1954=1954,1957=1957,1960=1960,1963=1963,1966=1966,1969=1969,1972=1972,1975=1975,1978=1978" INMAPEXPR=":sec_resolution_input:" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref-s-msgcntr.htm" FORCEADDTAGS="85"/> -->
    <LOOKUP NAME="SECURITY_RESOLUTION" CONDITION="Find( :sec_resolution_input:,',19',0,1 ) != -1" INMAP="" OUTMAP="10=10,1951=1951,1954=1954,1957=1957,1960=1960,1963=1963,1966=1966,1969=1969,1972=1972,1975=1975,1978=1978" INMAPEXPR=":sec_resolution_input:" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref-s-msgcntr.htm" FORCEADDTAGS="85"/>
    <STATUS EXPR="':sec_resolution_input:  = ' +:sec_resolution_input:  +'\nSECURITY_RESOLUTION_RESULT = ' + :SECURITY_RESOLUTION_RESULT: + '; 1952 ='+:tag1952:"/>
    <COL TAG="1443" EXPRESSION="IIF( Find(Upper(|objectType|),'UNDERLYING',0,1) = -1,  IF (Atoi(:tag1978:) = 0 AND (Atoi(:tag1951:) &gt; 1 OR Atoi(:tag1954:) &gt; 1 OR Atoi(:tag1957:) &gt; 1 OR Atoi(:tag1960:) &gt; 1 OR Atoi(:tag1963:) &gt; 1 OR Atoi(:tag1966:) &gt; 1 OR Atoi(:tag1969:) &gt; 1 OR Atoi(:tag1972:) &gt; 1 OR Atoi(:tag1975:) &gt; 1)) THEN &quot;Y&quot; ELSE &quot;N&quot; , '')"/>
    <COL TAG="10" EXPRESSION="IF (Atoi(:tag1951:) &gt; 1 OR Atoi(:tag1954:) &gt; 1 OR Atoi(:tag1957:) &gt; 1 OR Atoi(:tag1960:) &gt; 1 OR Atoi(:tag1963:) &gt; 1 OR Atoi(:tag1966:) &gt; 1 OR Atoi(:tag1969:) &gt; 1 OR Atoi(:tag1972:) &gt; 1 OR Atoi(:tag1975:) &gt; 1 OR Atoi(:tag1978:) &gt; 1) THEN :tag10: ELSE 0" CONTENT="REFERENCE_NO"/>
    <LOOKUP NAME="secdetail" CONDITION="atoi(:tag10:) &gt; 0 AND :tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW'" INMAP="10=tag10" OUTMAP="sw_14=14,sw_1432=1432" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qissuedetail.htm" USERDESCRIPTION="SMF DETAIL LOOKUP"/>
    <COL TAG="14" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_14:, :tag14:)"/>
    <COL TAG="1432" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_1432:, :tag1432:)"/>
    <COL TAG="10" EXPRESSION="iif(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW',0,:tag10:)"/>
    <BREAK CONDITION="1"/>
  </LOOP>
  <!-- Check on different sec aliases to be the same, otherwise raise the error. At the moment set it 1 always -->
  <COL TAG="varSecResolutionSuccess" EXPRESSION="'1'"/>
  <LOOP CONDITION="(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW') AND :IsSecAliasWasUsed: != 'YES'" TYPE="WHILE">
    <COL TAG="PRIMARY" EXPRESSION="'PRIMARY'"/>
    <LOOKUP NAME="SECURITY_RESOLUTION_FW_SW" CONDITION="(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW')" INMAP="14=tag14,1432=tag1432,1256=PRIMARY" OUTMAP="sw961=961,10=10,sw4590=4590,fw1377=1377,swfw14=14,swfw1432=1432" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qissuedetail_all.htm"/>
    <FOREACH DATASOURCE="LOOKUPRESULT" FORMAT="STAR" FILTER=":tag3931: = 'FWXXXX' AND UPPER(:tag14:)=UPPER(:swfw14:) AND UPPER(:tag1432:)=UPPER(:swfw1432:)" LOOKUPNAME="SECURITY_RESOLUTION_FW_SW" RECORDSEPARATOR="\n" TAGVALUESEPARATOR=":">
      <COL TAG="BUY_10" EXPRESSION="IIF(UPPER(:fw1377:) = 'B',:tag10:,:BUY_10:)"/>
      <COL TAG="SELL_10" EXPRESSION="IIF(UPPER(:fw1377:) = 'S',:tag10:,:SELL_10:)"/>
      <STATUS EXPR="'BUY_10 =' + :BUY_10: + '; 1377 =' + :fw1377: + '; SELL_10 =' + :SELL_10:  + '; tag10 = ' + :tag10: + '; 10 = ' + :10: + '; SECURITY_RESOLUTION_FWXXXX_FOREACH_ROW= ' + :SECURITY_RESOLUTION_FWXXXX_FOREACH_ROW:"/>
    </FOREACH>
    <FOREACH DATASOURCE="LOOKUPRESULT" FORMAT="STAR" FILTER="LEFT(:tag3931:,2) = 'SW' AND UPPER(:tag14:)=UPPER(:swfw14:) AND UPPER(:tag1432:)=UPPER(:swfw1432:)" LOOKUPNAME="SECURITY_RESOLUTION_FW_SW" RECORDSEPARATOR="\n" TAGVALUESEPARATOR=":">
      <COL TAG="PAY_10" EXPRESSION="IIF(UPPER(:sw4590:) = 'P',:tag10:,:PAY_10:)"/>
      <COL TAG="REC_10" EXPRESSION="IIF(UPPER(:sw4590:) = 'R',:tag10:,:REC_10:)"/>
      <COL TAG="CON_10" EXPRESSION="IIF(UPPER(:sw4590:) = 'C',:tag10:,:CON_10:)"/>
      <COL TAG="CON_961" EXPRESSION="IIF(UPPER(:sw4590:) = 'C',:sw961:,:CON_961:)"/>
      <STATUS EXPR="'P10 =' + :PAY_10: + ' R10 = ' + :REC_10: + ' C10 = ' + :CON_10:" CONDITION="1"/>
    </FOREACH>
    <COL TAG="10" EXPRESSION="IF (:tag3931: = 'FWXXXX' AND :tag1377:= 'B') THEN :BUY_10:
    ELSE IF (:tag3931: = 'FWXXXX' AND :tag1377:= 'S') THEN :SELL_10:
    ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'C' THEN :CON_10:
    ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'P' THEN :PAY_10:
    ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'R' THEN :REC_10:
    ELSE ''" CONTENT="REFERENCE_NO"/>
    <COL TAG="14" EXPRESSION="IIF(stringlength(:sw14:) &gt; 0, :sw14:, :tag14:)"/>
    <COL TAG="1432" EXPRESSION="IIF(stringlength(:sw14:) &gt; 0, :sw1432:, :tag1432:)"/>
    <LOOKUP NAME="SW_XREF_RES" CONDITION="StringLength( :tag10: ) &gt; 0 and Left(:tag3931:,2) = 'SW'" INMAP="10=tag10,1953=tag1953,1956=tag1956,1959=tag1959,1977=tag1977" OUTMAP="1951=1951,var_1954=1954,var_1955=1955,var_1956=1956,var_1957=1957,var_1958=1958,var_1959=1959,1975=1975,1976=1976,1977=1977" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref.htm"/>
    <COL TAG="1954" EXPRESSION="Iif( StringLength( :var_1954: ) = 0 , :tag1954:, :var_1954: )"/>
    <COL TAG="1955" EXPRESSION="Iif( StringLength( :var_1955: ) = 0 , :tag1955:, :var_1955: )"/>
    <COL TAG="1956" EXPRESSION="Iif( StringLength( :var_1956: ) = 0 , :tag1956:, :var_1956: )"/>
    <COL TAG="1957" EXPRESSION="Iif( StringLength( :var_1957: ) = 0 , :tag1957:, :var_1957: )"/>
    <COL TAG="1958" EXPRESSION="Iif( StringLength( :var_1958: ) = 0 , :tag1958:, :var_1958: )"/>
    <COL TAG="1959" EXPRESSION="Iif( StringLength( :var_1959: ) = 0 , :tag1959:, :var_1959: )"/>
    <COL TAG="9151" EXPRESSION="IF (:tag3931: = 'FWXXXX') THEN :tag10:
    ELSE IF LEFT(:tag3931:,2) = 'SW' AND (|swapType| = 'P' OR |swapType| = 'R' ) THEN :CON_10:
    ELSE Nop()" USERDESCRIPTION="DER CONTRACT SEC ALIAS"/>
    <BREAK CONDITION="1"/>
  </LOOP>
  <!-- Map identifiers into tags for Loading To Database -->
  <COL TAG="identifiersToLoad" EXPRESSION="Iif(:tag3931: = 'FWXXXX' and :tag11: = 'FWD' and StringLength( :tag13: ) != 0, Replace(:identifiersToLoad:,',ticker','') , :identifiersToLoad: )"/>
  <STATUS EXPR="':identifiersToLoad:='+:identifiersToLoad:" CONDITION="1"/>
  <COL TAG="tmpBatOr" EXPRESSION=":identifiersToLoad:"/>
  <INCLUDE FILE="/eagle_default/in/xml/include/identifiers_type_resolution.inc" RELATIVEPATHTYPE="RULESROOT"/>
  <LOOP VARNAME="i_1" FROM="0" TO="8" STEP="1" TYPE="FOR">
    <CODE>
      :xrefTag: :=1952+Atoi(:i_1:)*3;
      :xrefTypeTag: :=:xrefTag:+1;
      :pos1: :=Find(:tmpBatOr:,',');
      :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);
    </CODE>
    <LOOP CONDITION="StringLength(GetVariable('var'+:xrefName:))=0" TYPE="WHILE">
      <CODE>
        :tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);
        :pos1: :=Find(:tmpBatOr:,',');
        :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);
      </CODE>
      <BREAK CONDITION="Atoi(:pos1:)=-1"/>
    </LOOP>
    <BREAK CONDITION="StringLength(GetVariable('var'+:xrefName:))=0 AND Atoi(:pos1:)=-1"/>
    <CODE>:v_identifier: :=:xrefName:</CODE>
    <COL TAG="varTagValue" EXPRESSION="GetVariable('var'+:xrefName:)"/>
    <COL TAG="varTagTypeValue" EXPRESSION="ExecuteMethod('ident_type_resolution')"/>
    <CODE>
      CreateVariable('tag'+:xrefTag:,:varTagValue:);
      CreateVariable('tag'+:xrefTypeTag:,:varTagTypeValue:);
      :tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);
    </CODE>
    <STATUS EXPR="'tag'+:xrefTag:+' = '+GetVariable('tag'+:xrefTag:)+'/tag'+:xrefTypeTag:+' = '+GetVariable('tag'+:xrefTypeTag:)"/>
    <BREAK CONDITION="Atoi(:i_1:)=8 OR Atoi(:pos1:)=-1"/>
  </LOOP>
  <COL TAG="tag1976" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW', iif(StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0,|primaryAssetId| + |swapType| + '1',iif(StringLength(:tag14:)&gt;0 and StringLength(:tag4590:)&gt;0,:tag14: + :tag4590: + '1',:tag1976: )),:tag1976:)"/>
  <COL TAG="tag1977" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW' and (StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0 or StringLength(:tag14:)&gt;0 and StringLength(:tag4590:)&gt;0),'SWAPID',:tag1977:)"/>
  <COL TAG="tag1979" EXPRESSION=":tag14:"/>
  <COL TAG="tag1980" EXPRESSION="IIf(stringlength(:tag1979:) &gt; 0,:tag1432:,'')"/>
  <!-- remap tags -->
  <COL TAG="1952" EXPRESSION=":tag1952:"/>
  <COL TAG="1953" EXPRESSION=":tag1953:"/>
  <COL TAG="1955" EXPRESSION=":tag1955:"/>
  <COL TAG="1956" EXPRESSION=":tag1956:"/>
  <COL TAG="1958" EXPRESSION=":tag1958:"/>
  <COL TAG="1959" EXPRESSION=":tag1959:"/>
  <COL TAG="1961" EXPRESSION=":tag1961:"/>
  <COL TAG="1962" EXPRESSION=":tag1962:"/>
  <COL TAG="1964" EXPRESSION=":tag1964:"/>
  <COL TAG="1965" EXPRESSION=":tag1965:"/>
  <COL TAG="1967" EXPRESSION=":tag1967:"/>
  <COL TAG="1968" EXPRESSION=":tag1968:"/>
  <COL TAG="1970" EXPRESSION=":tag1970:"/>
  <COL TAG="1971" EXPRESSION=":tag1971:"/>
  <COL TAG="1973" EXPRESSION=":tag1973:"/>
  <COL TAG="1974" EXPRESSION=":tag1974:"/>
  <COL TAG="1976" EXPRESSION=":tag1976:"/>
  <COL TAG="1977" EXPRESSION=":tag1977:"/>
  <COL TAG="1979" EXPRESSION=":tag1979:"/>
  <COL TAG="1980" EXPRESSION=":tag1980:"/>
  <!-- -->
  <LOOKUP NAME="XREF_RESOLUTION" CONDITION="Atoi(:tag10:) &gt; 0 and Left(:tag3931:,2) != 'SW'" INMAP="10=tag10,1953=tag1953,1956=tag1956,1959=tag1959,1962=tag1962,1965=tag1965,1968=tag1968,1971=tag1971,1974=tag1974,1977=tag1977" OUTMAP="1951=1951,1954=1954,1957=1957,1960=1960,1963=1963,1966=1966,1969=1969,1972=1972,1975=1975" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref.htm"/>
  <COL TAG="1257" EXPRESSION="IIf(Atoi(:tag10:) &gt; 0 AND |historyOnlyFlag|='Y', 'HISTORY_ONLY','')"/>
  <!-- Not add new security if FAILED_ON_UNMATCHED is set-->
  <EDITCHECK EXPR="atoi(:tag10:)&gt;0 or Find( :SEC_RES_OPTION:, 'FAIL_ON_UNMATCHED', 0, 1 ) = -1 " ERRORMESSAGEEXPR="'Security Alias not found. FAIL_ON_UNMATCHED is set'"/>
  <BREAK CONDITION="1"/>

  <!-- remap identifiers alias-->
  <COL TAG="varticker" EXPRESSION="|ticker|"/>
  <COL TAG="varcusip" EXPRESSION="|cusip|"/>
  <COL TAG="varbcusip" EXPRESSION="|bcusip|"/>
  <COL TAG="varcusipPay" EXPRESSION="|cusipPay|"/>
  <COL TAG="varcusipReceive" EXPRESSION="|cusipReceive|"/>
  <COL TAG="varisin" EXPRESSION="|isin|"/>
  <COL TAG="varsedol" EXPRESSION="|sedol|"/>
  <COL TAG="varreuters" EXPRESSION="|reuters|"/>
  <COL TAG="varbloombergId" EXPRESSION="|bloombergId|"/>
  <COL TAG="varsicovmId" EXPRESSION="|sicovmId|"/>
  <COL TAG="varvalorenId" EXPRESSION="|valorenId|"/>
  <COL TAG="varcedel" EXPRESSION="|cedel|"/>
  <COL TAG="varinternalId" EXPRESSION="|internalId|"/>
  <COL TAG="varcinsId" EXPRESSION="|cinsId|"/>
  <COL TAG="varuniqueProductId" EXPRESSION="|uniqueProductId|"/>
  <COL TAG="varuniqueSwapId" EXPRESSION="|uniqueSwapId|"/>
  <COL TAG="varxId1" EXPRESSION="|xId1|"/>
  <COL TAG="varxId2" EXPRESSION="|xId2|"/>
  <COL TAG="varxId3" EXPRESSION="|xId3|"/>
  <COL TAG="varxId4" EXPRESSION="|xId4|"/>
  <COL TAG="varxId5" EXPRESSION="|xId5|"/>
  <COL TAG="varxId6" EXPRESSION="|xId6|"/>
  <COL TAG="varxId7" EXPRESSION="|xId7|"/>
  <COL TAG="varxId8" EXPRESSION="|xId8|"/>
  <COL TAG="varxId9" EXPRESSION="|xId9|"/>
  <COL TAG="varxId10" EXPRESSION="|xId10|"/>
  <COL TAG="varxIdType1" EXPRESSION="|xIdType1|"/>
  <COL TAG="varxIdType2" EXPRESSION="|xIdType2|"/>
  <COL TAG="varxIdType3" EXPRESSION="|xIdType3|"/>
  <COL TAG="varxIdType4" EXPRESSION="|xIdType4|"/>
  <COL TAG="varxIdType5" EXPRESSION="|xIdType5|"/>
  <COL TAG="varxIdType6" EXPRESSION="|xIdType6|"/>
  <COL TAG="varxIdType7" EXPRESSION="|xIdType7|"/>
  <COL TAG="varxIdType8" EXPRESSION="|xIdType8|"/>
  <COL TAG="varxIdType9" EXPRESSION="|xIdType9|"/>
  <COL TAG="varxIdType10" EXPRESSION="|xIdType10|"/>
  <COL TAG="tag10" EXPRESSION="|securityAlias|" CONTENT="REFERENCE_NO"/>
  <!-- tag73 end_date for xreference.end_date-->
  <COL TAG="73" EXPRESSION="
    iif(stringlength(|xIdEndDate1|) &gt; 0,|xIdEndDate1|,iif(stringlength(|xIdEndDate2|) &gt; 0,|xIdEndDate2|,iif(stringlength(|xIdEndDate3|) &gt; 0,|xIdEndDate3|,
    iif(stringlength(|xIdEndDate4|) &gt; 0,|xIdEndDate4|,iif(stringlength(|xIdEndDate5|) &gt; 0,|xIdEndDate5|,iif(stringlength(|xIdEndDate6|) &gt; 0,|xIdEndDate6|,
    iif(stringlength(|xIdEndDate7|) &gt; 0,|xIdEndDate7|,iif(stringlength(|xIdEndDate8|) &gt; 0,|xIdEndDate8|,iif(stringlength(|xIdEndDate9|) &gt; 0,|xIdEndDate9|,
    iif(stringlength(|xIdEndDate10|) &gt; 0,|xIdEndDate10|,iif(stringlength(|xIdEndDate|) &gt; 0,|xIdEndDate|,'')))))))))))"/>
  <COL TAG="73" EXPRESSION="Replace(:tag73:,'-','')"/>
  <!-- Map identifiers into tags for Loading To Database -->
  <COL TAG="identifiersToLoad" EXPRESSION="'cusip,cusipPay,cusipReceive,bcusip,isin,sedol,reuters,bloombergId,sicovmId,valorenId,cedel,internalId,cinsId,uniqueProductId,uniqueSwapId,ticker,xId1,xId2,xId3,xId4,xId5,xId6,xId7,xId8,xId9,xId10'"/>
  <COL TAG="identifiersToLoad" EXPRESSION="Iif(:tag3931: = 'FWXXXX' and :tag11: = 'FWD' and StringLength( :tag13: ) != 0, Replace(:identifiersToLoad:,',ticker','') , :identifiersToLoad: )"/>
  <STATUS EXPR="':identifiersToLoad:='+:identifiersToLoad:" CONDITION="1"/>
  <COL TAG="tmpBatOr" EXPRESSION=":identifiersToLoad:"/>
  <INCLUDE FILE="/eagle_default/in/xml/include/identifiers_type_resolution.inc" RELATIVEPATHTYPE="RULESROOT"/>
  <LOOP VARNAME="i_1" FROM="0" TO="8" STEP="1" TYPE="FOR">
    <CODE>
      :xrefTag: :=1952+Atoi(:i_1:)*3;
      :xrefTypeTag: :=:xrefTag:+1;
      :pos1: :=Find(:tmpBatOr:,',');
      :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);
    </CODE>
    <LOOP CONDITION="StringLength(GetVariable('var'+:xrefName:))=0" TYPE="WHILE">
      <CODE>
        :tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);
        :pos1: :=Find(:tmpBatOr:,',');
        :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);
      </CODE>
      <BREAK CONDITION="Atoi(:pos1:)=-1"/>
    </LOOP>
    <BREAK CONDITION="StringLength(GetVariable('var'+:xrefName:))=0 AND Atoi(:pos1:)=-1"/>
    <CODE>:v_identifier: :=:xrefName:</CODE>
    <COL TAG="varTagValue" EXPRESSION="GetVariable('var'+:xrefName:)"/>
    <COL TAG="varTagTypeValue" EXPRESSION="ExecuteMethod('ident_type_resolution')"/>
    <CODE>
      CreateVariable('tag'+:xrefTag:,:varTagValue:);
      CreateVariable('tag'+:xrefTypeTag:,:varTagTypeValue:);
      :tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);
    </CODE>
    <STATUS EXPR="'tag'+:xrefTag:+' = '+GetVariable('tag'+:xrefTag:)+'/tag'+:xrefTypeTag:+' = '+GetVariable('tag'+:xrefTypeTag:)"/>
    <BREAK CONDITION="Atoi(:i_1:)=8 OR Atoi(:pos1:)=-1"/>
  </LOOP>
  <COL TAG="tag1976" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW', iif(StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0,|primaryAssetId| + |swapType| + '1',iif(StringLength(:tag14:)&gt;0 and StringLength(:tag4590:)&gt;0,:tag14: + :tag4590: + '1',:tag1976: )),:tag1976:)"/>
  <COL TAG="tag1977" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW' and (StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0 or StringLength(:tag14:)&gt;0 and StringLength(:tag4590:)&gt;0),'SWAPID',:tag1977:)"/>
  <COL TAG="tag1979" EXPRESSION=":tag14:"/>
  <COL TAG="tag1980" EXPRESSION="IIf(stringlength(:tag1979:) &gt; 0,:tag1432:,'')"/>
  <!-- remap tags -->
  <COL TAG="1952" EXPRESSION=":tag1952:"/>
  <COL TAG="1953" EXPRESSION=":tag1953:"/>
  <COL TAG="1955" EXPRESSION=":tag1955:"/>
  <COL TAG="1956" EXPRESSION=":tag1956:"/>
  <COL TAG="1958" EXPRESSION=":tag1958:"/>
  <COL TAG="1959" EXPRESSION=":tag1959:"/>
  <COL TAG="1961" EXPRESSION=":tag1961:"/>
  <COL TAG="1962" EXPRESSION=":tag1962:"/>
  <COL TAG="1964" EXPRESSION=":tag1964:"/>
  <COL TAG="1965" EXPRESSION=":tag1965:"/>
  <COL TAG="1967" EXPRESSION=":tag1967:"/>
  <COL TAG="1968" EXPRESSION=":tag1968:"/>
  <COL TAG="1970" EXPRESSION=":tag1970:"/>
  <COL TAG="1971" EXPRESSION=":tag1971:"/>
  <COL TAG="1973" EXPRESSION=":tag1973:"/>
  <COL TAG="1974" EXPRESSION=":tag1974:"/>
  <COL TAG="1976" EXPRESSION=":tag1976:"/>
  <COL TAG="1977" EXPRESSION=":tag1977:"/>
  <COL TAG="1979" EXPRESSION=":tag1979:"/>
  <COL TAG="1980" EXPRESSION=":tag1980:"/>
  <COL TAG="1257" EXPRESSION="IIf(Atoi(:tag10:) &gt; 0 AND |historyOnlyFlag|='Y', 'HISTORY_ONLY','')"/>
  <!-- Tag 38 should be defined here as it is used for security resolution -->
  <COL TAG="38" EXPRESSION="IF StringLength (:tag38:) &gt;0 THEN :tag38: ELSE IF StringLength( |maturityDate| ) &gt; 0 THEN Convert( Date( Left(|maturityDate|,10), &quot;yyyy-mm-dd&quot; ), &quot;yyyymmdd&quot;) ELSE Convert( Date( Left(|expirationDate|,10), &quot;yyyy-mm-dd&quot; ), &quot;yyyymmdd&quot;)"/>
  <COL TAG="varSecResolutionSuccess" EXPRESSION="'1'"/>
  <STATUS CONDITION="" EXPR="'Skip Security Resolution Logic. Use Security Alias from incoming data'+|securityAlias|"/>
  <BREAK CONDITION="1" />
<COL TAG="SKIP_IFEXIST_FLAG" EXPRESSION="|skipIfExistFlag|" />
<COL TAG="SKIP_IF_EXIST" EXPRESSION="iif((|skipIfExistFlag|='Y' or |skipIfExistFlag|='y' or |skipIfExistFlag|='1') and StringLength( :tag10: )&gt;0,'1','0')" />
<BREAK CONDITION=":SKIP_IF_EXIST:='1'"/>

 Example of Custom Security Resolution file with additional logic for SWAP securities (highlighted) and some cosmetic changes (click to expand)

  <COL TAG="SEC_RES_OPTION"
EXPRESSION="IIf(stringlength(|assetResolutionOption|) &gt; 0,|assetResolutionOption|,Iif(StringLength( :CONFIG_SEC_RES_OPTION: ) &gt; 0,  :CONFIG_SEC_RES_OPTION:,  :SEC_RES_OPTION_DEFAULT:))"/>
  <STATUS EXPR="':SEC_RES_OPTION:='+:SEC_RES_OPTION:" CONDITION="1"/>
  <COL TAG="varBattingOrder" EXPRESSION="'cusip,cusipPay,cusipReceive,bcusip,isin,sedol,reuters,bloombergId,sicovmId,valorenId,cedel,internalId,cinsId,uniqueProductId,uniqueSwapId,ticker,xId1,xId2,xId3,xId4,xId5,xId6,xId7,xId8,xId9,xId10'"/>
  <COL TAG="identifiersToLoad" EXPRESSION="'cusip,cusipPay,cusipReceive,bcusip,isin,sedol,reuters,bloombergId,sicovmId,valorenId,cedel,internalId,cinsId,uniqueProductId,uniqueSwapId,ticker,xId1,xId2,xId3,xId4,xId5,xId6,xId7,xId8,xId9,xId10'"/>
  <COL TAG="varBattingOrder" EXPRESSION="IIf(stringlength(|battingOrderSecm|) &gt; 0,|battingOrderSecm|,Iif(StringLength( :CONFIG_BATTING_ORDER: ) &gt; 0,  :CONFIG_BATTING_ORDER:,:varBattingOrder:))"/>
  <COL TAG="varBattingOrder" EXPRESSION="Iif(:tag3931: = 'FWXXXX' and :tag11: = 'FWD' and StringLength( :tag13: ) != 0, Replace(:varBattingOrder:,',ticker','') , :varBattingOrder: )"/>
  <STATUS EXPR="':varBattingOrder:='+:varBattingOrder:" CONDITION="1"/>
  <!-- -->
  <!-- remap identifiers alias-->
  <COL TAG="varticker" EXPRESSION="|ticker|"/>
  <COL TAG="varcusip" EXPRESSION="|cusip|"/>
  <COL TAG="varbcusip" EXPRESSION="|bcusip|"/>
  <COL TAG="varcusipPay" EXPRESSION="|cusipPay|"/>
  <COL TAG="varcusipReceive" EXPRESSION="|cusipReceive|"/>
  <COL TAG="varisin" EXPRESSION="|isin|"/>
  <COL TAG="varsedol" EXPRESSION="|sedol|"/>
  <COL TAG="varreuters" EXPRESSION="|reuters|"/>
  <COL TAG="varbloombergId" EXPRESSION="|bloombergId|"/>
  <COL TAG="varsicovmId" EXPRESSION="|sicovmId|"/>
  <COL TAG="varvalorenId" EXPRESSION="|valorenId|"/>
  <COL TAG="varcedel" EXPRESSION="|cedel|"/>
  <COL TAG="varinternalId" EXPRESSION="|internalId|"/>
  <COL TAG="varcinsId" EXPRESSION="|cinsId|"/>
  <COL TAG="varuniqueProductId" EXPRESSION="|uniqueProductId|"/>
  <COL TAG="varuniqueSwapId" EXPRESSION="|uniqueSwapId|"/>
  <COL TAG="varxId1" EXPRESSION="|xId1|"/>
  <COL TAG="varxId2" EXPRESSION="|xId2|"/>
  <COL TAG="varxId3" EXPRESSION="|xId3|"/>
  <COL TAG="varxId4" EXPRESSION="|xId4|"/>
  <COL TAG="varxId5" EXPRESSION="|xId5|"/>
  <COL TAG="varxId6" EXPRESSION="|xId6|"/>
  <COL TAG="varxId7" EXPRESSION="|xId7|"/>
  <COL TAG="varxId8" EXPRESSION="|xId8|"/>
  <COL TAG="varxId9" EXPRESSION="|xId9|"/>
  <COL TAG="varxId10" EXPRESSION="|xId10|"/>
  <COL TAG="varxIdType1" EXPRESSION="|xIdType1|"/>
  <COL TAG="varxIdType2" EXPRESSION="|xIdType2|"/>
  <COL TAG="varxIdType3" EXPRESSION="|xIdType3|"/>
  <COL TAG="varxIdType4" EXPRESSION="|xIdType4|"/>
  <COL TAG="varxIdType5" EXPRESSION="|xIdType5|"/>
  <COL TAG="varxIdType6" EXPRESSION="|xIdType6|"/>
  <COL TAG="varxIdType7" EXPRESSION="|xIdType7|"/>
  <COL TAG="varxIdType8" EXPRESSION="|xIdType8|"/>
  <COL TAG="varxIdType9" EXPRESSION="|xIdType9|"/>
  <COL TAG="varxIdType10" EXPRESSION="|xIdType10|"/>
  <!-- -->
  <!--Check for duplicate identifiers and exclude the during the match-->
  <COL TAG="sqlRequestOCI" EXPRESSION="'select distinct XREF_TYPE from SECURITYDBO.non_unique_xrefid
  where XREF_QUALIFIER LIKE \'DUPLICATE%\' 
  and (investment_type is null OR investment_type IN (\'' + :tag11: +'\'))''"/>
  <COL TAG="sqlRequestOLEDB" EXPRESSION="'select distinct XREF_TYPE from security.dbo.non_unique_xrefid
  where XREF_QUALIFIER LIKE \'DUPLICATE%\' 
  and (investment_type is null OR investment_type IN (\'' + :tag11: +'\'))''"/>
  <STATUS EXPR="':tag11:='+:tag11:" CONDITION="1"/>
  <MSGEXCHANGE NAME="FIND_DUPL" CONDITION=":tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW'">
    <CHANNEL CHANNELTYPE="DB"/>
    <DBREQUEST RESULTVAR="FIND_DUPL_RESULT_DATA" TIMEOUT="60" FORMAT="TAGVALUE" AUTOMAPPING="YES">
      <EVENT>
        <IMPL DRIVER="OCI" SQLTYPE="SQL" EXPRESSION=":sqlRequestOCI:"/>
        <IMPL DRIVER="OLEDB" SQLTYPE="SQL" EXPRESSION=":sqlRequestOLEDB:"/>
        <INPUT_PAR/>
      </EVENT>
    </DBREQUEST>
  </MSGEXCHANGE>
  <STATUS EXPR="':FIND_DUPL_RESULT_DATA:='+:FIND_DUPL_RESULT_DATA:" CONDITION="1"/>
  <CODE>:FIND_DUPL_RESULT_DATA: := Replace(:FIND_DUPL_RESULT_DATA:,'120::','');</CODE>
  <!-- Delete duplicate identifiers from batting order-->
  <COL TAG="varBattingOrder" EXPRESSION="','+:varBattingOrder:+','"/>
  <FOREACH DATASOURCE="EXPRESSION" FORMAT="STAR" DATAEXPRESSION=":FIND_DUPL_RESULT_DATA:" RECORDSEPARATOR="\n" TAGVALUESEPARATOR=":">
    <STATUS EXPR="'Duplicate Xref Type ='+:XREF_TYPE: "/>
    <LOOP CONDITION="Find(lower(:varBattingOrder:), ','+Lower(:XREF_TYPE:)) = -1 AND Find(:varBattingOrder:,',xId') !=-1 AND Find(',BBID,', ','+(:XREF_TYPE:)+',') = -1" TYPE="WHILE">
      <LOOP VARNAME="id_num" FROM="1" TO="10" STEP="1" TYPE="FOR">
        <CODE>IF :XREF_TYPE: = GetVariable('varxIdType'+:id_num:) THEN
           :varBattingOrder: := replace(:varBattingOrder:, 'xId'+:id_num:+',', '');</CODE>
      </LOOP>
      <BREAK CONDITION="1"/>
    </LOOP>
    <LOOP CONDITION="Find(lower(:varBattingOrder:), ','+Lower(:XREF_TYPE:)) != -1 or Find(',BBID,', ','+(:XREF_TYPE:)+',') != -1" TYPE="WHILE">
      <CODE>IF :XREF_TYPE:='BBID' THEN
        :varBattingOrder: := replace(:varBattingOrder:, ',bloombergId,', ',')
        ELSE
        IF :XREF_TYPE:='CUSIP' THEN :varBattingOrder: := replace(:varBattingOrder:, ',cusip,', ',')
        ELSE
        IF :XREF_TYPE:='CUSIPPAY' THEN :varBattingOrder: := replace(:varBattingOrder:, ',cusipPay,', ',')
        ELSE  
        IF :XREF_TYPE:='CUSIPRECEIVE' THEN :varBattingOrder: := replace(:varBattingOrder:, ',cusipReceive,', ',')
        ELSE 
        IF Find(:varBattingOrder:, ','+Lower(:XREF_TYPE:)+',') != -1 THEN :varBattingOrder: := replace(:varBattingOrder:, ','+Lower(:XREF_TYPE:)+',', ',')
        ELSE :varBattingOrder: := replace(:varBattingOrder:, lower(:XREF_TYPE:), '')</CODE>
      <BREAK CONDITION="1"/>
    </LOOP>
  </FOREACH>
  <CODE>:varBattingOrder: := replace(:varBattingOrder:, ',Id', '');
    :varBattingOrder: := replace(:varBattingOrder:, ',,', ',');
    IF Substring(:varBattingOrder:,StringLength(:varBattingOrder:)-1,1)  = ',' THEN :varBattingOrder: := Substring(:varBattingOrder:,0,StringLength(:varBattingOrder:)-1);
    IF Substring(:varBattingOrder:,0,1) =',' THEN :varBattingOrder: := Substring(:varBattingOrder:,1,StringLength(:varBattingOrder:)-1);</CODE>
  <!-- Map identifiers into tags for Security Resolution-->
  <STATUS EXPR="'Batting Order After Delete Duplicates='+:varBattingOrder:" CONDITION=":tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW'"/>
  <COL TAG="tmpBatOr" EXPRESSION=":varBattingOrder:"/>
  <INCLUDE FILE="../../eagle_default/in/xml/include/identifiers_type_resolution.inc"/>
  <LOOP VARNAME="i_1" FROM="0" TO="8" STEP="1" TYPE="FOR">
    <CODE>:xrefTag: :=1952+Atoi(:i_1:)*3;
      :xrefTypeTag: :=:xrefTag:+1;
      :pos1: :=Find(:tmpBatOr:,',');
      :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);</CODE>
    <LOOP CONDITION="StringLength(GetVariable('var'+:xrefName:))=0" TYPE="WHILE">
      <CODE>:tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);
        :pos1: :=Find(:tmpBatOr:,',');
        :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);</CODE>
      <BREAK CONDITION="Atoi(:pos1:)=-1"/>
    </LOOP>
    <BREAK CONDITION="StringLength(GetVariable('var'+:xrefName:))=0 AND Atoi(:pos1:)=-1"/>
    <CODE>:v_identifier: :=:xrefName:</CODE>
    <COL TAG="varTagValue" EXPRESSION="GetVariable('var'+:xrefName:)"/>
    <COL TAG="varTagTypeValue" EXPRESSION="ExecuteMethod('ident_type_resolution')"/>
    <CODE>CreateVariable('tag'+:xrefTag:,:varTagValue:);
      CreateVariable('tag'+:xrefTypeTag:,:varTagTypeValue:);
      :tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);</CODE>
    <STATUS EXPR="'tag'+:xrefTag:+' = '+GetVariable('tag'+:xrefTag:)+'/tag'+:xrefTypeTag:+' = '+GetVariable('tag'+:xrefTypeTag:)"/>
    <BREAK CONDITION="Atoi(:i_1:)=8 OR Atoi(:pos1:)=-1"/>
  </LOOP>
  <COL TAG="tag1976" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW', iif(StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0,|primaryAssetId| + |swapType| + '1',iif(StringLength(:tag14:)&gt;0 and StringLength(:tag4590:)&gt;0,:tag14: + :tag4590: + '1',:tag1976: )),:tag1976:)"/>
  <COL TAG="tag1977" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW' and (StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0 or StringLength(:tag14:)&gt;0 and StringLength(:tag4590:)&gt;0),'SWAPID',:tag1977:)"/>
  <COL TAG="tag1979" EXPRESSION=":tag14:"/>
  <COL TAG="tag1980" EXPRESSION="IIf(stringlength(:tag1979:) &gt; 0,:tag1432:,'')"/>
  <!-- remap tags -->
  <COL TAG="1952" EXPRESSION=":tag1952:"/>
  <COL TAG="1953" EXPRESSION=":tag1953:"/>
  <COL TAG="1955" EXPRESSION=":tag1955:"/>
  <COL TAG="1956" EXPRESSION=":tag1956:"/>
  <COL TAG="1958" EXPRESSION=":tag1958:"/>
  <COL TAG="1959" EXPRESSION=":tag1959:"/>
  <COL TAG="1961" EXPRESSION=":tag1961:"/>
  <COL TAG="1962" EXPRESSION=":tag1962:"/>
  <COL TAG="1964" EXPRESSION=":tag1964:"/>
  <COL TAG="1965" EXPRESSION=":tag1965:"/>
  <COL TAG="1967" EXPRESSION=":tag1967:"/>
  <COL TAG="1968" EXPRESSION=":tag1968:"/>
  <COL TAG="1970" EXPRESSION=":tag1970:"/>
  <COL TAG="1971" EXPRESSION=":tag1971:"/>
  <COL TAG="1973" EXPRESSION=":tag1973:"/>
  <COL TAG="1974" EXPRESSION=":tag1974:"/>
  <COL TAG="1976" EXPRESSION=":tag1976:"/>
  <COL TAG="1977" EXPRESSION=":tag1977:"/>
  <COL TAG="1979" EXPRESSION=":tag1979:"/>
  <COL TAG="1980" EXPRESSION=":tag1980:"/>
  <!-- -->
  <COL TAG="MATCH_XREF_ID" EXPRESSION="'MATCH_XREF_ID'"/>
  <!-- Tag 38 should be defined here as it is used for security resolution -->
  <COL TAG="38" EXPRESSION="IF StringLength (:tag38:) &gt;0 THEN :tag38: ELSE IF StringLength( |maturityDate| ) &gt; 0 THEN Convert( Date( Left(|maturityDate|,10), &quot;yyyy-mm-dd&quot; ), &quot;yyyymmdd&quot;) ELSE Convert( Date( Left(|expirationDate|,10), &quot;yyyy-mm-dd&quot; ), &quot;yyyymmdd&quot;)"/>
  <!-- MATCH_ALL section-->
  <LOOP CONDITION="Find( :SEC_RES_OPTION:, 'MATCH_ALL', 0, 1 ) != -1  AND ((:tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW') OR ((:tag3931: = 'FWXXXX' OR LEFT(:tag3931:,2) = 'SW') AND StringLength(:tag14:) = 0))" TYPE="WHILE">
    <STATUS EXPR="'Pair 1: ' + :tag1952: + '/' + :tag1953: + '\n' +
  'Pair 2: ' + :tag1955: + '/' + :tag1956: + '\n' +
  'Pair 3: ' + :tag1958: + '/' + :tag1959: + '\n' +
  'Pair 4: ' + :tag1961: + '/' + :tag1962: + '\n' +
  'Pair 5: ' + :tag1964: + '/' + :tag1965: + '\n' +
  'Pair 6: ' + :tag1967: + '/' + :tag1968: + '\n' +
  'Pair 7: ' + :tag1970: + '/' + :tag1971: + '\n' +
  'Pair 8: ' + :tag1973: + '/' + :tag1974: + '\n' +
  'Pair 9: ' + :tag1976: + '/' + :tag1977: + '\n' +
  'Pair 10: ' + :tag1979: + '/' + :tag1980: + '\n' +
  'Exchange: ' + :tag1981: + '\n' +
  'Currency: ' + :tag85: + '\n' +
  'Maturity: ' + :tag38: + '\n' +
  'SEC_RES_OPTION: ' + :SEC_RES_OPTION:"/>
    <INCLUDE FILE="../../eagle_default/in/xml/include/match_all_sec_resolution.inc"/>
    <COL TAG="1443" EXPRESSION="IIF( Find(Upper(|objectType|),'UNDERLYING',0,1) = -1,  IF (Atoi(:tag1978:) = 0 AND (Atoi(:tag1951:) &gt; 1 OR Atoi(:tag1954:) &gt; 1 OR Atoi(:tag1957:) &gt; 1 OR Atoi(:tag1960:) &gt; 1 OR Atoi(:tag1963:) &gt; 1 OR Atoi(:tag1966:) &gt; 1 OR Atoi(:tag1969:) &gt; 1 OR Atoi(:tag1972:) &gt; 1 OR Atoi(:tag1975:) &gt; 1)) THEN &quot;Y&quot; ELSE &quot;N&quot; , '')"/>
    <LOOKUP NAME="secdetail" CONDITION="atoi(:tag10:) &gt; 0 AND :tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW'" INMAP="10=tag10" OUTMAP="sw_14=14,sw_1432=1432" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qissuedetail.htm" USERDESCRIPTION="SMF DETAIL LOOKUP"/>
    <COL TAG="14" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_14:, :tag14:)"/>
    <COL TAG="1432" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_1432:, :tag1432:)"/>
    <COL TAG="10" EXPRESSION="iif(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW',0,:tag10:)"/>
    <BREAK CONDITION="1"/>
  </LOOP>
  <LOOP CONDITION="Find( :SEC_RES_OPTION:, 'MATCH_ALL', 0, 1 ) = -1 AND ((:tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW') OR ((:tag3931: = 'FWXXXX' OR LEFT(:tag3931:,2) = 'SW') AND StringLength(:tag14:) = 0))" TYPE="WHILE">
    <CODE USERDESCRIPTION="SECURITY RESOLUTION INPUT">:sec_resolution_input: :='1256=MATCH_XREF_ID,';
      IF :SEC_RES_OPTION: = 'ALL' THEN
      BEGIN
      IF StringLength(:tag1981:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1981=tag1981,';
      IF StringLength(:tag38:)   &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '38=tag38,';
      IF StringLength(:tag85:)   &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '85=tag85,';
      IF StringLength(:tag1953:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1952=tag1952,1953=tag1953,';
      IF StringLength(:tag1956:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1955=tag1955,1956=tag1956,';
      IF StringLength(:tag1959:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1958=tag1958,1959=tag1959,';
      IF StringLength(:tag1962:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1961=tag1961,1962=tag1962,';
      IF StringLength(:tag1965:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1964=tag1964,1965=tag1965,';
      IF StringLength(:tag1968:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1967=tag1967,1968=tag1968,';
      IF StringLength(:tag1971:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1970=tag1970,1971=tag1971,';
      IF StringLength(:tag1974:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1973=tag1973,1974=tag1974,';
      IF StringLength(:tag1977:) &gt; 0 THEN :sec_resolution_input: := :sec_resolution_input: + '1976=tag1976,1977=tag1977,';
      END
      ELSE
      BEGIN
      IIF(Find( :SEC_RES_OPTION:, 'XREF_EXCHANGE', 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1981=tag1981,',NOP());
      IIF(Find( :SEC_RES_OPTION:, 'MATURITY_DATE', 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '38=tag38,',NOP());
      IIF(Find( :SEC_RES_OPTION:, 'ASSET_CURRENCY', 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '85=tag85,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1953:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1952=tag1952,1953=tag1953,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1956:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1955=tag1955,1956=tag1956,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1959:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1958=tag1958,1959=tag1959,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1962:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1961=tag1961,1962=tag1962,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1965:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1964=tag1964,1965=tag1965,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1968:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1967=tag1967,1968=tag1968,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1971:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1970=tag1970,1971=tag1971,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1974:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1973=tag1973,1974=tag1974,',NOP());
      IIF(Find( :SEC_RES_OPTION:, :tag1977:, 0, 1 ) != -1,:sec_resolution_input: := :sec_resolution_input: + '1976=tag1976,1977=tag1977,',NOP());
      END;
      :sec_resolution_input: := :sec_resolution_input: + '1979=tag1979,1980=tag1980';</CODE>
    <STATUS EXPR="'Batting order  \n' + 
  'Pair 1: ' + :tag1952: + '/' + :tag1953: + '\n' +
  'Pair 2: ' + :tag1955: + '/' + :tag1956: + '\n' +
  'Pair 3: ' + :tag1958: + '/' + :tag1959: + '\n' +
  'Pair 4: ' + :tag1961: + '/' + :tag1962: + '\n' +
  'Pair 5: ' + :tag1964: + '/' + :tag1965: + '\n' +
  'Pair 6: ' + :tag1967: + '/' + :tag1968: + '\n' +
  'Pair 7: ' + :tag1970: + '/' + :tag1971: + '\n' +
  'Pair 8: ' + :tag1973: + '/' + :tag1974: + '\n' +
  'Pair 9: ' + :tag1976: + '/' + :tag1977: + '\n' +
  'Pair 10: ' + :tag1979: + '/' + :tag1980: + '\n' +
  'Exchange: ' + :tag1981: + '\n' +
  'Currency: ' + :tag85: + '\n' +
  'Maturity: ' + :tag38: + '\n' +
  'SEC_RES_OPTION: ' + :SEC_RES_OPTION:"/>
    <!-- <LOOKUP NAME="SECURITY_RESOLUTION" CONDITION="Find( :sec_resolution_input:,',19',0,1 ) != -1 AND (:tag3931: != 'FWXXXX' AND LEFT(:tag3931:,2) != 'SW')" INMAP="" OUTMAP="10=10,1951=1951,1954=1954,1957=1957,1960=1960,1963=1963,1966=1966,1969=1969,1972=1972,1975=1975,1978=1978" INMAPEXPR=":sec_resolution_input:" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref-s-msgcntr.htm" FORCEADDTAGS="85"/> -->
    <LOOKUP NAME="SECURITY_RESOLUTION" CONDITION="Find( :sec_resolution_input:,',19',0,1 ) != -1" INMAP="" OUTMAP="10=10,1951=1951,1954=1954,1957=1957,1960=1960,1963=1963,1966=1966,1969=1969,1972=1972,1975=1975,1978=1978" INMAPEXPR=":sec_resolution_input:" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref-s-msgcntr.htm" FORCEADDTAGS="85"/>
    <COL TAG="1443" EXPRESSION="IIF( Find(Upper(|objectType|),'UNDERLYING',0,1) = -1,  IF (Atoi(:tag1978:) = 0 AND (Atoi(:tag1951:) &gt; 1 OR Atoi(:tag1954:) &gt; 1 OR Atoi(:tag1957:) &gt; 1 OR Atoi(:tag1960:) &gt; 1 OR Atoi(:tag1963:) &gt; 1 OR Atoi(:tag1966:) &gt; 1 OR Atoi(:tag1969:) &gt; 1 OR Atoi(:tag1972:) &gt; 1 OR Atoi(:tag1975:) &gt; 1)) THEN &quot;Y&quot; ELSE &quot;N&quot; , '')"/>
    <COL TAG="10" EXPRESSION="IF (Atoi(:tag1951:) &gt; 1 OR Atoi(:tag1954:) &gt; 1 OR Atoi(:tag1957:) &gt; 1 OR Atoi(:tag1960:) &gt; 1 OR Atoi(:tag1963:) &gt; 1 OR Atoi(:tag1966:) &gt; 1 OR Atoi(:tag1969:) &gt; 1 OR Atoi(:tag1972:) &gt; 1 OR Atoi(:tag1975:) &gt; 1 OR Atoi(:tag1978:) &gt; 1) THEN :tag10: ELSE 0" CONTENT="REFERENCE_NO"/>
    <LOOKUP NAME="secdetail" CONDITION="atoi(:tag10:) &gt; 0 AND :tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW'" INMAP="10=tag10" OUTMAP="sw_14=14,sw_1432=1432,sw_85=85" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qissuedetail.htm" USERDESCRIPTION="SMF DETAIL LOOKUP"/>
    <COL TAG="14" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_14:, :tag14:)"/>
    <COL TAG="1432" EXPRESSION="IIF(stringlength(:tag14:) = 0, :sw_1432:, :tag1432:)"/>
    <COL TAG="10" EXPRESSION="iif(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW',0,:tag10:)"/>
    <BREAK CONDITION="1"/>
  </LOOP>
  <!-- Check on different sec aliases to be the same, otherwise raise the error. At the moment set it 1 always -->
  <COL TAG="varSecResolutionSuccess" EXPRESSION="'1'"/>
  <LOOP CONDITION="(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW')" TYPE="WHILE">
    <COL TAG="PRIMARY" EXPRESSION="'PRIMARY'"/>
    <LOOKUP NAME="SECURITY_RESOLUTION_FW_SW" CONDITION="(:tag3931: = 'FWXXXX'  OR LEFT(:tag3931:,2) = 'SW')" INMAP="14=tag14,1432=tag1432,1256=PRIMARY" OUTMAP="sw961=961,10=10,sw4590=4590,fw1377=1377,s14=14" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qissuedetail_all.htm"/>
    <FOREACH DATASOURCE="LOOKUPRESULT" FORMAT="STAR" FILTER=":tag3931: = 'FWXXXX'" LOOKUPNAME="SECURITY_RESOLUTION_FW_SW" RECORDSEPARATOR="\n" TAGVALUESEPARATOR=":">
      <COL TAG="BUY_10" EXPRESSION="IIF(UPPER(:fw1377:) = 'B',:tag10:,:BUY_10:)"/>
      <COL TAG="SELL_10" EXPRESSION="IIF(UPPER(:fw1377:) = 'S',:tag10:,:SELL_10:)"/>
      <STATUS EXPR="'BUY_10 =' + :BUY_10: + '; 1377 =' + :fw1377: + '; SELL_10 =' + :SELL_10:  + '; tag10 = ' + :tag10: + '; 10 = ' + :10: + '; SECURITY_RESOLUTION_FWXXXX_FOREACH_ROW= ' + :SECURITY_RESOLUTION_FWXXXX_FOREACH_ROW:"/>
    </FOREACH>
    <FOREACH DATASOURCE="LOOKUPRESULT" FORMAT="STAR" FILTER="LEFT(:tag3931:,2) = 'SW' AND UPPER(:tag14:)=UPPER(:s14:)" LOOKUPNAME="SECURITY_RESOLUTION_FW_SW" RECORDSEPARATOR="\n" TAGVALUESEPARATOR=":">
      <COL TAG="PAY_10" EXPRESSION="IIF(UPPER(:sw4590:) = 'P',:tag10:,:PAY_10:)"/>
      <COL TAG="REC_10" EXPRESSION="IIF(UPPER(:sw4590:) = 'R',:tag10:,:REC_10:)"/>
      <COL TAG="CON_10" EXPRESSION="IIF(UPPER(:sw4590:) = 'C',:tag10:,:CON_10:)"/>
      <COL TAG="CON_961" EXPRESSION="IIF(UPPER(:sw4590:) = 'C',:sw961:,:CON_961:)"/>
      <STATUS EXPR="'P10 =' + :PAY_10: + ' R10 = ' + :REC_10: + ' C10 = ' + :CON_10:" CONDITION="1"/>
    </FOREACH>
    <COL TAG="10" EXPRESSION="IF (:tag3931: = 'FWXXXX' AND :tag1377:= 'B') THEN :BUY_10:
  ELSE IF (:tag3931: = 'FWXXXX' AND :tag1377:= 'S') THEN :SELL_10:
ELSE IF LEFT(:tag3931:,2) = 'SW' AND :swaptype: = 'C' THEN :CON_10:
ELSE IF LEFT(:tag3931:,2) = 'SW' AND :swaptype: = 'P' THEN :PAY_10:
ELSE IF LEFT(:tag3931:,2) = 'SW' AND :swaptype: = 'R' THEN :REC_10:
  ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'C' THEN :CON_10:
  ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'P' THEN :PAY_10:
  ELSE IF LEFT(:tag3931:,2) = 'SW' AND |swapType| = 'R' THEN :REC_10:
  ELSE :tag10:" CONTENT="REFERENCE_NO"/>
    <COL TAG="14" EXPRESSION="IIF(stringlength(:sw14:) &gt; 0, :sw14:, :tag14:)"/>
    <COL TAG="1432" EXPRESSION="IIF(stringlength(:sw14:) &gt; 0, :sw1432:, :tag1432:)"/>
    <LOOKUP NAME="SW_XREF_RES" CONDITION="StringLength( :tag10: ) &gt; 0 and Left(:tag3931:,2) = 'SW'" INMAP="10=tag10,1953=tag1953,1956=tag1956,1959=tag1959,1977=tag1977" OUTMAP="1951=1951,var_1954=1954,var_1955=1955,var_1956=1956,var_1957=1957,var_1958=1958,var_1959=1959,1975=1975,1976=1976,1977=1977" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref.htm"/>
    <COL TAG="1954" EXPRESSION="Iif( StringLength( :var_1954: ) = 0 , :tag1954:, :var_1954: )"/>
    <COL TAG="1955" EXPRESSION="Iif( StringLength( :var_1955: ) = 0 , :tag1955:, :var_1955: )"/>
    <COL TAG="1956" EXPRESSION="Iif( StringLength( :var_1956: ) = 0 , :tag1956:, :var_1956: )"/>
    <COL TAG="1957" EXPRESSION="Iif( StringLength( :var_1957: ) = 0 , :tag1957:, :var_1957: )"/>
    <COL TAG="1958" EXPRESSION="Iif( StringLength( :var_1958: ) = 0 , :tag1958:, :var_1958: )"/>
    <COL TAG="1959" EXPRESSION="Iif( StringLength( :var_1959: ) = 0 , :tag1959:, :var_1959: )"/>
    <COL TAG="9151" EXPRESSION="IF (:tag3931: = 'FWXXXX') THEN :tag10:
  ELSE IF LEFT(:tag3931:,2) = 'SW' AND (|swapType| = 'P' OR |swapType| = 'R' ) THEN :CON_10:
  ELSE Nop()" USERDESCRIPTION="DER CONTRACT SEC ALIAS"/>
    <BREAK CONDITION="1"/>
  </LOOP>
  <!-- Map identifiers into tags for Loading To Database -->
  <COL TAG="identifiersToLoad" EXPRESSION="Iif(:tag3931: = 'FWXXXX' and :tag11: = 'FWD' and StringLength( :tag13: ) != 0, Replace(:identifiersToLoad:,',ticker','') , :identifiersToLoad: )"/>
  <STATUS EXPR="':identifiersToLoad:='+:identifiersToLoad:" CONDITION="1"/>
  <COL TAG="tmpBatOr" EXPRESSION=":identifiersToLoad:"/>
  <INCLUDE FILE="../../eagle_default/in/xml/include/identifiers_type_resolution.inc"/>
  <LOOP VARNAME="i_1" FROM="0" TO="8" STEP="1" TYPE="FOR">
    <CODE>:xrefTag: :=1952+Atoi(:i_1:)*3;
      :xrefTypeTag: :=:xrefTag:+1;
      :pos1: :=Find(:tmpBatOr:,',');
      :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);</CODE>
    <LOOP CONDITION="StringLength(GetVariable('var'+:xrefName:))=0" TYPE="WHILE">
      <CODE>:tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);
        :pos1: :=Find(:tmpBatOr:,',');
        :xrefName: :=SubString(:tmpBatOr:,0,:pos1:);</CODE>
      <BREAK CONDITION="Atoi(:pos1:)=-1"/>
    </LOOP>
    <BREAK CONDITION="StringLength(GetVariable('var'+:xrefName:))=0 AND Atoi(:pos1:)=-1"/>
    <CODE>:v_identifier: :=:xrefName:</CODE>
    <COL TAG="varTagValue" EXPRESSION="GetVariable('var'+:xrefName:)"/>
    <COL TAG="varTagTypeValue" EXPRESSION="ExecuteMethod('ident_type_resolution')"/>
    <CODE>CreateVariable('tag'+:xrefTag:,:varTagValue:);
      CreateVariable('tag'+:xrefTypeTag:,:varTagTypeValue:);
      :tmpBatOr: :=SubString(:tmpBatOr:,:pos1:+1);</CODE>
    <STATUS EXPR="'tag'+:xrefTag:+' = '+GetVariable('tag'+:xrefTag:)+'/tag'+:xrefTypeTag:+' = '+GetVariable('tag'+:xrefTypeTag:)"/>
    <BREAK CONDITION="Atoi(:i_1:)=8 OR Atoi(:pos1:)=-1"/>
  </LOOP>
  <COL TAG="tag1976" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW' and StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0 ,|primaryAssetId| + |swapType| + '1',:tag1976:)"/>
  <COL TAG="tag1977" EXPRESSION="IIF(LEFT(:tag3931:,2) = 'SW' and StringLength(|primaryAssetId|)&gt;0 and StringLength(|swapType|)&gt;0,'SWAPID',:tag1977:)"/>
  <COL TAG="tag1979" EXPRESSION=":tag14:"/>
  <COL TAG="tag1980" EXPRESSION="IIf(stringlength(:tag1979:) &gt; 0,:tag1432:,'')"/>
  <!-- remap tags -->
  <COL TAG="1952" EXPRESSION=":tag1952:"/>
  <COL TAG="1953" EXPRESSION=":tag1953:"/>
  <COL TAG="1955" EXPRESSION=":tag1955:"/>
  <COL TAG="1956" EXPRESSION=":tag1956:"/>
  <COL TAG="1958" EXPRESSION=":tag1958:"/>
  <COL TAG="1959" EXPRESSION=":tag1959:"/>
  <COL TAG="1961" EXPRESSION=":tag1961:"/>
  <COL TAG="1962" EXPRESSION=":tag1962:"/>
  <COL TAG="1964" EXPRESSION=":tag1964:"/>
  <COL TAG="1965" EXPRESSION=":tag1965:"/>
  <COL TAG="1967" EXPRESSION=":tag1967:"/>
  <COL TAG="1968" EXPRESSION=":tag1968:"/>
  <COL TAG="1970" EXPRESSION=":tag1970:"/>
  <COL TAG="1971" EXPRESSION=":tag1971:"/>
  <COL TAG="1973" EXPRESSION=":tag1973:"/>
  <COL TAG="1974" EXPRESSION=":tag1974:"/>
  <COL TAG="1976" EXPRESSION=":tag1976:"/>
  <COL TAG="1977" EXPRESSION=":tag1977:"/>
  <COL TAG="1979" EXPRESSION=":tag1979:"/>
  <COL TAG="1980" EXPRESSION=":tag1980:"/>
  <!-- -->
  <LOOKUP NAME="XREF_RESOLUTION" CONDITION="Atoi(:tag10:) &gt; 0 and Left(:tag3931:,2) != 'SW'" INMAP="10=tag10,1953=tag1953,1956=tag1956,1959=tag1959,1962=tag1962,1965=tag1965,1968=tag1968,1971=tag1971,1974=tag1974,1977=tag1977" OUTMAP="1951=1951,1954=1954,1957=1957,1960=1960,1963=1963,1966=1966,1969=1969,1972=1972,1975=1975" PANFILENAME="tpe/dynamic/dat/eagle/star/pan-qxref.htm"/>
  <COL TAG="1257" EXPRESSION="IIf(Atoi(:tag10:) &gt; 0 AND |historyOnlyFlag|='Y', 'HISTORY_ONLY','')"/>
  <!-- Not add new security if FAILED_ON_UNMATCHED is set-->
  <EDITCHECK EXPR="atoi(:tag10:)&gt;0 or Find( :SEC_RES_OPTION:, 'FAIL_ON_UNMATCHED', 0, 1 ) = -1 " ERRORMESSAGEEXPR="'Security Alias not found. FAIL_ON_UNMATCHED is set'"/>
  <BREAK CONDITION="1"/>



  • No labels