Find members held in more than one environment
io.moderne.mainframe.inventory.FindEnvironmentCopiesio.moderne.recipe:recipes-mainframeOptions
Usage
Run this recipe
This recipe has no required configuration options. Users of Moderne can run it via the Moderne CLI.
You will need to have configured the Moderne CLI on your machine before you can run the following command.
mod run . --recipe FindEnvironmentCopies
To also set the recipe's optional settings, add them to the command. The values below are examples, not recommendations; see Options for what each one does.
mod run . --recipe FindEnvironmentCopies --recipe-option "layout='{application}/{environment}'"
If the recipe is not available locally, then you can install it using:
RELEASE resolves to the newest release and LATEST to the newest build of any kind, including snapshots. Either one lets mod config recipes upgrade pull in later versions without editing this command; a pinned version stays where you put it.
- RELEASE
- LATEST
- Pinned version
mod config recipes jar install io.moderne.recipe:recipes-mainframe:RELEASE
mod config recipes jar install io.moderne.recipe:recipes-mainframe:LATEST
mod config recipes jar install io.moderne.recipe:recipes-mainframe:0.1.0
Data tables
Environment copies
io.moderne.mainframe.analysis.table.EnvironmentCopiesThe same member held in more than one environment's libraries, and whether the copies still agree. Read from one copy's side, so a member promoted through three environments has a row from each of the three to each of the other two.
mod study . --last-recipe-run \
--data-table io.moderne.mainframe.analysis.table.EnvironmentCopies
| Column | Description |
|---|---|
| Member | The member name both copies answer to. |
| Component type | What the member is, in the types of ComponentIndex. Empty for a plain text member no DD names, which the portfolio has no type for. |
| Environment | The environment this copy is held in, as the segment of its path that names one: SLPROD, PREPROD, PROD. |
| Source path | This copy's file. |
| Owning application | The application whose library this is, where the layout says which segment names it. Empty where an environment holds one library for the whole site, which is what the default layout reads. |
| Other environment | The environment the copy this row compares against is held in. |
| Other source path | That copy's file. |
| Comparison | IDENTICAL where the two are the same line for line, ENVIRONMENT_NAMES where a bind deck differs only in the subsystem, collection and DBRM library it binds on, and DIVERGED where they differ anywhere else. Only the last is drift somebody has to answer for. |
| Differing lines | How many of this copy's lines the other copy has not. Lines are matched wherever they sit, so a card moved is not a difference and a card changed is one on each side. Counted as written, so a bind deck bound on another subsystem has differing lines and no drift. |
COBOL relationships
org.openrewrite.mainframe.cobol.table.CobolRelationshipsRelationships between different COBOL resources.
mod study . --last-recipe-run \
--data-table org.openrewrite.mainframe.cobol.table.CobolRelationships
| Column | Description |
|---|---|
| Dependent | The resource that defines the relationship. |
| Dependent type | The resource type of the resource that defines the relationship. |
| Action | The action that links the dependent and dependency. |
| Dependency | The resource that is exercised or linked to. |
| Dependency type | The resource type of the resource that is exercised or linked to. |
| Dependency missing | Indicates whether the dependency is a known resource. |
| Action metadata | Additional data about the action. |
| Dependent path | The source file the dependent's statement was written in, or null when the dependent is a name that has no source here. |
| Dependent line | The one-based line the dependent's statement was written on, or null when it has no source here. |
| Dependency path | The source file the dependency was written in, or null when the dependency is a name that has no source here, such as a vendor copybook. |
| Dependency line | The one-based line the dependency's statement was written on, or null when the dependency is a whole file rather than a statement within one. |
Source files that had results
org.openrewrite.table.SourcesFileResultsSource files that were modified by the recipe run.
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SourcesFileResults
| Column | Description |
|---|---|
| Source path before the run | The source path of the file before the run. null when a source file was created during the run. |
| Source path after the run | A recipe may modify the source path. This is the path after the run. null when a source file was deleted during the run. |
| Parent of the recipe that made changes | In a hierarchical recipe, the parent of the recipe that made a change. Empty if this is the root of a hierarchy or if the recipe is not hierarchical at all. |
| Recipe that made changes | The specific recipe that made a change. |
| Estimated time saving | An estimated effort that a developer to fix manually instead of using this recipe, in unit of seconds. |
| Cycle | The recipe cycle in which the change was made. |
Source files that had search results
org.openrewrite.table.SearchResultsSearch results that were found during the recipe run.
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SearchResults
| Column | Description |
|---|---|
| Source path of search result before the run | The source path of the file with the search result markers present. |
| Source path of search result after run the run | A recipe may modify the source path. This is the path after the run. null when a source file was deleted during the run. |
| Result | The trimmed printed tree of the LST element that the marker is attached to. |
| Description | The content of the description of the marker. |
| Recipe that added the search marker | The specific recipe that added the Search marker. |
Source files that errored on a recipe
org.openrewrite.table.SourcesFileErrorsThe details of all errors produced by a recipe run.
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SourcesFileErrors
| Column | Description |
|---|---|
| Source path | The file that failed to parse. |
| Recipe that made changes | The specific recipe that made a change. |
| Stack trace | The stack trace of the failure. |
Recipe performance
org.openrewrite.table.RecipeRunStatsStatistics used in analyzing the performance of recipes.
mod study . --last-recipe-run \
--data-table org.openrewrite.table.RecipeRunStats
| Column | Description |
|---|---|
| The recipe | The recipe whose stats are being measured both individually and cumulatively. |
| Source file count | The number of source files the recipe ran over. |
| Source file changed count | The number of source files which were changed in the recipe run. Includes files created, deleted, and edited. |
| Cumulative scanning time (ns) | The total time spent across the scanning phase of this recipe. |
| Max scanning time (ns) | The max time scanning any one source file. |
| Cumulative edit time (ns) | The total time spent across the editing phase of this recipe. |
| Max edit time (ns) | The max time editing any one source file. |