Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Warning

This documentation is no longer maintained and may contain obsolete information. You should instead refer to Application onboarding.


Panel

On this page:

Table of Contents

...

Use the following SQL query to check the content of the modules associated to the application:

...


Code Block
languagesql
linenumberstrue
set search_path=<prefix>_local;

SELECT ps.MODULE_NAME, SUBSTRING(cob.OBJECT_FULLNAME FROM '\.([a-z]+)$') as extension, count(*)
FROM <prefix_local>.PMC_SUBSET_OBJECTS pso
 JOIN (SELECT ps.SUBSET_ID as MODULE_ID,
 pm.OBJECT_NAME as MODULE_NAME
 FROM (SELECT pm.OBJECT_ID,
 pm.OBJECT_NAME
 FROM <prefix_mngt>.CMS_PORTF_MODULE pm) pm
 JOIN <prefix.local>.PMC_SUBSETS ps
 ON ps.SUBSET_NAME LIKE 'CMS_MOD__' || pm.OBJECT_ID || '_Preparation2'
 ) ps
 ON pso.SUBSET_ID = ps.MODULE_ID
 JOIN <prefix_local>.CDT_OBJECTS cob
 ON cob.object_id = pso.object_id
 AND cob.OBJECT_TYPE_STR LIKE '%File'
GROUP BY MODULE_NAME, extension, cob.OBJECT_TYPE_STR
ORDER BY 1 ASC, 2 ASC;

The result should look like this:

...

Code Block
languagesql
linenumberstrue
set search_path=<Prefix>_mngt;
 
update cal_objsetdef set setdefinition = '<set>
  <selection-criteria subobjects="no" externalobjects="yes">
   <property name = "name" operator = "eq" >
    <value>GND0130</value>
    <value>M3194262</value>
    <value>M3109CCV</value>
    <value>M3194734</value>
    <value>M3194734</value>
    <value>M3109CGU</value>
    <value>M3109UM2</value>
    <value>M3109CGX</value>
    <value>GNDC920</value>
    <value>M3194480</value>
    <value>M3194480</value>
    <value>GND0307</value>
    <value>M3109CGX</value>
    <value>GND0301</value>
    <value>M3109CCV</value>
    <value>M319473X</value>
    <value>M3109UM2</value>
    <value>M3194T20</value>
    <value>M3194263</value>
    <value>M3194BDS</value>
    <value>M3194T20</value>
    <value>M3194871</value>
    <value>M3194BDS</value>
    <value>M319473X</value>
    <value>M3109CGU</value>
    <value>M3194262</value>
    <value>GNDCONV</value>
    <value>M3194263</value>
    <value>M3194871</value>
   </property>
   <property name = "type" operator = "eq" >
    <value>CAST_COBOL_SavedProgram</value>
   </property>
  </selection-criteria>
</set>
' where setname = 'Exposed Program';


 

The result can be seen in TCC as shown below:

...

In CAST Enlighten, these of objects can lead to this type of graphical view: 

 


Objects with High Fan-In

The purpose is to identify wrong links OR side effects in the FP counting due to these links. The SQL query presented here identifies the objects with High Fan-In (objects that are called by a lot of other objects) and must be executed against the Analysis Service. You can customize it with snapshot_id, application_id, ... as well as the type of objects (in this example, "C# Method" as considered but you can search for "Java Method" in Java application as well).

Code Block
languagesql
linenumberstrue
set search_path=<prefix>_local;
 
select count(O.object_id),O.object_id, O.object_name, O.object_fullname
from ctv_links L, ctv_guid_objects O
where L.called_id = O.object_id
and O.object_type_str = 'C# Method' --Java Method
group by L.called_id,O.object_id, O.object_name,O.object_fullname
order by 1 desc
limit 100;

The results should look like this:

In CAST Enlighten, these of objects can lead to this type of graphical view:

Appendix B: Searching for potential Transaction Entry Points

The purpose is to identify missing links. The SQL query presented here identifies objects that are not called (ex: unreferenced methods) and must be executed against the Analysis Service. It can be customized with other types of objects (ex: "Java Method"):

Code Block
languagesql
linenumberstrue
set search_path=<prefix>_local;
 
select *
from ctv_guid_objects O
where O.object_id not in (select l.called_id from ctv_links L)
and O.object_type_str = 'C# Method'
limit 100;

This list must be validated by the SME and the application team and the transaction configuration must then be adjusted accordingly.

Appendix C: Searching for potential Transaction End Points

The purpose is to identify missing links. The SQL query presented here identifies objects that do not call any other object. This situation may happen if, for instance, a DAO object is analyzed and there is no corresponding database in the application boundary. This object can be seen as an interface and then it should be considered as Transaction End Point that contributes to the transaction.

This SQL query must be executed against the Analysis Service and can be customized with other types of objects (ex: "Java Method"):

Code Block
languagesql
linenumberstrue
set search_path=<prefix>_local;
 
select *
from ctv_guid_objects O
where O.object_id not in (select l.caller_id from ctv_links L)
and O.object_type_str = 'C# Method'
limit 100;

This list must be validated by the SME and the application team and the transaction configuration must be adjusted accordingly.

Appendix D: List of Transaction End Points

The following SQL query searches for all the objects that have been identified as Transaction End Points. It must be executed against the Analsysis Service.

Code Block
languagesql
linenumberstrue
set search_path=<prefix>_local;
 
select count(1) as used, dtd.child_id, obj.object_name, obj.object_fullname, obj.object_type_str, obj.object_language_name
from dss_transactiondetails dtd, cdt_objects obj
where dtd.childtype in (5, 6 ,7)
and dtd.child_id = obj.object_id
group by 2,3,4,5,6
order by 1 desc,2 asc ,3 asc;

The results should look like this:

Click to enlarge:

This list must be validated by the SME and the application team.