Generating and Implementing Applications: Release 8.7
Generating and Implementing Applications: Release 8.7
Contact CA Technologies
Contact CA Support
For your convenience, CA Technologies provides one site where you can access the
information that you need for your Home Office, Small Business, and Enterprise CA
Technologies products. At http://ca.com/support, you can access the following
resources:
■ Online and telephone contact information for technical assistance and customer
services
■ Information about user communities and forums
■ Product and documentation downloads
■ CA Support policies and guidelines
■ Other helpful resources appropriate for your product
Contents 5
Using Change Control Facilities Commands ........................................................................................................ 38
Example 1 ............................................................................................................................................................ 39
Example 2 ............................................................................................................................................................ 40
Example 3 ............................................................................................................................................................ 41
Working with Model Object Lists ............................................................................................................................... 42
Editing a Model Object List ................................................................................................................................. 43
Creating a Model Object List ............................................................................................................................... 44
Editing Model Object Lists .......................................................................................................................................... 45
Edit Model Object List Panel ............................................................................................................................... 46
Selecting Another Model Object List .................................................................................................................. 47
Subfile Select Options ......................................................................................................................................... 47
User-defined Subfile Select Options ................................................................................................................... 47
CA 2E Subfile Select Options ............................................................................................................................... 48
Function Keys ...................................................................................................................................................... 53
Command Line .................................................................................................................................................... 56
Merging Entries with Commands ........................................................................................................................ 56
Retrieving Commands ......................................................................................................................................... 58
Using Special Command Line Values to Retrieve Commands ............................................................................. 59
Full Screen Mode ................................................................................................................................................ 61
Grouping and Navigation Aids ............................................................................................................................ 61
Subsetting a Model Object List ........................................................................................................................... 62
Positioning a Model Object List .......................................................................................................................... 63
Display Order of Model Objects .......................................................................................................................... 64
Filtering a Named Model Object List ................................................................................................................... 65
Editing Model Objects ......................................................................................................................................... 67
Viewing Model Objects ....................................................................................................................................... 68
Viewing a Model Object's Edit Panel .................................................................................................................. 68
Viewing a Model Object Description................................................................................................................... 68
Creating Model Object Lists ................................................................................................................................ 69
Adding Entries to a Named Model Object List .................................................................................................... 69
Adding Entries to the Current Model Object List ................................................................................................ 70
Adding Entries to an Alternate Model Object List............................................................................................... 70
Deleting a Model Object or a Model List Entry ................................................................................................... 71
Selecting Job List Commands .............................................................................................................................. 72
Copying Model Objects ....................................................................................................................................... 72
Creating Copies of Functions and Messages ....................................................................................................... 73
Copying Entries Between Model Object Lists ..................................................................................................... 73
Performing User-defined Actions on Model List Entries ..................................................................................... 73
Copying Model Objects Between Models ........................................................................................................... 74
Using Substitution Variables ............................................................................................................................... 75
Defining and Editing User-defined Options ........................................................................................................ 76
Executing a Model Object List ............................................................................................................................. 77
Contents 7
Model Profile ............................................................................................................................................................ 120
Changing a Model Profile .................................................................................................................................. 121
How Model Profiles are Stored ......................................................................................................................... 122
Managing Model Profiles .................................................................................................................................. 123
Managing Model Profiles .................................................................................................................................. 123
Working with Versions of Functions and Messages ................................................................................................. 123
Understanding Versions .................................................................................................................................... 124
Understanding Versions .................................................................................................................................... 124
A Reason Not to Use Versions ........................................................................................................................... 126
Working with Versions ...................................................................................................................................... 126
Viewing a Version Group ................................................................................................................................... 127
Creating a Version ............................................................................................................................................. 128
Making a Version Current ................................................................................................................................. 130
Example ............................................................................................................................................................. 131
Cautions ............................................................................................................................................................ 133
Non-current Versions ........................................................................................................................................ 133
Other Uses for Redirection ............................................................................................................................... 134
Using Versions ................................................................................................................................................... 134
Testing an External Function ............................................................................................................................. 135
Testing Messages and Internal Functions ......................................................................................................... 135
Comparing Versions .......................................................................................................................................... 136
Deleting Versions .............................................................................................................................................. 136
Contents 9
Chapter 4: Generating and Compiling Your Application 175
Requesting Source Generation ................................................................................................................................ 175
Working from the Display Services Menu ......................................................................................................... 176
Using YBLDJOBLST to Submit Jobs .................................................................................................................... 179
Converting Condition Values ............................................................................................................................. 179
Generating Your Field Reference File ................................................................................................................ 179
Enabling Execution Environments ............................................................................................................................ 181
Field Condition Values for Status Fields ............................................................................................................ 182
Converting Field Condition Values .................................................................................................................... 182
Converting Condition Values in a Multi-model Environment ........................................................................... 183
Converting Model Messages ............................................................................................................................. 183
Verifying Results ....................................................................................................................................................... 184
Finding Errors Before Generation ..................................................................................................................... 185
Finding Errors After Generation ........................................................................................................................ 186
Interactive Generation Errors ........................................................................................................................... 186
Finding Errors After Compilation ...................................................................................................................... 186
From the Display Services Menu ....................................................................................................................... 187
Display the Compile Listing ............................................................................................................................... 187
Using Job Logs ................................................................................................................................................... 187
Resetting Job Log Severity Level ....................................................................................................................... 188
Accessing an Interactive Job Log ....................................................................................................................... 188
Working with the Output Queue ...................................................................................................................... 188
Debug Aids ........................................................................................................................................................ 189
Generating and Compiling After Changes ................................................................................................................ 189
Impact Analysis ................................................................................................................................................. 190
What to Generate/Compile When You Change a Model Object ...................................................................... 190
Changes Requiring Generation/Compilation .................................................................................................... 191
Finding Where CA 2E Objects are Used ............................................................................................................ 194
Model Object Usages ........................................................................................................................................ 195
Model Object References.................................................................................................................................. 196
Finding Unreferenced Model Objects ............................................................................................................... 196
Toolkit Convert Commands ............................................................................................................................... 196
Multi-Programmer Environments ..................................................................................................................... 197
Retaining Data When You Recreate Physical Files ............................................................................................ 197
Contents 11
CA 2E Implementation of DRDA ............................................................................................................................... 225
Shipped Defaults ............................................................................................................................................... 226
Steps to Implement DRDA................................................................................................................................. 227
Development Environments for DRDA in CA 2E ............................................................................................... 228
Using Shipped DRDA Values ..................................................................................................................................... 228
DRDA Model Values .......................................................................................................................................... 229
Distributed Flag ................................................................................................................................................. 230
Function Options ............................................................................................................................................... 230
Accessing Multiple Systems with the Same File Name ..................................................................................... 231
Functions with Subfiles ..................................................................................................................................... 232
DRDA Control Fields .......................................................................................................................................... 233
Referential Integrity .......................................................................................................................................... 233
Commands for DRDA................................................................................................................................................ 234
YCVTDSTFIL: Convert Distributed Files to Configuration .................................................................................. 234
YWRKDSTFIL: Work with Distributed Files ........................................................................................................ 235
Working with Configuration Table Entries for Tables ....................................................................................... 236
RDB Name ......................................................................................................................................................... 236
Seq..................................................................................................................................................................... 237
Collection .......................................................................................................................................................... 237
Working with Configuration Table Entries for Views ........................................................................................ 237
Index 261
Contents 13
Chapter 1: Managing Model Objects
This chapter describes the change control facilities provided by CA® 2E for managing
changes to your model.
CM has extensive capabilities for controlling your entire operation including the
following:
■ Check out and promotion of CA 2E design objects using model object lists
■ Automated control of versions for functions and messages
■ Automated archiving and roll-back of functions and messages
■ Authority to model object lists
■ Control of access to CA 2E
■ panels
■ Authority to access, view, or edit model object types
CA 2E r8.7 with Implementer 11.0 and PTC patch 948724 now allows you to do the
following tasks:
■ Promote *DDL-based objects from one environment to another.
■ Convert between *DDS and *DDL generation modes for objects in Production. You
can check out *DDS PFs / LFs, convert them to *DDL tables / indexes and promote
the new *DDL objects. You can check out *DDL tables / indexes, convert them to
*DDS PFs / LFs and promote the *DDS objects to Production.
During the promotion request creation involving *DDL objects, a *DDL table takes the
YSQLPF object code and a *DDL index takes the YSQLLF object code.
CM does not support "promotion with compile" for SQL-based access paths. The only
way to promote them is with "promotion with moving as a 3GL object." When
attempting to promote *DDL objects, this same process is followed.
For more information, see the Implementer 11.0 documentation for patch 948724
https://support.ptc.com/appserver/cs/view/solution.jsp?n=CS176520.
Limitations:
■ For CM Promotion of DDL Objects (Not Switched from DDS):
■ If the database is implemented with YSQLVNM = *SQL, irrespective of
generation mode as *SQL/*DDL, the promotion of "physical file"/"table" access
paths is not successful.
■ For CM promotion of DDL objects (DDS to DDL Conversion):
■ When attempting a *DDS to *DDL / *DDL to *DDS conversion, you must
generate the *DDS / *DDL objects into the same object library.
■ The new CM functionality only caters to *DDS to *DDL / *DDL to *DDS
conversions. *DDS to *SQL / *SQL to *DDS conversions are not supported. We
recommend you not to carry out a *DDS to *SQL / *SQL to *DDS conversion.
Model Objects
Model object is another term for a CA 2E design object such as an access path, a
function, or a field.
Some model objects, such as external functions and access paths, have corresponding
implementation objects, namely, generated source and the compiled object. Model
objects having implementation objects are sometimes referred to as generatable
objects.
OBJSGT(1100897)
Note that it is generally more efficient to use the surrogate number when possible.
You can obtain it using the Retrieve Model Object (YRTVMDLOBJ) command.
■ Model Object Name—Consists of the owner, name, and type you assign when
creating a model object.
The following table shows the components of the model object name for each of
the supported model object types.
For example, the following shows the model object name for the Display Product
Details function that is owned by the Product file:
The object descriptions for all model objects are centrally maintained in the All Objects
list, also known as the *ALLOBJ list. Each time an object is changed, regenerated, or
imported, CA 2E automatically updates the model object's description in the All Objects
list to reflect the change.
For more information on the *ALLOBJ list and model object descriptions, see the All
Objects Model Object List section, in this chapter.
Each list entry contains information about a model object at the time the list entry was
created. In other words, a model object list provides an historic snapshot of a model or a
group of model objects. Each list entry contains the following:
■ Model object surrogate number
■ Model object name consisting of the owner, name, and type of the object
■ Date and time the model object was created
■ Date and time the model object was last changed
Note: Since model object lists provide an historic record, a model object list can contain
list entries that see objects that have been deleted from the model.
Each model list entry also contains a flag selection value that you can set and use for
filtering on model object list commands. For example, you can process only model list
entries flagged as selected or just those flagged as in error.
The following diagram illustrates the model object list and its relation to the CA 2E
model.
As shown in the diagram, model object lists can include model objects of different
object types. You can use a model object list to group related objects into a set in the
same way application areas let you group files. This enables you to manipulate or
process a set of model objects with a single command or to easily process a series of
tasks required as a result of a change to your model.
For example, suppose you need to change the length of a key field such as Customer
number. The following list suggests a way to use model object lists to simplify the
change process and ensure that all necessary tasks are done:
1. Use impact analysis to automatically build a list of all model objects affected by the
change.
2. Use the list of affected model objects as a guide to making the necessary related
changes to the identified objects.
3. Convert the list of affected model objects to a job list and submit the list for
generation and compilation.
4. Use the same list as a release or PTF and promote it through test and QA to the end
user sites.
Note: With CM, this promotion can occur automatically; for example, to multiple
remote locations.
The All Objects list contains a dynamic reference for each supported model object in the
model; in other words, whenever a model object is updated, its model object
description, or detail, is also updated. When referring to the All Objects list in
commands, it has the special name *ALLOBJ.
For more information on the All Objects list, see the All Objects List section in this
chapter.
Session Lists
A session list is a model object list to which all objects you change, add, or delete during
a session can be logged. Note that logging changes to a session list is optional.
The session list persists across your model sessions; in other words, the session list is
cumulative until you clear it. This lets you keep track of changed objects between model
sessions. As a result, you will probably want to clear your session list periodically so that
it contains only recently changed objects. You can clear your session list using option 9
on the Work with Model Lists panel.
You activate automatic logging of changes to the session list by setting the Log changed
objects option in your model profile to Y (Yes).
For more information on the model profile, see the Model Profile section in this
chapter.
Example
Suppose you need to regenerate all external functions that use model objects contained
in the session list. You can produce a list of these functions by using the Display Model
Usages (YDSPMDLUSG) command. The following command creates a model object list
(list-name) consisting of all model objects that use any object contained on your default
model list (*MDLPRF), up to and including the first external function:
YDSPMDLUSG MDLLST(*MDLPRF)+
OUTPUT(*MDLLST)+
OUTMDLLST(list-name)+
SCOPE(*EXTFUN)
You can then convert the resulting output list to a job list for generation and
compilation using the Convert Model List (YCVTMDLLST) command.
The following are more examples of ways you can use session lists with model list
commands:
■ Produce a printed record of changes to your model for a specific development
project by using the session list for the project as input to the Document Model
Object List (YDOCMDLLST) command.
■ Flag selected entries on the session list to copy using the Filter Model Object List
(YFLTMDLLST) command or Edit Model Object List for copy (YEDTCPYLST) panel.
Then promote the change to a target model by using the session list as input to the
Copy Model Objects (YCPYMDLOBJ) command.
■ Delete a session list related to a completed development project by using the
Delete Model Object List (YDLTMDLLST) command.
■ Create an empty session list by using the Index Model Object List (YINXMDLLST)
command.
For more information on model list commands, see the Commands to Manipulate
Model Object Lists section in this chapter, and the CA 2E Command Reference Guide.
Although you cannot assign authority on individual model object lists, you can prevent
users of the model from deleting or adding lists by removing *OBJMGT authority on the
YMDLLSTRFP file.
The primary purpose of the All Objects list is to record information related to changes to
model objects; for example, the date, time, and name of the developer who made the
change. As you create, delete, update, and generate model objects, the All Objects list is
also updated to reflect these changes. The All Objects list also contains information for
impact analysis, versions of functions and messages, and CM.
The All Objects list differs from a named model object list in a number of important
ways. The following table summarizes these differences:
To view a model object's description, use either selection option 8 on the Edit Model
Object List panel or the Display Model Object Description (YDSPMDLOD) command.
The following two commands let you retrieve and change information within a model
object description:
■ Retrieve Object Description (YRTVMDLOBJ) command
■ Change Model Object Description (YCHGMDLOBJ) command
The remainder of this section groups the model object description fields by function and
provides suggestions for using them.
If the model object is a version of an existing function or message,CA 2E also records the
following information:
■ Group surrogate number
■ Current object indicator
■ Version type
The basic information maintained for each model object uniquely identifies the model
object in the following two ways:
■ Model object surrogate
■ Model object name consisting of three fields:
■ Name of owner of object
■ Object name
■ Object type
Use either of these to identify a model object on the model object list commands.
For more information on these model object identifiers, see the Model Objects section
in this chapter.
You can use these date fields in Command Language programs to create lists of model
objects requiring specific actions; for example, editing, generation, or copying to
another model.
Change Information
When you change a model object, the date, time, and user are logged. In other
words,CA 2E automatically updates the following fields in the model object's
description:
■ Change date and time
■ Change user
■ Change type
■ Impact processed indicator
■ Component change processed date and time
CA 2E uses the Change type during component change processing to identify other
objects in the model affected by the change. The Component change processed date
and time are set to the date and time the change occurred.
Press F11 from the Edit Model Object List panel to view this information for any model
object list.
Press F11 from the Edit Model Object List panel to view this information for any model
object list.
You can check the Impact processed indicator to determine whether to run the Apply
Component Changes (YAPYCMPCHG) command.
The Action required indicator identifies whether a model object that uses a changed
object needs to be edited (EDT) or regenerated (GEN). You can use model list commands
to examine and filter objects in your model based on the setting of this indicator.
For more information on component change processing, see the Impact Analysis section
in this chapter.
Generation Information
When a model object is successfully generated,CA 2E automatically updates the
following fields in the model object's description:
■ Generation date
■ Generation time
Press F11 from the Edit Model Object List panel to view this information for any model
object list.
Press F11 from the Edit Model Object List panel to view this information for any model
object list.
For more information on check out using CM, see the CA 2E Change Management User
Guide.
Some commands use model object lists for input, output, or both. A model object list
you specify as input must exist before you execute the command; if you specify a model
object list as output,CA 2E automatically creates it if it does not already exist.
The model profile contains the name of a default model object list name to be used for
commands. This list is often referred to as the default list. Whenever you specify the
value *MDLPRF for a model object list on a command,CA 2E automatically uses the
model object list specified on your model profile.
For more information on a model object description, see the All Objects List section in
this chapter and the appendix titled "Change Control Facilities Reference Tables" in this
guide.
For more information on job lists, see chapter titled "Preparing for Generation and
Compilation" in this guide.
For more information on model profiles, see the Model Profile section in this chapter.
Version Commands
Following are change control facilities commands that operate on versions of functions
and messages:
For more information on versions, see the Working with Versions of Functions and the
Messages sections in this chapter.
Example 1
You can use the following set of commands to compare model objects within a model at
two different times; for example, before and after a development project:
1. Use the Build Model List (YBLDMDLLST) command to create a list of all objects in
the model by specifying the All Objects list (*ALLOBJ) as input and a named model
object list as output.
YBLDMDLLST OBJNAM(*ALLOBJ)+
MDLLST(list-name1)
The output list contains information about each object that existed in the model at
the time you ran this command; namely, each list entry contains the Create date
and time and the Change date and time of the corresponding model object.
At some later stage in the development cycle you can build another list of all model
objects and compare the new list with the original list as shown in the following
steps.
1. Build a new list of all objects in the model, specifying another model object list as
output.
YBLDMDLLST OBJNAM(*ALLOBJ)+
MDLLST(list-name2)
1. Compare this list with the original list and create a third model object list containing
the differences between the two input model object lists.
YOPRMDLLST MDLLSTA(list-name1)+
LSTOPR(*DIFF) MDLLISTB(list-name2)+
TOMDLLST(list-name3)+
OPRTYPE(*OBJSGT)
Example 2
You can use the following set of commands to compare model objects between two
models:
1. Use the Build Model List (YBLDMDLLST) command to create a list of all objects in a
model by specifying the All Objects list (*ALLOBJ) as input and a named model
object list as output.
YBLDMDLLST OBJNAM(*ALLOBJ)+
MDLLST(list-name1)
1. Build another model object list for the second model; e.g., NEWMDL.
YBLDMDLLST OBJNAM(*ALLOBJ)+
MDLLST(NEWMDL/list-name2)
1. Copy the model object list just created to the original model and ensure that the
surrogate number of each list entry matches that of the corresponding model
object in the original model.
YCPYMDLLST+
FRMMDLLST(NEWMDL/list-name2)+
TOMDLLST(OLDMDL/list-name2)+
TOUPDOPT(*RFSSGT)
1. Filter out any errors. This creates a list of model objects that exist in the new model
but do not exist in the original model.
YFLTMDLLST FLAGVAL(*ERROR)+
MDLLST(NEWMDL/list-name2)+
OUTLST(list-fail)
1. Now compare the two lists in the target model and save the differences in another
model object list.
YOPRMDLLST MDLLSTA(list-name1)+
LISTOPR(*DIFF) MDLLSTB(list-name2)+
TOMDLLST(list-diffs)+
OPRTYPE(*OBJSGT)
1. Print the output lists for a permanent hard copy record of the differences between
the two models.
YDOCMDLLST MDDLST(NEWMDL/list-fail)
YDOCMDLLST MDLLST(OLDMDL/list-diffs)
Example 3
You can use the following series of commands to form part of a nightly process to
prepare a model for the following day:
1. Optionally run the Synchronize Model (YSNCMDL) command to ensure that the
model is synchronized.
2. Run the Apply Component Changes (YAPYCMPCHG) command to ensure that the
impact of any changes to model objects are reflected throughout the model.
3. Run the Filter Model Object List (YFLTMDLLST) command over the All Objects list
(*ALLOBJ) to select model objects having the Required action indicator set to *EDT.
Specify EDTLST as the output model list for programmers to edit the following day
using YEDTMDLLST.
4. Run the Filter Model Object List (YFLTMDLLST) command over the All Objects list
(*ALLOBJ) to select model objects having the Required action indicator set to *GEN.
Specify GENLST as the output model list.
5. Run the Convert Model Object List (YCVTMDLLST) command over the GENLST
model list to prepare a job list to generate objects that require generation as a
result of a change to a component object.
6. Run the Submit Model Create Requests (YSBMMDLCRT) commands. Specify the job
list created in the previous step to generate and compile changed objects.
7. Run the Document Model Object List (YDOCMDLLST) command to document the
EDTLST and GENLST model lists for administrative purposes.
You access the Work with Model Lists panel in either of the following ways:
■ Select the Work with Model Lists (YWRKMDLLST) option on the Display Services
Menu.
■ Enter YWRKMDLLST on a command line.
The Work with Model Lists panel displays all the model object lists currently defined in
your model library. Press F11 to display the date the list was created and the time and
date it was last changed.
From the Work with Model Lists panel, for any model object list shown, you can:
■ View a description of the list
■ View list entries
■ Edit a list
■ Create a new model list
■ Execute a list
■ Clear entries from a list
■ Remove a list
■ Copy a list
■ Change the description of a list
For more information on the Edit Model Object List panel, see the Editing Model Object
Lists section in this chapter.
Note: To create an empty model object list, press F18 from the Work with Model Lists
panel to prompt the Index a Model Object List (YINXMDLLST) command. Type the name
of the new list for the Model object list parameter and press Enter to accept the
defaults and create the new list.
For more information on the YINXMDLLST command, see the Command Reference
Guide.
This panel serves as an alternate entry point into your model. You can perform most
functions available from the Edit Database Relations panel other than editing relations
and creating model objects. You can temporarily transfer to the Edit Database Relations
panel from the Edit Model Object List panel by entering YEDTMDL or Y2 on the
command line. When you finish your editing, press F3 to return to the Edit Model Object
List panel.
You can access the Edit Model Object List panel in the following ways:
■ Enter YEDTMDLLST from a command line. You can prompt the command or accept
the defaults.
■ Use selection option 2 from the Work with Model Lists (YWRKMDLLST) panel.
■ Select the Work with Model Lists or Edit model list options on the Display Services
Menu.
The following is an example of the Edit Model Object List display for the All Objects list:
For more information on the Edit Model Object List panel, see the Working with Model
Object Lists section in this chapter.
Many of the subfile select options and function keys shown on this panel are also
available on the following interactive panels:
■ Display Model Usages
■ Display Model References
■ Display Model List
■ Work with Versions
■ Edit Model List for Copy (YEDTCPYLST)
Note: If you have specified subsetting criteria for a model object list, the subsetting is
retained when you select another list.
For more information on subsetting a model object list, see the Grouping and
Navigation Aids section in this chapter.
For more information on defining your own subfile select options, see the Performing
User-Defined Tasks on Model List Entries later section in this chapter.
Note: Some of these options operate on the actual model objects and others operate on
entries of a named model object list. Be sure to note this distinction when reading the
following descriptions and when using the subfile select options.
Function Keys
The following table lists the function keys available on the Edit Model List panel. Note
that some options are not available for the All Objects list (*ALLOBJ).
Command Line
You can use the command line on the Edit Model Object List panel in the following
ways:
■ Enter or prompt , Toolkit, or i OS commands
■ Override the parameters and/or the command invoked by a subfile selection option
■ Execute a command that operates on a selected model object
■ Enter special command line values to retrieve previously executed commands
Example 1
Suppose the functions contained in the MYMDLLST model object list have generated
successfully and just require compilation. Create a job list entry for each model object
using selection option 14, which invokes the YCRTJOBLE command.
1. Enter 14 for the first model object entry.
2. Press F13 to repeat the option for all list entries. Note the message at the bottom of
the panel that states that option 14 was repeated to the end of the list.
Note: You can press F5 to undo the repeat action.
Type the CRTOPT(*COMPILE) parameter on the command line as shown to indicate
compilation only.
3. Press Enter.
Press F19 to display a list of job list commands and to submit the job list for compilation
in batch.
Example 2
This example uses the "/" selection option to merge model list entries with a command
not associated with a subfile selection option. This option serves as a temporary
user-defined selection option.
Suppose you want to view the model object descriptions for the owners of one or more
model objects. To do so you will use the Display Model Object Description
(YDSPMDLOD) command.
1. Enter "/" against each model object whose owner's model object description you
wish to view. To select all model objects to the end of the list, type "/" on the first
model object you want to select and press F13 as in the first example.
Type YDSPMDLOD OBJSGT(@YW) on the command line. Note that @YW is a
substitution variable that specifies the surrogate number of the owner for each of
the selected model objects.
For more information on substitution variables, see the Performing User-Defined
Actions on Model List Entries section in this chapter.
2. Press Enter.
The model object description for the owners of the selected model objects will be
displayed one at a time. In this example, the model object description for the Customer
file and the Branch file are displayed.
Retrieving Commands
All commands executed in the current job, whether executed from a CA 2E or an i OS
panel, are placed in a common command sequence. The F9 and F8 function keys let you
step backward and forward through this command sequence.
The following table lists the special command line values and their functions:
Special Values Abbreviations Function
*SCANF [n] string *SF or >> Starting from the first command in the
command sequence, retrieve the first
command containing the specified
string. Specify n to retrieve the nth
matching command.
*SCANL [n] string *SL or << Starting from the last command in the
command sequence, retrieve the first
command containing the specified
string. Specify n to retrieve the nth
matching command.
*FIRST [n] string *F or > Starting from the first command in the
command sequence, retrieve the first
command beginning with the specified
string. Specify n to retrieve the nth
matching command.
*LAST [n] string *L or < Starting from the last command in the
command sequence, retrieve the first
command beginning with the specified
string. Specify n to retrieve the nth
matching command.
– command n/a Execute the specified command, but do
not add it to the command sequence.
+ command n/a Add the specified command to the
command sequence, but do not execute
it.
*CLEAR n/a Clear the commands at this invocation
of the command line.
When you specify a search string, do not include "*" at the end of the string. You can
however specify a '?' as a wild character in any position. To repeat the last search you
entered, specify '*' instead of a search string. You can repeat the search in either
chronological or reverse chronological order. These concepts are all shown in the
following examples.
Examples
1. To retrieve the first previous command that begins with the characters 'wrk', type
the following on the command line and press Enter.
*LAST WRK
Note that *last wrk, *L wrk, and < wrk all give the same result.
You can repeat the last search you entered by specifying '*' instead of the search
string. To retrieve the next previous command beginning with 'wrk', type the
following on the command line and press Enter.
*FIRST *
1. To retrieve the third command from the beginning of the command sequence
containing the characters 'uuae', type the following on the command line and press
Enter.
>> 3 uuae
Note that *scanf 3 uuae, *SF 3 uuae, and >>3UUAE all give the same result.
To retrieve the next command containing 'uuae', in other words to repeat the
search, type the following on the command line and press Enter. Note that in this
case the first matching command, not the third, is retrieved.
>> *
You can also use the '*' to repeat the search in reverse chronological order as
follows. To retrieve the first previous command containing 'uuae' type the following
on the command line and press Enter.
<< *
1. You can use one or more '?' to specify a wild character in the search string. To find
the first previous command containing 'uu' followed by any two characters followed
by 'srr', type the following on the command line and press Enter.
<<uu??srr
1. To retrieve the first previous command containing the numbers '397', type the
following on the command line and press Enter.
<< 1 397
Note that you need to include the '1' to indicate the first occurrence. This is needed
to distinguish between the optional numeric value and the numeric search string.
Typing <<1397 gives the same result.
1. To execute a command but not place it in the command sequence, type the
following on the command line and press Enter. This is useful to prevent commands
you will not need again from cluttering the command sequence.
– dspmsg
Note that –dspmsg gives the same result.
1. To place a command in the command sequence but not execute it, type the
following on the command line and press Enter. This is useful to prepare
complicated or partially complete commands that you can retrieve later.
To activate full screen mode, first press F18 from the Edit Model Object List panel to
display the Edit Model Profile panel. Set the Full screen mode option to Y and press
Enter. To return to regular mode, press F18 again and reset the Full screen mode option
to N.
For more information on model profiles, see Model Profile section in this chapter.
Notes:
■ If you are editing *ALLOBJ, you can also specify whether to display non-current
versions of functions and messages.
■ If you select another model object list, any subsetting you specified is also applied
to the new model list.
Example
To display only Edit File functions on the Edit Model Object List panel type *FUN for the
Type option and type EDTFIL for the Function type option. Press Enter twice. Note that
the original model object list is not changed by this operation.
Use the F11 key to toggle among the four positioning options. To position the model
object list, enter values in the appropriate positioner window and press Enter. Note that
you can specify partial names for all options except the Type option.
Example
To position the model object list to the model object whose Implementation name is
UUACSRR, press F11 until the ‘Position by Implementation name’ window displays, type
UUACSRR.
Press Enter.
You can use this, for example, to solve a problem in program applications where you
only know the implementation name of the program in which an error occurred. You
would then use impact analysis to identify all programs called by the program in error.
Note: In this case, the Edit Model Object List panel redisplays with the alternate view
showing implementation information rather than object type, attribute, and owner. You
can switch to other views by pressing F11.
The following table shows how the display order will be keyed depending on the values
you enter in the positioner window. A message displays at the bottom of the panel
when the key sequence changes.
Note: The displayed model object list will be changed based on the filter unless you
specify an output model object list. If you do not specify an output list, model object list
entries not selected by the filter are by default deleted from the displayed list.
To apply the filtering tools to the current model object list, press F14. The Filter Model
Object List panel displays. Press F10 to display the additional parameters.
This is the first of three screens of filtering options. You can also change the input model
object list and specify an output model object list on this screen. Scroll down for
additional filtering options.
■ Action Diagram (option 10)—Calls the Edit Action Diagram panel for model objects
of type FUN.
■ Parameters (option 13)—Calls the Edit Function Parameters panel for model
objects of type FUN.
■ Device Design (option 17)—Calls the device design editor for model objects of type
FUN.
■ Device Structure (option 18)—Calls the structure design editor for PRTFIL/PRTOBJ
functions.
■ Access Path (option 20)—Calls the Display file access paths panel for model objects
of type FUN.
■ Narrative/object (option 21)—Calls the Edit Narrative Text panel for any model
object type.
■ Narrative/owner (option 22)—Calls the Edit Narrative Text panel for the owner of
the selected object.
■ Open Functions (option 30)—Calls the Open Functions panel for model objects of
type FUN.
For more information on the panel displayed for each model object type, see the Editing
Model Objects section in this chapter.
A standard set of information is displayed for each type of model object. Additional
information displayed varies according to the type of model object.
Note: If the information for a model object list entry does not match the model object
description for the corresponding model object,CA 2E sets the Object select field for the
list entry to 8 on the Edit Model Object List panel. You can use subfile select option 33 to
refresh the model object list entry.
For more information on creating a model object list using the Work with Model List
panel, see the Working with Model Object Lists section in this chapter.
CA 2E displays the Select Model Object panel, listing all model objects from the All
Objects (*ALLOBJ) list. You add model objects by entering selection option 1 for all
model objects to be added and pressing Enter. The panel continues to display so you
can continue selecting objects. Function keys are provided for positioning and
subsetting the list.
Example
Suppose you want to add model list entries from model list MYMDLLST to model list
CUSTOBJ. Enter option 11 for each model object you want added to the CUSTOBJ list. In
this example, enter 11 for the Customer file and press F13 to repeat the option to the
end of the list. You can either press F4 to prompt the command, or you can enter the
MDLLST(CUSTOBJ) parameter on the command line to specify the target list as shown:
Press Enter. The selected objects are added to the CUSTOBJ model object list.
CA 2E displays a confirm panel for each model list entry that you selected for deletion.
If an entry on a named model object list refers to a model object that has been deleted
from the model,CA 2E sets the Object select field for the list entry to X on the Edit
Model Object List panel to indicate that the corresponding model object no longer
exists. (The Object select field is between the Subfile selector and the Object field.)
Note: You cannot delete files (FIL) or fields (FLD) using option 24.
You cannot delete a model object if it is used by other objects in the model. Use the
impact analysis tools on the Edit Model Object List panel to determine the usages for
the model object to be deleted. For example, enter selection option 91 for the model
object you want to delete;CA 2E displays a list of the model objects that use it, including
an indication of the way in which it is used.
For more information on impact analysis tools and model object usages, see the Impact
Analysis section in this chapter.
Enter the appropriate menu option on the command line to prompt the selected
command. Many of the parameter defaults for the job list commands are set in your
model profile.
For more information on versions, see the Working with Versions of Functions and
Messages section in this chapter.
In addition, you need to explicitly select the model objects to be copied from the input
model object list. Use one of the following to select model objects:
■ Use the Edit Model Object List for Copy panel, which you invoke using the Edit Copy
List (YEDTCPYLST) command. This panel has many of the same options and function
keys as the Edit Model Object List panel.
Type 1 against the model objects you want to select for copying. To select all list
entries, type 1 for the first model object displayed, press F13 to repeat the selection
for all list entries, and press Enter. An '*' will appear in the Copy Select field of each
selected model object.
Use option 9 to deselect a selected model object. Option 7 lets you rename a model
list entry for the purpose of copying to avoid conflicts with objects with the same
owner/name/type in the target model.
Use the edited model object list as input to the YCPYMDLOBJ command.
■ Set the OUTCPYOBJ parameter to *SELECTED on one of the following commands:
■ Build a Model Object List (YBLDMDLLST)
■ Add a Model Object List Entry (YADDMDLLE)
■ Filter a Model Object List (YFLTMDLLST)
■ Set the CPYOBJ parameter to *SELECTED on the Change a Model Object List Entry
(YCHGMDLLE)
Note: To prepare a list for copying, you should use only the model object list commands;
for example, YBLDMDLLST, and/or the YEDTCPYLST command. The Build Copy List
(YBLDCPYLST) command is available only for backward compatibility with previous
releases of and should not be used.
Selected model objects will contain a "*" in the Copy Select field on the Edit Model
Object List for Copy panel. After you run the YCPYMDLOBJ command, any implicitly
selected model objects will contain a "!" in the Copy Select field. To view the implicitly
selected objects before copying, run the YCPYMDLOBJ command in *PREPASS mode.
For more information on the YCPYMDLOBJ process, see the Administrator Guide.
The prefix for the substitution variables may be either '&' or '@'. If you are using PDM to
maintain your user option list, you need to use '@' as the prefix. You can also specify an
alternate character in the Toolkit data area, YPEXCHA.
Note: If you are unable to enter '@' into the command parameter (for example, if it is
numeric), you can either use the RQSDTA parameter on the YEXCMDLLST command and
enter the command as a string, or you can specify RQSDTA(*USROPT) and specify a PDM
user-defined option.
Enclose the &YN, &YO substitution variables in quotes since they can result in text
containing blanks.
User-defined options are contained in the User-Defined Options (QAUOOPT) file that is
shipped with Toolkit. The default names for the user option library, file, and member
are contained in your model profile and can be changed. Use PDM to create and edit
user-defined options in the file/member specified in the model profile.
Note: You should copy the User-Defined Options file to a user library (for example, your
model library) in order to preserve user-defined options when installing a new release
of Toolkit.
Option Command
YC CHGCURLIB @YL
OD YDSPMDLOD OBJSGT(@Y@)
YS DSPSPLF FILE(@YI) JOB(@YI)
JL DSPJOBLOG
SL SBMJOB ??CMD(SAVLIB LIB(&N))
WS WRKSBMJOB
DF YDOCMDLFUN MDLFILE('@YO')
MDLFUN('@YN')
Note: You can use the / option on the Edit Model Object List panel as a temporary
user-defined selection option.
For more information on the / selection option, see the Command Line section in this
chapter.
The substitution variables listed at the beginning of this section let you symbolically see
attributes of the model list entries and pass them to the command or user-option that is
to operate on the model object list.
For more information on the YEXCMDLLST command and its parameters, see the CA 2E
Command Reference Guide.
Example
The following is a control language program showing a method of using model list
commands, substitution variables, and the YEXCMDLLST command. Note that this is for
illustration only and CA does not warrant usability or functionality of the program.
For more information about the meaning of these audit stamps, see the appendix
“Change Control Facilities Reference Tables.”
To view change information, press F11 on the Edit Model Object List panel until the
change information as shown in the following panel displays:
Notes:
■ For a named model object list, the Change date is the date the list entry was
created and may not reflect the model object's current status. You can use F15
to update the model object list to contain current information from the All
Objects list; this invokes the Check a Model Object List (YCHKMDLLST)
command.
■ A model object is not considered to be changed in the following circumstances:
■ The object is accessed as if to edit but no changes are actually made.
■ The object has been copied from another model and has not been changed since
copying.
CA 2E determines the change type using a shipped table that assigns a change type to
each position on a CA 2E panel where you can possibly change a model object.
Following is a list of change types and their definitions. Only private and public changes
invoke component change processing.
■ Object Only (*OBJONLY)—A change that affects only the model object and does
not require regeneration. The change has no effect on model objects that use the
changed object.
■ Generation Required (*GEN)—A change that affects only the model object and
requires that the changed object be regenerated to effect the change in its
implementation object. This change type is used only for access paths and external
functions. The change has no effect on model objects that use the changed object.
■ Private (*PRIVATE)—A change to an object that requires regeneration of the
external functions and access paths that use it to effect the change in the
implementation objects.
For example, if you change a file on the Edit Database Relations panel, you need to
regenerate all external functions and access paths that use the file. Or, if you
change the action diagram of an internal function, you need to regenerate all
external functions that call it.
■ Public (*PUBLIC)—A change to a model object that changes its interface with the
model objects that use it. This change also requires the following additional
processing:
1. Model objects that use it may need to be edited.
2. External functions and access paths that use it need to be regenerated.
For example, if you change the parameters of an internal function, you need to edit
all functions that call the changed function and then regenerate all external
functions that contain it.
The four change type values just presented were listed in order of increasing
significance:
1. Object Only
2. Generation Required
3. Private
4. Public
Impact Analysis
CA 2E's impact analysis facilities let you determine the impact of a proposed or actual
change to model objects in a CA 2E model and ensure the integrity of a set of changes
by identifying and including dependent objects. CA 2E impact analysis facilities include:
■ Automatic update of audit stamps for various processes including creation, change,
copy, and generation.
■ Commands and processes to identify model objects that will be affected by a
change, including a distinction between changes that:
– Also affect using objects and require editing.
– Are internal to the object and require regeneration of using external functions
and access paths.
■ Support for where-used and referenced objects.
■ Expansion across model object types; for example:
■ Field, to File, to Access Path, to Function.
■ Recursive and multiple-level expansion.
■ Filters and controls.
■ Full integration with other CA 2E edit and generation facilities.
■ Output either to a custom display or to model object lists.
Introduction
This discussion of CA 2E's impact analysis tools are divided into the following sections:
■ Model Object Cross References—Discusses commands and interactive panels you
can use to determine usages and references for any model object.
■ Simulating Changes to Model Objects—Shows how to simulate a change to a
model object to determine the impact of the change on other model objects.
■ Component Change Processing—Discusses component change processing, an
automated impact analysis tool that determines how a change to a model object
affects other objects in the model and also records whether the affected objects
need to be edited or regenerated.
The process of determining either usages or references for a model object is known as
expansion. Using model cross references facilities, you can expand usages or references
for a model object across model object types to any depth.
For example:
■ Database fields (FLD) can be used by database files (FIL) or functions (FUN). In turn,
files can be used by access paths (ACP) and application areas (APP).
■ Access paths (ACP) can be used by messages (MSG), arrays (ARR), functions (FUN),
and other access paths (ACP).
Note: There is no direct relationship between fields (FLD) and access paths (ACP). In
other words, a change to a field does not directly affect the access paths that use it.
For more information on the note and the possible ways a given model object type can
be used by other model objects types, see the CA 2E Command Reference Guide.
For example:
■ Database fields (FLD) can reference conditions (CND) or other fields (FLD).
■ Functions (FUN) can reference messages (MSG), arrays (ARR), other functions
(FUN), fields (FLD), and access paths (ACP).
For a table of ways a model object can reference other model objects, see the
Command Reference Guide.
Both interactive panels provide a variety of controls and filters including recursion,
scope, selection, and positioning to help you analyze your model and determine the
impact of proposed changes.
Following is the header for the Display Model Usages panel showing the fields for
controlling the expansion of usages. One way to display this is to use option 91 from the
Edit Model Object List panel. The header for the Display Model References panel is
similar.
Note: Some of the following screenshots in this section do not show the Include Inactive
Code field.
The following discusses each of the controls and filters provided on this panel. Note that
the Object and Type fields are positioners; all other fields are record selectors. Also, all
values, including your changes, are carried forward each time you invoke this panel.
When Include inactive code is set to *YES, the usage and reference expansion generally
behaves as it does at previous releases.
An additional field Wrn (Warning) in the subfile record indicates, with an '*' in the
second character of the field, when the corresponding Action Diagram call is deactivated
(commented out). Additionally, any object that appears in the usage/reference report
only by virtue of deactivated code is also marked with an '*'.
Note: The first character of the field Wrn (Warning) in the subfile record is currently
unused.
When Include inactive code is set to *NO, the usage and reference expansion will
consider the deactivated (commented out) status of action diagram calls. This has 2
major effects:
1. Any deactivated action diagram calls within the reference/usage expansion of a
target object will be ignored.
2. No objects will be included by virtue of the deactivated call to the object. In other
words, the commented out function is not expanded.
3. No objects will be included by virtue of the deactivated call to the object. In other
words, the commented out function is not expanded.
When Include inactive code is set to *IGN, the usage and reference expansion behaves
exactly as it does at previous releases, and there is no differentiation between active
code and deactivated (commented out) code – i.e. all code is treated as active, even if it
is commented out.
The additional field Wrn (Warning) in the subfile record is not relevant when this option
is used.
Examples
The two examples in this section depict the new impact analysis for objects containing
deactivated (commented out) code. Consider the following scenario:
■ Function_A calls Function_B.
Function_A also calls Function_C.
Function_B calls Function_C.
■ Function_B's call to Function_C is deactivated (commented out)
■ Function C is analyzed for usages.
Example 1—Include Inactive Code = *YES
*Scope . . *NOMAX Reason . . *ALL*
Opt Object Typ Atr Owner Lvl Reason WRN
Function_C FUN RPG 17009615 000 *OBJECT
Function_B FUN RPG 17009615 001 *ACTION *
Function_A FUN RPG 17009615 002 *ACTION *
Function_A FUN RPG 17009615 001 *ACTION
Note: Function_B's record has a '*' in character 2 of the WRN field, to indicate that
the action diagram call to Function_C has been deactivated (commented out).
Hence the Function_A (LVL 002) which calls Function_B) is also marked with a '*' in
the WRN field. However the Function_A (LVL 001) which calls Function_C directly) is
not marked with a '*' in the WRN field.
Using the Exclude System Objects and Current Objects Only Specifi
The more you can limit the expansion, the faster the process and the easier to interpret
the results. Specifying Scope is especially useful when expanding low-level model
objects or model objects that are used frequently by other model objects; for example,
conditions (CND), fields (FLD), files (FIL), and access paths (ACP). It is not as critical to
limit expansions for functions (FUN) and messages (MSG).
Value Meaning
*GENOBJ Expand objects up to and including the first object requiring
generation; for example, an external function or access path.
Applies only to usages.
*EXTFUN Expand objects up to and including the first external function
after the first level. For references, this value is intended for
use only with functions. It is a combination of Scope and Filter
since only functions are included.
*INTFUN Expand objects up to and including the first internal function
after the first level. For references, this value is intended for
use only with functions. It is a combination of Scope and Filter
since only functions are included.
Object type Expand objects until an object of the specified type is
encountered. For example, *ACP, *FUN. Use this only when
appropriate for the object type you are investigating. Applies
only to usages.
The more you can limit the expansion, the faster the process and the easier to interpret
the results. Specifying Scope is especially useful when expanding low-level model
objects or model objects that are used frequently by other model objects; for example,
conditions (CND), fields (FLD), files (FIL), and access paths (ACP). It is not as critical to
limit expansions for functions (FUN) and messages (MSG).
Value Meaning
*GENOBJ Expand objects up to and including the first object requiring
generation; for example, an external function or access path.
Applies only to usages.
*EXTFUN Expand objects up to and including the first external function
after the first level. For references, this value is intended for
use only with functions. It is a combination of Scope and Filter
since only functions are included.
*INTFUN Expand objects up to and including the first internal function
after the first level. For references, this value is intended for
use only with functions. It is a combination of Scope and Filter
since only functions are included.
Object type Expand objects until an object of the specified type is
encountered. For example, *ACP, *FUN. Use this only when
appropriate for the object type you are investigating. Applies
only to usages.
Each time you change the Reason field, usages or references are expanded again for the
original model object.
For more information on the Reason specification and a list of all Reason values, see the
CA 2E Command Reference Guide.
Example
This example demonstrates the Display Model Usage utility and the use of the Scope
specification. The concepts shown also apply to references.
1. From the Edit Model List panel press F20 to display usages. The Display Model
Usages command is prompted from which you can specify whether the output is to
be displayed (*), printed (*PRINT), or copied to a model object list (*MDLLST).
Note: Although this is not the recommended method to work with usages
interactively, it is included in this example to explain the converted list displayed on
the first panel. Starting at step 2, this example shows both methods of working with
usages.
If you choose to display usages, begins by displaying the contents of the list you
specified, updated to reflect the current state of each model object from *ALLOBJ.
This is indicated by *ENTRY in the Reason column for each model object. The name
of the originating model object list is shown in the Converted List field in the
upper-left of the screen. Note that the original list is not changed by this process.
The converted list of model objects displayed differs from the contents of the
original model object list in the following ways:
■ By default, only model objects that are currently active in the model are
displayed. Non-current versions are not displayed. See the Working with
Versions of Functions and Messages section in this chapter for more
information on the current version.
■ Details from the All Objects list are displayed for each model object; for
example, if the name of the actual model object differs from that of the model
object list entry, the model object name is displayed. In other words, the
display reflects the current state of the model.
■ Model objects that appear on the model object list, but have been deleted
from the model, are not displayed. Any list entries that see the deleted objects
are ignored.
Note: Your model object list is not changed by this operation.
You can now use the selection options on any of the model objects displayed. To
see additional options, press F23.
2. To display all usages for the internal function, Retrieve Customer, type selection
option 91 against Employee and press Enter. The following panel displays:
Note the values displayed in the Lvl and Reason columns for each object and how
they relate to the diagram that follows. Lvl 000 indicates the object whose usages
are shown. This object is used by the Lvl 001 objects, which in turn are used by the
Lvl 002 objects. The Lvl 000 object is included so you can edit the originating object
as well as the using objects.
3. When a model object is used by many other model objects, it is not always easy to
determine the usage structure when Scope is set to *NOMAX, which displays all
levels of usages. Instead, you can set Scope to *NEXT to step through the usage
expansion one level and one model object at a time.
Press F15 to return to the Level 001 panel. Change the Scope option to *NEXT and
press Enter. Next, enter 91 for Employee and press Enter.
The following panel displays.
Note: From here on the process shown in this example is the same for both
methods of working interactively with usages; namely, whether you pressed F20 or
typed selection option 91 against a model object.
This panel shows only the Lvl 001 model objects that use the Employee file.
4. Enter 91 for the Order file to expand usages to the next level for just that model
object. The following panel displays:
5. To expand usages for ‘RSQ by Employee name’ access path instead, press F12 to
return to panel Level 002 and enter 91 against that object. The following panel
displays, indicating that the ‘RSQ by Employee name’ access path is used only by
the ‘Display Employees by Name’ function.
For more information on the panel displayed as a result of using F22, see the Working
with Usages Interactively section in this chapter.
Example
You can use the Display Model References panel to solve problems in program
applications. Suppose you only know the implementation name of the program in which
an error occurred.
Use the Edit Model Object List panel over the All Objects list (*ALLOBJ). Press F7 to
display the positioning windows. Press F11 until the Position by Implementation
name window displays:
Enter the implementation name to position the All Objects list (*ALLOBJ) to the
function in which the error occurred. Enter selection option 81 for the function to
display references for that function. The following panel displays:
YDOCMDLLST MDLLST(list-name)
The development staff can use either the online model object list or the printed
copy as an aid to solving the problem.
YDSPMDLUSG MDDLST(MYMDL/WRKLST) +
SCOPE(*EXTFUN) OUTPUT(*MDLLST) +
OUTMDLLST(OUTLST) OUTLSTUPD(*ADD)
■ To print a list of access paths and external functions that are referenced by model
objects existing on model object list MYLIST, use:
YDSPMDLREF MDLLST(*MDLLIB/MYLIST)+
OUTPUT(*PRINT) FILTER(*GENOBJ)
When you change a model object, the only objects that can be affected by the change
are those that use the changed object. As a result, a major part of simulating a change
consists of expanding usages for the object to be changed.
Note: The process described here is the same as that used during component change
processing when you actually change a model object. However, instead of just
displaying the results of the change, component change processing updates the All
Objects list for the model objects affected by the change to indicate the additional
processing needed.
For more information on component change processing, see the Component Change
Processing section in this chapter.
Note that only those objects that need to be generated to implement the proposed
change are displayed, not all usages. GEN in the Action column indicates that the
model object will need to be regenerated when you make the proposed change.
To simulate a public change, enter option 95 for the object you want to change on
either the Display Model Usages panel or the Display Model References panel.
As for a private change,CA 2E expands usages for the object to be changed up to
the first external function in each sequence of usages. In addition, it identifies
objects that need to be edited as a result of the proposed change. Suppose the
object to be changed is the Change Order Detail function.
The following panel displays:
Note that only those objects that need to be edited or generated to implement the
proposed change are displayed, not all usages. EDT and GEN in the Action column
indicate that the corresponding model object needs to be either edited or
regenerated when you make the proposed change.
3. Press F16 to build a model object list containing a list of the model objects impacted
by your proposed change. A window displays where you specify a model object list
name and whether to replace or add entries if the model list you specify already
exists. If the model list does not exist,CA 2E automatically creates it.
Note: The entries of a model object list always reflect the current state of model objects
at the time the list is created unless you refresh them. As a result, the Action required
field for entries of the new list will reflect the results of a previous run of component
change processing and not the results of the simulation. To get a permanent record of
the simulation, press F21 to print the results.
The simulation options available on the Display Model Usages and Display Model
References panels simulate the actions of component change processing. You can
experiment with these options to become familiar with the process.
If the change was a public or private change, CA 2E expands usages for the changed
object, identifies the using objects affected by the change, and updates the detail for
the affected using objects in the All Objects list to indicate whether they need to be
edited or regenerated.
For more information on change type, see the Model Object Audit Information section
in this chapter.
After you perform the necessary editing, CA 2E performs component change processing
again to ensure that the new change is reflected in regenerated and any newly created
using objects. As a result, it is recommended that you edit the model object at level 001
first and then proceed upward to edit model objects at continually higher usage levels.
This prevents a model object from being flagged EDT more than once. At the end of the
process, all objects that require regeneration will be flagged GEN.
■ Change type—CA 2E does not reset a model object's Change type as a result of
running component change processing for the change. It is not reset until you
change the model object again. As a result, the Change type always reflects the
most recent change to the model object.
You can use the information recorded by component change processing to build model
object lists and to create utilities to automate the required additional processing and to
help you administer your model.
Examples
Since component change processing can run interactively as you make changes or can
be postponed, you can check the Impact processed indicator to determine whether you
need to run the Apply Component Changes (YAPYCMPCHG) command.
You can use the Filter Model Object List (YFLTMDLLST) command over the All Objects list
(*ALLOBJ), specifying an output list, to build a model object list of just those objects that
require editing. You can then give the list to the programming staff to make the required
changes.
Similarly, you can build a list of the objects that need to be regenerated, convert the list
to a job list using the Convert Model List to Job List (YCVTMDLLST) command, and use
the result as input to the Submit Model Create Requests (YSBMMDLCRT) command.
For more information and an example of a Command Language program that uses
component change processing, see the Running Component Change Processing in Batch
section in this chapter.
Simulating a Change
You can also use the simulation options (94 and 95) on the Display Model References
and Display Model Usages panels to view the results of component change processing.
These options let you see the impact of a proposed private or public change on other
objects in the model before you actually make the change. The resulting display
identifies which other model objects need to be edited or generated as a result of the
proposed change.
For more information on simulating component change processing, see the Impact
Analysis section and the Simulating Changes to Model Objects section, both in this
chapter.
For more information on the model profile in general, see the Model Profile section in
this chapter.
Note: If you do not run component change processing interactively, be sure to run the
Apply Component Changes (YAPYCMPCHG) command regularly; for example, overnight
in batch. This keeps the model changes to be processed down to a manageable level.
When a model object is changed and component change processing is not performed
immediately, CA 2E sets the Impact processed indicator to N to indicate this. You can
check this indicator to decide when to run the YAPYCMPCHG command by filtering the
All Objects list (*ALLOBJ) to determine which and how many objects require processing.
Performance Considerations
The amount of overhead incurred by running component change processing
interactively generally depends on:
■ The size and complexity of the model.
■ The type of editing to be done.
For example, a *DSNR working in a large model negatively affects the system when
running component change processing interactively. On the other hand, a *PGMR
making changes in a relatively isolated area of the model could effectively use
interactive component change processing to quickly identify model objects affected by
his changes. Both types of users can use the simulation options to gauge the effect of
changes.
Experience will show the impact of running component change processing interactively;
however, following are a few suggestions for estimating the likely effect. The amount of
interactive overhead depends on:
■ The type of the model object you are editing. Changes to low level model objects
such as, conditions, fields, and files increase interactive overhead because the
expansion process includes more objects.
■ The significance of the object in the model. For example, an important internal
function that is used by many other internal functions may cause a large number of
objects to be expanded and as a result increase interactive overhead.
■ The frequency with which you apply component changes. Running component
change processing frequently minimizes the amount of work required each time it
is run.
For more information on model list commands, see the Commands to Manipulate
Model Object Lists section in this chapter, and the Command Reference Guide.
The arrows indicate the usage sequence for the functions that use the access path. The numbers in the small boxes
indicate the usage level of each object relative to the access path at level 0.
The following section shows the difference between a private and public change to Access Path.
Note: That all usage levels beyond the first external function are ignored; in this
case, PMTRCD, EXCEXTFUN 1, and EXCINTFUN 3 are not included in the expansion.
2. Sets the Required Action Indicator for the affected external functions to GEN in the
All Objects lists.
3. Checks the model objects at level 2. The result depends on the way in which the
level 1 object uses Access Path. In this example the RTVOBJ function uses Access
Path as the based on access path and for parameter definition. Specifically:
■ Public change to RTVOBJ is a private change to EXCEXTFUN 2; it needs to be
edited to accommodate the change to RTVOBJ's parameters (Required Action =
EDT).
■ Public change to RTVOBJ is a private change to EXCINTFUN 4 and it needs to be
edited (Required Action = EDT).
These are shown in the diagram by the letters EDT and the small box containing a 2.
4. Repeats the process for the model objects at level 3. The private change to
EXCINTFUN 4 is a private change to the external DSPFIL function and it needs to be
generated (Required Action = GEN).
5. Repeats this process for each usage level until an external function is encountered.
When you perform the required actions (EDT or GEN), CA 2E automatically resets the
Required action indicator as follows:
■ For GEN, when an access path or external function is successfully regenerated,CA
2E automatically resets it to blank.
■ For EDT, if the object is an access path or external function, after editing it is reset
to GEN. For all other model objects, it is set to blank.
After you perform the necessary editing, component change processing is invoked again
to ensure that the change is reflected in regenerated and newly created using objects.
As a result, it is recommended that you edit the model object at level 1 first and then
proceed upward to edit model objects at continually higher usage levels. This prevents a
model object from being flagged EDT more than once. At the end of the process, all
objects that require regeneration will be flagged GEN.
For more information on how CA 2E distributes the impact of a change throughout the
model, see the appendix titled "Change Control Facilities Reference Tables" in this
guide.
Model Security
CA 2E lets you access a model as one of three user types: designer, programmer, or
user. Your user type determines the limitations placed on you when you access and edit
the model.
■ A designer (*DSNR) can change any aspect of the model, both data relationships
and functional specifications. If the Open Access (YOPNACC) model value is set to
*YES, multiple designers and programmers can use the model at the same time;
otherwise, only one designer can use the model.
■ A programmer (*PGMR) can change functional specifications, but cannot change
database files or fields. Multiple programmers can use the model at the same time.
However, a programmer cannot use the model at the same time as a designer if the
Open Access (YOPNACC) model value is set to *NO.
■ A user (*USER) can only view the model and cannot change it. However, a *USER
can edit model object lists.
In addition, certain designers have additional locking authority (*DSLK). This authority
lets the designer change the Open Access (OPNACC) model value and place permanent,
exclusive locks on functions and access paths that can only be removed by a designer.
You can view the authority you have to a model by accessing the CA 2E product menu
and specifying the model; namely:
YSTRY2 model-name
Note: A designer or programmer can access the model in view only mode by setting the
View only option to Y in the model profile.
For more information on user authority and the YOPNACC model value, see the
Administrator Guide.
Model Profile
The model profile lets you define defaults for various processes and file specifications
for an interactive session. For example, the model profile contains defaults for the
following:
■ Log changes mode
■ View-only mode
■ Full screen mode for the Edit Model Object List panel
■ Component change processing
■ Name of session list
■ Name of user option library and file
■ Default model object list name for commands
■ Generation and creation library
There is a model profile for each user for each model. When a new user is granted
access to a model, CA 2E automatically creates a model profile for the user. The defaults
for a session are taken from the model profile.
Suppose you pressed F18 or used the YEDTMDLPRF command. The following panel
displays:
These default settings establish the basic working environment for your interactive
session. You can reset these to modify your environment for the current session; for
example, to use full screen mode on the Edit Model Object List panel or to access the
model in view only mode.
Scroll down to view the second screen of the Edit Model Profile panel containing the
Submit Model Create Default Values.
These values establish the default generation and creation environment for the current
session and are used to preload job list commands; for example, the Submit Model
Create (YSBMMDLCRT) command. In addition to changing values on this screen, you can
modify the default values when you invoke the command by specifying other parameter
values on the interactive command prompt or on the batch command.
The third screen of the Edit Model Profile panel contains the Submit compilation option
and the name of the GUI folder for CA 2E Thin Client.
Understanding Versions
Understanding Versions
Versions of the same model object form a version group. Each version in a version group
is a unique model object; the term version is used to identify them as being related.
In any group of versions, one and only one of the model objects in the group may be
current. The current version is the version that is active in the model; it is the model
object that is used by other objects in the model and is the model object that appears
on CA 2E editing panels.
If you use CM, each version also has one of the following version types. If you do not use
CM, all versions have version type DEV.
■ DEV—Development
■ PRD—Production
■ ARC—Archive
All versions in a group have the same Copy name. This value is used to initialize the Copy
name stored on the model list that the Copy Model Objects (YCPYMDLOBJ) command
uses to copy objects between models. Initially the Copy name for a version group is the
same as the name of the original model object. You can change the Copy name for all
versions in a group using the Change Model Object Description (YCHGMDLOD)
command on any one of the versions. New versions will automatically be given the same
Copy name as the other members of the group.
The following diagram illustrates basic concepts relating to versions. The original object
in this diagram is the Edit Customer function; it has three versions. These four functions
comprise the version group for Edit Customer.
All versions in the version group are displayed in reverse chronological order; the most
recently created version appears at the top of the list of entries. The current version is
highlighted and has an asterisk to the right of the Subfile selector and a Status of
Current.
This panel supports a wide range of subfile selection options and provides alternate
views for each version. The options with similar selection values perform the same
function as those on the Edit Model Object List panel. For example, from this panel you
can:
■ Create a version
■ Edit a version
■ Make a version current
■ View detail for a selected version
■ Perform impact analysis
■ Generate a version
■ Delete a version
For more information on the subfile select options, see the Editing Model Object Lists
section in this chapter.
Creating a Version
You can create a new version of a function or message by using the:
■ Work with Version panel
■ Create Model Version (YCRTMDLVSN) command from within a control language
program
■ Create Object Version (YCRTOBJVSN) command outside control language programs
The new version will be a copy of the original function or message, but will have a
different object name, object surrogate number, and implementation name. The object
name for the version must be unique within the owning file; the implementation name
must be unique within 3GL object type in the model. The new version is given the Copy
name used by the version group to which it belongs.
1. Determine the To model object name. You can either let CA 2E generate a new
name for the new version, or you can override this default.
The name CA 2E generates is the original name suffixed by a 7-digit number; the
original name is truncated if the new name is longer than 25-characters. For
example,
■ Edit Branch 1459353
■ Edit Customer Addr1541577
Note: You can define your own naming convention for automatic name generation
using the exit program YOBJNAMR1C.
2. Determine currency. You can make the new version current by specifying *YES for
the Make model object current option. The default is not to make the new version
current so you can edit and test the new version before you make it current.
If you do not make the version current at this time, you can do so later using option
26 on the Work with Versions panel or by using the Redirect Model Objects
(YRDRMDLOBJ) command.
3. Determine whether to transfer the object name. You can request that CA 2E
exchange the name of the original function or message with the name of the new
version by entering *YES for the Transfer object name option. As a result, the name
assigned to the original object will be the name indicated by the To model object
name option. The default is not to exchange the names.
4. Press Enter to create the new version and return to the Work with Versions panel.
CA 2E adds the new version to your session list and creates a model object description
for the new version. The Copy name assigned to the new version will be the Copy name
currently being used for the group to which the new version belongs.
You can view the model object description for a non-current version using selection
option 8 on the Edit Model Object List panel when editing your session list or any named
model object list containing the version. By default only current versions are displayed
when you edit the All Objects list (*ALLOBJ). To display non-current versions, press F17
and set the Current objects only option on the Subset Model Objects panel to *YES.
A version group need not have a current version. In that case, the only impact is that the
function or message will not be visible on CA 2E editing panels. Since a non-current
version can appear as an entry of a model object list, you can still view, edit, and work
with the versions in the group.
This process is also referred to as redirection because it redirects all model objects that
see the existing current version to see the new current version.
Example
Suppose Internal Function A2, a version of Internal Function A, has been edited and
tested and you want to make it current. This diagram shows the other objects in the
model that see Internal Function A. Note that no model objects see Internal Function
A2.
When you make Internal Function A2 current, all model objects that had referred to
Internal Function A are changed to use Internal Function A2. This is shown in the
following diagram. Note that other model objects no longer see Internal Function A.
If you find errors in Internal Function A2 you can make Internal Function A current again
using the same process.
1. Indicate how CA 2E is to handle the object names of the two versions. By default,CA
2E exchanges the name of the original current version and the name of the new
current version.
Be sure to document the exchange of model object names since this could be
confusing to others. Also, note that model object list entries that see these versions
are not automatically updated to reflect the exchange of names. You can refresh
the affected model object lists by pressing F15 from the Edit Model Object List
panel to invoke the Check Model Object List (YCHKMDLLST) command.
You can change the default if you set the Transfer object name option to *NO.
2. Indicate whether redirection is to be considered a significant change to the model.
By default, considers redirection to be a public change. If you set the Change type
option to *PUBLIC or *PRIVATE, updates component change processing data in the
All Objects list for the new current version. If you specify *NONE, component
change processing is not performed.
Cautions
When you make a version current, all objects that use the previously-current version are
affected. Use this feature with care to prevent unexpected results. The following are
some points to consider:
■ You can determine the impact of making a new version current in advance using CA
2E's impact analysis tools to view the level 001 usages for the existing current
version. For example, use selection option 95 on the Display Model Usages panel to
simulate a public change.
■ If some of the using objects require the original functionality (in other words, if they
need to continue using the existing current version), you cannot introduce your
changes by making the new version current. Instead:
a. Copy the new version to create a new model object, not a version.
b. Edit the action diagrams of the using objects that require the new functionality
to see the new copy.
■ To implement and test an internal function or message it must be used by an
external function. In other words, it must be made current. Before you make it
current, be sure to advise other developers so that your changes to the internal
object are not inadvertently incorporated into a change to an application program.
Non-current Versions
The versions within a version group that are not current:
■ Can be included as entries on a model object list.
■ Can be edited like any other model object.
■ Are subject to the same locking restrictions as other model objects.
■ Can be documented, copied and deleted.
■ Have unique implementation names and can be generated and called (external
functions only).
For more information on calling non-current versions of external functions, see the
Testing an External Function section in this chapter.
For more information on the Redirect Model Objects (YRDRMDLOBJ) command, see the
Command Reference Guide.
Using Versions
Following is the basic process for using a version of a function or message.
1. Create a version.
2. Edit the version.
3. For an external function, generate the source and create the program object.
4. Test the version. See the sections following this list for more information.
5. When you are satisfied with your changes, make the version current.
6. If errors occur, make the previous version current again.
For more information on the Call a Program (Y2CALL) command, see the Command
Reference Guide.
Comparing Versions
Use the Compare Model Objects (YCMPMDLOBJ) command to compare two versions;
for example, to identify changes in one version in order to retrofit them to another
version. You can use this command to compare functions, messages, or files (FIL). You
can invoke this command from a command line or by using selection option 34 on the
Edit Model Object List panel.
For more information on the Compare Model Objects (YCMPMDLOBJ) command, see
the CA 2E Command Reference Gide.
Deleting Versions
You delete versions using option 4 on the Work with Versions panel or the Delete Model
Version (YDLTMDLVSN) command. Since a version is a separate model object, you can
delete it as you would any other model object; in other words, if it is not used by other
model objects. As a result, you can always delete a non-current version since by
definition it is not used by other model objects.
Note: If you try to delete a current version that is not used by other model objects,CA 2E
instead makes the version non-current. You can then repeat the delete operation to
delete the now non-current version.
Note: The information in this manual is for RPG- and COBOL-generated applications.
You can generate source for a CA 2E access path or function interactively or in batch
(see the Performance Considerations section in this chapter). The CA 2E generators:
■ Produce source from the design that you defined in your CA 2E design model.
■ Maintain linkages between files, fields, functions, panels, and reports.
■ Preserve the integrity of CA 2E database objects.
The type of source generated depends on the object type for which you issue a request
for generation. The object types include:
■ Access path—Produces DDS or SQL for the access path
■ Function—Produces:
■ HLL program source for external functions, which can include embedded SQL
data manipulation language (DML) statements.
■ Device file DDS for device functions.
■ Help text for interactive functions (TM or UIM).
■ Field reference file—If used, produces DDS for the field reference file
Implementation
Once you have generated, compiled, and tested your functions and access paths, you
are ready to set up your application and move it into production. Implementation is the
process of setting up your application for end users. Your tasks might include the
following:
■ Using CA 2E Toolkit menu facilities, create menus for end user access to your
application.
■ To run your application in an environment without the CA 2E product libraries,
duplicate necessary CA 2E shipped objects into the library for execution objects.
Use the Duplicate Application Objects (YDUPAPPOBJ) command or the Create
Generation Objects(YCRTGENOBJ) command.
■ Set up test standards and verify that your application works as designed.
■ Using Toolkit move commands (and compile commands, as needed) transfer source
files, generated application objects, and/or data objects from your development
library to the execution library.
You can manage many of these operations using Change Management (CM).
Performance Considerations
This section offers tips on efficient generation and compilation.
If the GENLIB and SRCLIB parameters specify the default value, *MDLPRF, you can also
control the specification of the source and object libraries by changing the model profile
of the user submitting the request.
When you finish the development and system test phases, your application is ready for
final testing. Then set YPMTGEN to *MSGID if you are externalizing the device text
constants for National Language Support (NLS). You must then generate and compile
your functions.
When ready to generate help text for a specific function, you can set the help text
function option to Y (*YES) or O (*ONLY) for that function, then generate/compile.
■ *YES—Generates and compiles help and other function components.
■ *ONLY—Generates and compiles only the UIM help text for the function. Use the
*ONLY option only when all development on the compiled function is complete.
Model Reorganization
By running the Reorganize Model (YRGZMDL) command, you can reduce the amount of
storage needed for the model library by removing old data. Use the RGZOPT(*MDL)
option on this command. Running the YRGZMDL command regularly for a model and job
lists, based on how often they change, is a good strategy.
Note: For more information on using the Toolkit compile pre-processor, see the Toolkit
Concepts Guide.
The SQL library can be created at the same time as the model. If it was not, you can set
up an SQL library using the Create SQL Library (YCRTSQLLIB) command. This command
also updates the YSQLLIB model value with the SQL library name.
Other implementation options include switching from DDS to SQL and from standard
CUA header/footers to windows and action bars (CUA Entry to CUA Text Subset).
CA 2E retrieves the text for the standard banner in all source types from the messages
file Y2MSG. If you want different text in the banner, you can change the message text
for these messages using the i OS Work Message Description (WRKMSGD) command.
The following table lists the messages used in the standard source banner. These
messages are stored in Y2ALCMSG in the language dependent object (LDO) library,
Y2SYVENG.
Note: You will need to re-apply any changes to the banner after each CA 2E product
upgrade.
Execution Displays
CA 2E provides the following model values for changing certain execution data, using
the YCHGMDLVAL command:
■ YDATFMT—Date display format. If YDATGEN is MDY, YMD, or DMY, YDATFMT is
ignored. If YDATGEN is VRY, CA 2E checks the value of YDATFMT to determine
which to use.
■ YCMPTXT—Company text on displays.
■ Y2MGFLA—Message file name.
■
Note: Always use the YCHGMDLVAL command to change model values, rather than
using the i OS Change Data Area (CHGDTAARA) command. Changing model values
involves more than changing data areas.
For example, the SEU source listing for an Edit Customer program might include these
lines:
The Toolkit compile pre-processor offers many options, such as invoking CL commands
and storing compiler directives in source.
For more information on the pre-processor, see the Toolkit Concepts Guide.
For Functions
The compiler overrides you select depend on the object type but might include:
■ Printer device files—Using the i OS Create Print File (CRTPRTF) command to specify
form characteristics and spool file scheduling, such as OUTQ(MYOUTQ)
■ Display device files—Using the i OS Create Display File (CRTDSPF) command,
parameter WAITRCD (workstation timeout)
■ RPG programs—Using the i OS Create RPG/400 Program (CRTRPGPGM) command,
with parameter USRPRF set to *OWNER to adopt authority
■ COBOL programs—Using the i OS Create COBOL Program (CRTCBLPGM) command,
with parameter USRPRF set to *OWNER to adopt authority
Note: Do not override values that are already specified by access path details, such as
MAINT and TEXT. You can review these values on the Access Path Details panel.
Important! Make sure you copy the source before changing it.
Note: You can change the allocation character that each object type uses from the Edit
Generation Types panel.
For more information on name allocation and auto-naming, see the Administrator Guide
Note: The message handling routines are shipped as RPG programs using i OS Message
Application Programming Interfaces (APIs). These replace the original CLP routines. The
names have been left with a C extension for compatibility with old applications.
CA 2E is designed to make use of some of the IBM i subsystem facilities. For successful
generation and implementation, an understanding of these IBM i facilities is important.
The following information will give you an understanding of how to create and change
the subsystem description for use with CA 2E.
Note: All jobs on the IBM i run in a subsystem. You may want to define a subsystem to
run similar kinds of jobs, such as interactive or batch.
For more information on IBM i subsystem facilities, see IBM's Application System/400
Programming: Work Management Guide.
You can display the subsystem definition with either the i OS Display Subsystem
Description (DSPSBSD) or Work with Subsystem Description (WRKSBSD)
commands.When you run the DSPSBSD command, the following panel displays:
To focus on the job queue and routing entry descriptions, let us use, as an example, the
QBATCH subsystem for batch jobs. YSBMMDLCRT uses QBATCH by default. You can
change this default and create a different subsystem of CA 2E-related activity.
Routing Entries
Option 7, Routing entries, on the Display Subsystem Description panel defines how CA
2E is to start a job in QBATCH. When you choose option 7, the Display Routing Entries
panel displays:
CA 2E compares the routing data from the job description to each Compare Value in the
list as follows:
■ If there is a match,CA 2E calls the associated program.
■ If there is not a match,CA 2E uses the last routing entry with the value *ANY. In this
example, the job has a routing entry of YCRTOVR, which matches sequence number
4444 and calls the program YBRTPRC.
Initially, the generation job, YGENSRC, uses the Class assigned to the routing entry of
YCRTOVR. The program YBRTPRC is associated with the routing entry of YCRTOVR;
program YBRTPRC is the pre-processor for YGENSRC. The last step in pre-processing
assigns new routing data and issues the i OS Reroute Job (RRTJOB) command. This
command reroutes the job, depending on the YCRTENV model value setting. If model
value YCRTENV is set to QCMD (IBM i mode), routing data is set to QCMDB.
The subsystem compares the new routing data with the Compare Values in the routing
entries list.
■ If a match is made on QCMD38, job control passes to the QCL program.
■ If a match is made on QCMDB or *ANY, job control passes to the QCMD program.
If you want to change the run priority of YGENSRC, modify the Class associated with
each of the following routing entries.
■ Compare Value YCRTOVR
■ Compare Value QCMD and/or QCMD38, depending on your model creation
environment (YCRTENV)
To determine the Class, look at the details for the routing entry associated with
YCRTOVR. On the Display Routing Entries panel, enter 5 beside the routing entry. This
Display Routing Entry Detail panel displays (for this example, the Class is QBATCH).
Let us return to the Display Routing Entries and enter 5 beside the routing entry
associated with *ANY. The Display Routing Entry Detail panel displays, with Class
QBATCH.
The run priority defines the job priority (1 through 99). A value of 1 for the run priority
gives a job the highest priority in competing for machine resource with other jobs.
To display the Run priority of each program, you can invoke the Display Class
Information panel from an i OS command line by entering:
DSPCLS Class
where Class is the value shown on the Display Routing Entry Detail panel for that routing
entry.
Two types of subsystem configuration are possible on the IBM i: QBASE and QCTL. QCTL
is recommended for the controlling subsystem.
Before you can verify the settings in your work environment, you need to identify:
■ The value of your controlling subsystem; from an i OS command line, type
DSPSYSVAL QCTLSBSD and press Enter.
■ The model job queue from the model job description. Enter DSPJOBD QBATCH (or
your job description name), and record the job queue attached to this JOBD.
Note: To perform the following steps, sign on as QSECOFR or as a user profile that
belongs to the same group profile as QSECOFR.
ADDJOBQE SBSD(QBATCH) +
JOBQ(QGPL/QBATCH2)
5. Restart subsystem QBATCH. Type the following command string and press Enter:
STRSBS QBATCH
Now that you have reviewed and changed your subsystem, complete steps 6-9 to
make sure it works correctly in CA 2E.
6. In every model, change the job description to use the job queue name QBATCH2.
For each model, type the following command string and press Enter:
CHGJOBD JOBD(model-library-name/QBATCH+
or your-job-description-name) +
JOBQ(QGPL/QBATCH2)
Note: You should check any job descriptions explicitly referenced in the model
profiles for the model. You can edit the model profile for a user using the Change
Model Profile (YCHGMDLPRF) command or by pressing F18 from the Edit Model
Object List panel.
For more information on compiling right after generation, see the Sending
Generations and Compilations to Separate Queues section in this chapter.
7. In every model, do the following:
a. Verify that the job description library list is correct for the model. Type one of
the following command strings, as appropriate, and press Enter to access the
Display Job Description panel:
DSPJOBD JOBD(QGPL/QBATCH)
DSPJOBD JOBD(model-library-name +
You should check the library list for the model using the Edit Library List (YEDTLIBLST)
command. You can determine the model's library list using one of the following:
■ The Display Model Value (YDSPMDLVAL) command to display the YLIBLST model
value.
■ The Library list options on the Designer (*DSNR) Menu. Enter:
CHGJOBD +
JOBD(model-library-name/QBATCH) +
RTGDTA('YCRTOVR') You should check any job descriptions explicitly referenced in the
model profiles for the model.
Note: YCRTOVR must be in capital letters.
1. Verify that the routing entries are correct in the subsystem to which you will submit
the CA 2E jobs. The subsystem must contain a routing entry with a value of
YCRTOVR to match the routing entry in the job description the model uses. Perform
the following to verify routing entries:
a. Type WRKSBSD QBATCH (or your subsystem name) and press Enter to access
the Work with Subsystem Descriptions panel.
b. To display the subsystem description, at Work with Subsystem Descriptions
type 5 and press Enter. The Display Subsystem Description panel displays.
c. To display routing entries, at the Display Subsystem Description panel select
option 7. Your subsystem should contain the following routing entries.
2. 2 . If needed, change or add routing entries using either the i OS command, Change
Routing Entry (CHGRTGE) or Add Routing Entry (ADDRTGE), as appropriate. Be sure
to terminate the subsystem before adding a routing entry.
To move data objects from the existing Toolkit library Y1SY to another library, type the
following command string:
For more information on the Move Product Data Objects (YMOVY1DTA) command, see
the Toolkit Reference Guide.
Upon receiving your generation request,CA 2E places the members on a job list with a
stage flag. The stage flag indicates the next processing step to be performed on the
members. This initial flag is based on whether your request is batch or interactive.
■ GEN—Batch source generation and creation is requested. When batch source
generation is completed, the GEN flag changes to CRT.
■ CRT—Interactive source generation is completed and batch creation is requested.
The processing sequence for batch or interactive mode depends on the value of
parameter SBMCRTOPT on the YSBMMDLCRT command.
■ *GENOK—Default. Submits generated source for compilation only after the source
is successfully generated.
■ *IMMED—Submits source members for compilation with the job that generates
source.
After you submit a request, you initiate processing by executing the YSBMMDLCRT
command. Once source has been successfully generated,CA 2E changes the stage flag to
CRT and submits the source for compilation.
Note: Submission of your request may be deferred until the source generation for
related members is complete. If so, a member temporarily may be displayed as CRT
*GENSRC.
CA 2E removes from the pending list the members that successfully generate and
compile. If members fail to compile, an error message is displayed. You can access
source for the members and the compile listings from the job list to identify the
problems.
CA 2E assigns each member in the job list one of the following statuses which changes
throughout generation:
■ *SBM—Indicates a job has been submitted to control batch generation and/or
submission of compilation.
■ *GENSRC—Shows that source generation for a member is in progress.
■ *JOBQ—Shows that generated source for a member has successfully been
submitted for compilation;CA 2E deletes existing versions of i OS objects in the
generation library.
After submission,CA 2E assigns a status to each job on the job list. Immediately after
submission, the status is *SBM.
When CA finishes generating the job and submits it for compilation, the activity changes
to CRT and the status changes to *JOBQ.
When the job is successfully compiled,CA 2E drops it from the top of the job list.
If an error occurs during generation, the status changes from *GENSRC to *ERROR.
Batch Generation
The following diagram shows the batch generation stages for both *GENOK and
*IMMED. Notice that members have a GEN stage flag during generation, which changes
to CRT once generation, is successful.CA 2E automatically submits members for
compilation that have a CRT stage flag.
Interactive Generation
The following diagram shows the stages for interactive generation for both *GENOK and
*IMMED.
For more information on batch versus interactive generation see the chapter titled
"Generation and Implementation: An Introduction" in this guide.
You can specify separate job descriptions for generation and compilation, using the
JOBD (generation) and CRTJOBD (compilation) parameters on the YSBMMDLCRT
command. Both job descriptions default to the YCRTJBD model value.
For compilation, the initial library list of the job description should contain the name of
the generation library, specified by model value YGENLIB, and any other libraries
containing objects required for compilation, such as the HLL compilers.
Use the Toolkit Edit Library List (YEDTLIBLST) command to maintain both the library list
of your model and the associated job description.
The value *USER for JOBLST specifies a list with the same name as the user profile of the
job invoking the command.
Note: You can also edit a member's source from Submit Model Generations & Creates
by entering E (STRSEU) by the member.
You can access the Submit Model Generations & Creates panel in the following ways:
■ From the Display Services Menu, choose the option Submit model create request
(YSBMMDLCRT)
■ Execute the YSBMMDLCRT command from an i OS command line, setting the EDIT
parameter to *YES
■ From the Edit Model Object List panel, press F19 and select the YSBMMDLCRT
option from the Job List Commands Menu
You can specify whether the activity status of the access path and function entries in the
list will be *GEN (require generation and compilation) or *CRT (require compilation
only). The parameters of the YBLDJOBLST command are:
■ ACPACT—Access path activity flag
■ FUNACT—Function activity flag
Alternatively, you can use the Convert a Model Object List (YCVTMDLLST) command to
convert an existing model object list into a job list. You can execute this command from
the Edit Model Object List panel by pressing F19 and selecting the YCVTMDLLST option
from the Job List Commands Menu.
Parameter UPDLST on the YCHKJOBLE command specifies one of the following actions
to take if the object or source does not exist:
■ *RMVOK—Removes the member from the job list if the object and/or source
already exists.
■ *RMVERR—Removes the member from the job list if the object and/or source does
not exist.
COBOL programs pass numeric parameters using the same definition as the field. If the
definition is signed numeric (unpacked), COBOL programs pass the parameter in that
way. Similarly, COBOL programs receive numeric parameters according to their
definition in the model as packed or signed.
When a COBOL program calls an RPG program with numeric parameter passing, a
parameter mismatch error occurs if the COBOL program defines one of the parameters
as signed numeric (unpacked).
For COBOL,CA 2E generates code in the calling function to ensure that the run unit does
not terminate.
Closedown Program
For RPG, Closedown Program settings have these results:
■ Y—Causes RPG to generate a Set on Last Record indicator (LR). This indicator closes
all files and ensures a full initialization on the next call.
■ N—Drops the LR indicator and issues a RETRN. The return allows for a faster
subsequent call.
A CHGOBJ function implemented in RPG can include code to update key values.
However, an equivalent COBOL implementation cannot, since the COBOL REWRITE
statement does not allow key value changes.
If you need to change the value of one or more keys using a COBOL program, do not use
a CHGOBJ function. Instead, when you define the function that specifies the COBOL
function, use separate Delete Object (DLTOBJ) and Create Object (CRTOBJ) functions.
If necessary, you can use an Execute Internal Function (EXTINTFUN) function to provide
a dummy CHGOBJ function.
For example, a function that changes the value of a key field in the database has
different implementations:
■ For RPG implementation, the program could consist of an RTVOBJ function that
calls a simple CHGOBJ for each record read.
■ For COBOL implementation, the program must consist of separate DLTOBJ and
CRTOBJ functions.
For more information on how to change key values using a COBOL program, see Building
Applications.
Error Routine
For RPG implementation, if you request an error routine, CA 2E generates a *PSSR
routine.CA 2E generates any database files in the resulting program, treating each file as
user-controlled and specifying a *PSSR routine. The initialization routine includes
explicit file opens.
Header Specification
The CA 2E generator obtains an RPG header specification from the model value
YRPGHDR.CA 2E uses this header to generate source for RPG programs.
Note: If you ever plan on changing the HLL, specify *RPGCBL for model value YHLLVNM.
Note: If the EXCUSRSRC you are converting accesses a data area, be aware that COBOL
has no equivalent to the IN and OUT statements in RPG, since COBOL does not support
direct access to data areas.
YCHGMDLVAL MDLVAL(YHLLGEN) +
VALUE(*CBL)
■ HLL(s) naming convention for new names, using command string:
YCHGMDLVAL MDLVAL(YHLLVNM) +
VALUE(*RPGCBL)
Note: If you think you might ever create objects in both RPG and COBOL, set the model
value YHLLVNM to *RPGCBL.
If your model was initially created with the naming convention set to *RPGCBL, skip
steps 2, 3, and 4.
1. Replace the generation type data in your model library with the COBOL generation
types. To replace the data, enter:
CPYF +
FROMFILE(2E-NL-library/YGENTYPPDP) +
TOFILE(your-model/YGENTYPRFP) +
FROMMBR(CBL) TOMBR(*FIRST) +
MBROPT(*REPLACE)
To find out the National Language library (2E-NL-library) name, enter:
DSPDTAARA +
DTAARA(2E-product-library/YLNGxxxSYA)
1. Replace the device format data in your model with COBOL formats. To replace the
data, enter:
CPYF +
FROMFILE(2E-NL-library/YDEVFMTPDP) +
TOFILE(your-model/YDEVFMTRFP) +
FROMMBR(CBL) TOMBR(*FIRST) +
MBROPT(*REPLACE)
1. For existing functions and files, run the Convert Model Names (YCVTMDLVNM)
command before regenerating them in COBOL. This command changes existing
names to valid COBOL names and creates a report of old names and corresponding
new names. To rename function and file names, enter:
YCVTMDLVNM MDLLIB(your-model-library)
1. Add the COBOL library, Y2SYCBL, to your model and model job description library
lists. Be sure to exit and save the changes and update the batch job description. To
add the library, enter:
YEDTLIBLST LIBLST(your-model-library/*JOB)
1. Delete previously submitted items from the job list for Submit Create Requests
from Model (YSBMMDLCRT). You cannot change the source type of a function
already on the list.
For more information on deleting items from job lists, see the Using Job Lists
section in this chapter.
2. Change the source type of existing functions to CBL. Enter the model and change
the source type. Use either of the following methods to display the Edit Function
Details panel:
■ Go to the Display Services Menu and select the Display all functions option.
Zoom into each named object on the list.
■ On the Edit Model Object List panel specify option 2 for each function on the
All Objects list (*ALLOBJ).
Note: The model value YHLLCBL determines whether you generate COBOL/74 or
COBOL/85.
3. Generate and compile as follows:
■ If the access path format names begin with @, the RPG default, generate and
compile all access paths as well as functions. This changes the RPG @ prefix to
a COBOL prefix.
■ If you have created a set of access paths with COBOL compatible names,
generate and compile only the functions.
Note: If you think you might ever create objects in both RPG and COBOL, set model
value YHLLVNM to *RPGCBL.
1. Delete previously submitted items from the job list for Submit Create Requests
from Model (YSBMMDLCRT). You cannot change the source type of a function
already on the list.
2. Enter the model and change the source type of existing functions to RPG.
a. Go to the Display Services Menu and select the option Display all functions.
b. Zoom into each named object on the list.
3. Generate and compile the functions.
Note: If you want to generate and compile in another HLL, you must change the
function's attribute before you generate the function.
Each member on the job list initially has a *SBM (submitted) status. As CA 2E generates
a member, the status changes to *GENSRC (source member being generated), *ACTIVE,
or *JOBQ (source submitted for compilation). A source member no longer appears on
the list when its compilation is completed unless the compilation fails and the status
changes to *ERROR. For errors, you must resubmit both the display file and RPG or
COBOL members.
Note: The condition values file should not be in use when running the YCVTCNDVAL
command.
If the model uses a field reference file, the DDS for files are generated to use field
referencing from this central definition of fields rather than specifying full field
definitions in the source.
To generate DDS source for a field reference file, from Display Fields, choose one the
following:
■ For batch generation, press F21.
■ For interactive generation, press F9.
Note: If you are adding a field reference file to an existing model, you must generate its
source before submitting functions for generation/compilation.
Two other model values are available for generating a field reference file.
■ YFRFTXT—Specifies which file text to use to describe the field reference file.
■ YFRFPFX—Specifies which prefix to give fields in the field reference file.
For more information on model values and the YCHGMDLVAL command, refer to the CA
2E Command Reference Guide.
If the model uses a field reference file, the DDS for files are generated to use field
referencing from this central definition of fields rather than specifying full field
definitions in the source.
Two other model values are available for generating a field reference file.
■ YFRFTXT—Specifies which file text to use to describe the field reference file.
■ YFRFPFX—Specifies which prefix to give fields in the field reference file.
For more information on model values and the YCHGMDLVAL command, refer to the CA
2E Command Reference Guide
■
Note: You can change the names of the display file, display program, and condition
values file using the model value YVLSPFX.
YCVTCNDVAL MDLLIB(model-library) +
GENLIB(generation-library)
Note: Be sure to use the appropriate library list containing the generation library
into which you want to convert your condition values; that is, use the appropriate
model library list.
1. Press Enter to execute the YCVTCNDVAL command.
CA 2E converts the values to a database file. If you invoked the command from the
Display Services Menu, CA 2E returns to that menu. The following message displays:
Condition values from model model name converted to library library name
For more information on multi-model environments, refer to the chapter titled "Setting
Up a Multi-Modeling Environment" in the Administrator Guide
There is generally no need to run this command because changes to message functions
in the model are automatically applied to the associated message file in the generation
library.
Note: If you want to use the CA 2E shipped default messages, such as *No value
selected, in an environment that does not include the CA 2E product libraries, use the
Duplicate Application Objects (YDUPAPPOBJ) command.
Verifying Results
CA 2E sends completion messages for successfully generated source. If errors occur, CA
2E:
■ Places a comment line in the generated source with E in column 6
■ Flags the item on the job list with *ERROR
The following sections cover finding errors for action diagrams, generation, and
compilation. You can display a full explanation of the error using the i OS Display
Message Description (DSPMSGD) command. This command looks up the message
description of the message in the message file Y2MSG. For example, you might get the
following message:
You would look up message Y2V0124 by typing in the following command string and
pressing Enter:
For more information on common errors and recommended actions, refer to the
appendix "Troubleshooting.”
Note: On the display of errors, you can press F7 to scroll to the next error, and type 3 for
the ‘Occurrences to process’ option to scroll to the prior error.
The action diagram editor only finds syntax errors in the current action diagram. It does
not find any errors present in embedded internal functions, unless you zoom into those
functions first. The action diagram editor does find errors in hidden structures within
the same action diagram.
For more information on the Action Diagram Services panel, refer to the Using Action
Diagram Services section of the "Modifying Action Diagrams" chapter of Building
Applications.
Error analysis capability is also available outside the action diagram as follows:
■ The new Check Function Action Diagram (YCHKFUNACT) command processes a list
of model objects and produces a listing of functions that contain errors. For
functions containing errors, the Option parameter specifies whether to print a
report (*PRINT) or load the action diagram of the first function containing an error
(*EDIT). The action diagram is positioned at the first block that contains an error.
■ Subfile option 38 on the YEDTMDLLST panel scans for errors in the selected
function. If any errors are found, the action diagram is loaded and positioned to the
first error.
For more information on the SEU editor, refer to IBM's Application System/400
Application Development Tools: Source Entry Utility User's Guide and Reference.
YWRKF FILE(QTEMP/YGENSRCRFP)
1. Scroll through the file to display the point in the action diagram where generation
stopped.
2. Return to the action diagram to make the needed corrections.
You can then revisit the action diagram to correct the error(s).
For more information on using SEU, refer to IBM's Application System/400 Application
Development Tools: Source Entry Utility User's Guide and Reference.
For more information on the CHGJOB command, refer to IBM's Application/System 400
Programming: Control Language Reference.
DSPJOBLOG
SIGNOFF LOG(*LIST)
Debug Aids
The Toolkit provides utilities to streamline debugging. These utilities are a set of
commands that allow you to change the data on a database file directly, set up debug
sessions from directives stored in program source, and take synchronized snapshots of
the contents of a list of files. These commands include:
■ Work with Database File Data (YWRKF)
■ Start Debug and Add Auto Breakpoints (YSTRDBG)
■ Copy Files (YCPYF)
■ Set Break Program (YSETBRKPGM)
■ Display a Program Message Queue (YDSPPGMQ)
The CA 2E documentation utilities are also useful in debugging. You can use them to
identify implementation objects impacted by changes you make as a result of
debugging.
Note: If you use the i OS debug facilities, ensure that you end debug before entering the
model.
Impact Analysis
You can use CA 2E's impact analysis tools to determine the impact of a proposed or
actual change to a model object and to ensure that all dependent objects are edited,
regenerated, and compiled. These tools include:
■ Automatic update of date and time for various processes, including creation,
change, copy (for example, import from another model), and generation, for each
model object.
■ Commands and processes to identify dependent model objects. These include:
■ Multi-level model object usages
■ Multi-level model object references
■ Simulation of a proposed change
■ Component change processing
■ Distinction between changes that require editing of using objects and changes that
are internal and require regeneration of using external functions and access paths.
■ Full integration with CA 2E edit and generation facilities.
For more information on CA 2E impact analysis tools, refer to the Impact Analysis
section of the chapter titled "Managing Model Objects" in this guide.
The remainder of this section provides a general overview of the idea of dependencies
between model objects.
For more information on how changes to a model object affect other types of model
objects, refer to the Impact Analysis section of the "Managing Model Objects" chapter in
this guide; the appendix titled "Change Control Facilities Reference Tables" in this guide;
and the YDSPMDLUSG and YDSPMDLREF sections of the CA 2E Command Reference
Guide.
The only time you do not need to regenerate access paths and functions following a
change to a file (FIL) is if the access path does not include the changed relation.
The following table shows some examples of changes to files that determine whether
you need to generate and compile functions.
F F F F F R
i o i o i e
l r e r e c
e m l m l o
a d a d m
t t p
L L i
B e A e l
e n f n e
f g t g
o t e t F
r h r h u
e n
c
t
i
o
n
?
FLD1 3.0 FLD1 3.0
A N
FLD2 2 FLD2 2
o
FLD1 3.0 FLD1 3.0
B Y
FLD2 4 FLD2 2
e
s
FLD1 3.0 FLD1 3.0
C Y
FLD2 2.0 FLD2 2
e
s
FLD1 3.0 FLD1 3.0
D Y
FLD2 2 FLD2 2
e
FLD3 5 s
FLD1 3.0 FLD1 3.0
E Y
FLD2 5 FLD2 2
e
FLD3 2 s
In each case, the Display Model Usages panel displays. This panel provides a variety of
controls and filters including recursion, scope, and positioning to aid you in analyzing
the effect of an actual or proposed change.
When you request usages for a model object,CA 2E displays a list of model objects that
use it. Following are examples of model usages according to model object type:
■ Physical (PHY) access path type—All references to the access path by other
non-physical (built over or joined to) access paths
■ Other access path types—Physical access path(s) to which the access path refers
■ Function—All functions that reference the function
■ Field—Files, functions, and other fields that refer to the field
■ Condition—In an access path to specify selection criteria, in an action diagram, for a
field to control the validation and default values
■ File—Owning file and application area
■ Array—All functions based on the array or using it for parameter definition
For more information on model usages by model object type, refer to the YDSPMDLUSG
section of the CA 2E Command Reference Guide.
From the Display Model Usages panel you can request generation/compilation of any of
the listed items. You can also edit details such as access path attributes for access paths
or action diagrams for functions.
For example, to find out which access paths are dependent on the physical file access
path of a specific file in a database:
1. From Edit File Details for the file, enter U against the PHY access path. The Display
Model Usages panel displays, listing:
■ Access paths built directly over the specified file
■ Any access path with file-to-file relations to the specified file that result in a
join
2. Find where the listed access paths are used. Enter 91 against each access path.
3. Find the functions that use an access path. Enter F against each access path. The
Display Model Usages panel displays.
For more information on usages and references, refer to the Impact Analysis section of
the "Managing Model Objects" chapter in this guide.
For more information on the YDOCURF command, see the Command Reference.
For more information on the parameters for these commands, refer to the CA 2E Toolkit
Reference Guide.
Multi-Programmer Environments
To be able to compile objects that another programmer or designer created, you must
be authorized to those objects. One way to achieve this is to use an appropriate group
profile.
For more information on setting up authority, refer to the Signing on with the Correct
User Profile section of the "Creating and Managing Your Model" chapter of the
Administrator Guide and the Locking Objects and the Open Access sections of the "Using
Your Model" chapter of the Administrator Guide.
Note: Usually, these two model values are the same because you store data in a library
and then copy the data back from the same library.
Note: When you execute the YSBMMDLCRT command from the Display Services Menu,
the default for both *OLDLIB and *CPYLIB is *NONE.
CA 2E Toolkit Menus
You can create menus for end user access to your application with Toolkit menu
facilities. When you create menus or make changes, additions, and copies, the menus
are ready to use immediately; no compilation is needed.
For more information on menu facilities, refer to the Menus section of the "User Access
Aids" chapter of the CA 2E Toolkit Concepts Guide.
YGO *Y1.
The Toolkit Utilities Main Menu displays.
1. From the Toolkit Utilities Main Menu, enter the Design Aids option.
The Toolkit Design Aids menu displays.
2. From the Toolkit Design Aids menu, enter the Menu Commands option.
The Toolkit Menu Commands menu appears.
3. From the Toolkit Menu Commands menu, enter the YWRKMNU Work with Menus
option.
The Work with Menus panel displays.
4. From the Work with Menus panel:
a. In the Menu name field, enter the name of your menu.
b. In the Library name field, verify that the library is the name of your generation
library (GENLIB).
c. Press Enter. The Work with Menu Details panel displays.
5. To insert lines on your menu, from the Work with Menu Details panel enter the
Insert Mode option.
While in this mode, Toolkit inserts a blank line each time you press Enter.
6. Enter the information you want:
■ Prefix—A word or two that categorizes options (optional).
■ Opt—The character or number the user enters to select the menu. N in this
field automatically numbers the options.
■ Description—Title as you want it to display on the menu.
7. Press Enter twice to end insert mode.
8. Type Z (Details) against each menu option you have defined.
The Work with Menu Options panel displays for the first option.
9. From the Work with Menu Options panel, change any defaults as needed. You can
invoke the command prompter by pressing F4 (Prompt), typing Z (Details) against
any option, and pressing Enter.
Notes:
■ For Option type choices:
– PGM allows use of ? (question mark) for the name of a program.
Note: To be able to execute Toolkit menu options, you must be authorized to the
program or command that the option calls.
For more information on setting up user profiles and passwords for Toolkit menu access,
refer to the User Profiles section of the User Access Aids chapter of the CA 2E Toolkit
Concepts Guide.
Calling a Program
You can execute a compiled program using:
■ Toolkit menus.
■ The CA 2E Call a Program (Y2CALL) command. This command determines the
parameters required by an external function directly from details contained in the
model. You can provide values for all input-capable fields and you can re-use these
values for subsequent calls.
■ This command is useful especially when the parameter interface is complex or if it
has changed.
■ The ‘Call function’ option on the Action Diagram Services panel.
■ The i OS CALL command:
Note: Other parameters may be required. How these are passed depends on how they
are defined in the function.
To find the name of the program you want to execute, use one of the following
methods:
■ For the CALL and Y2CALL commands, go to the Display Services Menu and use the
option, Display all functions. Note the source member name of the program you
plan to execute.
■ From the Toolkit Work with Menu Options panel, enter the following values:
Option Value
Option type PGM
Option to be executed ?
Library *MDL
A selection list of functions displays. Note the source member name (DDS name) of
the function you want to execute.
Note: All CA 2E generated external functions have at least one parameter, a return
code. In the following logic, checking is being done to show the program ended
normally:
Execution Environments
This section gives guidelines for preparing your application for execution.
Testing
As CA 2E provides the structure for your application, your testing can focus on any logic
you have added to action diagrams and the relations between functions. In developing
your test plan, be sure to include:
■ Test data with known input and output.
■ Steps for regression testing.
For more information, refer to the Execution Environments section in this chapter.
What to Test
Critical details to test in your application:
■ Do function calls work?
■ Can every function be called?
■ Can every function that is supposed to call another function do so?
Note: You can set up a menu, using Toolkit menu facilities, to test function calls.
■ Do all the function keys work? If a function key is enabled but does not show on the
panel, or does not work and does show on the panel, go to the device design and
select the command to refresh the function keys from the action diagram.
■ Ensure the YCUAPMT model value is set to *YES or *CALC.
■ Does the F4=Prompt work for fields in which values should be checked?
■ If F4 does not work, the check values entry for the field may specify the default
*NONE. Set the value to *ALL values or an appropriate LST condition.
■ If F4 works but you do not get the right list of values, run the Convert Condition
Values (YCVTCNDVAL) command.
■ If F4 in a key field does not give you a Select Record (SELRCD), the SELRCD
probably did not exist when you generated the function. You can create the
SELRCD and regenerate the application that needs it.
■ Are before/after image errors occurring? The file definitions in the model may differ
from the compiled versions of the file. Regenerate the files and the functions built
over those files.
■ Are level checks occurring? Files may have been changed but the functions were
not regenerated and compiled successfully.
■ Is no data being returned for a Retrieve Object (RTVOBJ) function? You may need to
code a *MOVE ALL built-in function from a Database File 1 (DB1) into a Parameter
(PAR) context.
■ Is an error occurring although the program continues? The program is not properly
checking for and handling a return code.
Moving Objects
To carry out testing in a different library than development, move lists of new versions
of programs and their source into the test environment. There are two approaches for
moving objects with CA 2E facilities.
■ Change Management (CM)
■ Toolkit generic move commands
Note: Before moving objects and source members, be sure to convert condition values.
CA 2E CM Overview
CM, an automated change management system for the IBM i, includes features that
control access and modifications to CA 2E model objects, source code, and executable
objects. CM automates and tracks the flow of source and objects between
development, test, and production libraries. You define the libraries, including the rules
by which you want CM to govern them. CM also implements your IBM i and model
object security.
CM's automatic Check Out of model objects that you intend to change protects against
conflict with the work of other developers.
The CM Check In feature supports moving objects. This feature includes the following
processes:
■ Create Request—Determines the source and objects for migration, maintaining
integrity between CA 2E design objects and source-based objects.
■ Precompile—Promotes the model objects.
■ Compile Request—Generates and compiles the requested source-based objects.
Note: Compile Request is an optional process. You can move objects using CM that
were compiled with CA 2E.
■ Move Request—Moves successfully compiled objects to the target library, including
the related logical files for physical files.
■ Distribute Request—Distributes programming changes to a remote or local target
library.
For more information on CM, refer to the Change Management User Guide.
Note: Toolkit protects your data by requiring an archive library when you move physical
files.
Before generating and compiling UIM help text for the first time, you must execute the
YCVTCNDVAL command. This process will update the Y2USRMSG message file with the
UIM message IDs that are used in the generated source.
Note: Because UIM is a tag-based language, do not start a line of narrative text with a
period (.). The compiler will assume it is part of a tag and the compile will fail with error
CPD5B41 - Control word is missing.
The help modules are referenced in the DDS display file source, using the HLPPNLGRP
keyword. These are associated with specific areas on the panel using the HLPARA
keyword.
For more information on tailoring your help using additional UIM tags, refer to IBM's
Application System/400 Guide to Programming Displays.
Note: If you have Text Management (TM) help text that you have modified outside of
CA 2E, you can convert it to UIM help text by using the Convert Help Text to UIM Panel
(YCVTTMUIM) command. You can then use the resulting panel group with existing
functions without the need to generate again.
Note: The Edit Object Text panel initially shows functional text.
You can add functional or operational text using the Edit Object Text panel. For access:
■ Type N (narrative text) next to the item you want to document. The Edit Narrative
Text (Functional) panel displays.
■ Press F20 (operational text) to go to the Edit Narrative Text (Operational) panel.CA
2E incorporates the text you enter on this panel into the help text for the generated
function.
You can implement advanced NLS for a model, function, or field using external message
identifiers. Using external messages, you can change from one national language to
another, using the same set of application objects. Implementation of *MSGID at the
field level would override implementation at the function level, as would function-level
implementation override model-level implementation.
When you specify externalized screen constants for a model, function, or field,CA 2E
converts screen text literals into messages (MSGID DDS keywords). There can be up to
five messages for a literal, depending on the definitions: three for column headings, one
for right-hand text, and one for left-hand text.CA 2E puts the messages in the message
file specified by model value YPMTMSF at generation time. The generated application
retrieves the messages from the message file at execution time.
Note: The default message file is xxPMTMSG in the generation library (GENLIB), where
xx is the model object prefix defined by YCRTMDLLIB.
Note: If you do not have the national language library for your generated language, you
will need to translate the message file Y2USRMSG in your translated objects library after
YCVTCNDVAL execution, CA 2E-generated help text, and any user-defined help.
To change the language of an application from one language to another, change the
library list to refer to the library that contains the language-specific objects.
Note: Remember, once you convert a model to another national language using
YAPYTRNMDL, the default model language is also changed. All subsequent generation
will be in the new language.
YAPYTRNMDL does not convert user-modified data. If you use the same model for more
than one language, you will need to maintain a set of the following files for each
language:
■ Condition values
■ User messages
■ Prompt messages (externalized message IDs)
■ Help text
■ Panel literals
7. Execute YCVTCNDVAL.
Note: The YAPYTRNMDL command does not change panel literals defined by Edit
Database Relations or Edit Functions such as field names and panel titles. However, you
can externalize these to messages for translation.
The field names in the generated Help are the ones named in your model's database
relations. You can edit the field names in the generated Help to match the column
headings of screen fields.
Remember, you will need to translate any operational or functional text you have
added.
Overview
An NL-enabled function is a device function in which screen or report literals are
generated as external prompt messages, which can then be translated into other
national languages. Prompt messages are stored in a prompt message file named by the
YPMTMSF model value. The prompt message file for each national language is stored in
a separate library. Which national language messages are retrieved at execution time
depends on which library is highest on the library list.
To implement the exit program, the following objects are supplied in Y2SYSRC:
■ Source for the exit program (YPRCMSGR1R).
■ Database files consisting of two physical files with a logical file over each.
When these objects are compiled and the program object for YPRCMSGR1R exists in the
library list, the exit program is called automatically whenever an NL-enabled function is
copied.
Before using the exit program, add a record to this file for each national language you
support. For example:
■ Use the Toolkit Work with Database File Data (YWRKF) command to add records.
■ Retrieve the Y2NLSPP file into your model using the Retrieve Physical Files into
Model (YRTVPFMDL) command and design a maintenance program for the file in
your model.
Note: You do not need the Message Mapping File if all national language message files
are located on the same computer. See the Using the Exit Program section in this
chapter for more information.
The YPRCMSGR1R exit program is written in RPG and is comprised of two separate
subroutines. You can modify or add code to the exit program to customize it for your
use or comment out either subroutine to suit special requirements. See the program
source for details on its entry parameters.
Note: If you change the source, save it in a library other than Y2SYSRC.
AAPRMM Subroutine
The AAPRMM subroutine writes a record to the Message Mapping File for each prompt
message when copying an NL-enabled function. You can use this to log data for
processing later; for example, if your NL prompt message files are located on different
computers.
BAADMS Subroutine
For each new prompt message created during copy of an NL-enabled function, the
BAADMS subroutine creates a translated prompt message in each NL prompt message
file. In other words, BAADMS iterates through the NL support file and creates a
duplicate of each new base-language message, already translated into the
corresponding national language, and stores it in the NL prompt message file. As a
result, the new function is immediately prepared for use in multiple national language
environments.
To create a new prompt message in the NL prompt message file, BAADMS internally
calls a copy program (YCPYMSGR3I) that:
1. Uses the message id of the original base-language message to retrieve the message
details (the translated message) of its counterpart in the NL prompt message file. If
this message id does not exist in the NL prompt message file, a new message will
not be created.
2. Creates a new prompt message in the NL prompt message file that consists of the
message id allocated for the new base-language message and the retrieved
translated message.
For more information on the exit program and the two physical files, see comments in
the exit program source.
Creating Applications
You can create applications for both single byte character set (SBCS) and DBCS from the
same model or from separate models that you maintain in parallel. For either approach,
in creating a DBCS application,CA 2E provides the model value YIGCCNV for Ideographic
Character (IGC) support in DDS.
If model value YIGCCNV is 1 and the display includes an input-capable, IGC-type field, CA
2E:
■ Generates an IGCCNV keyword in the DDS assigned to the function key specified by
the *IGCCNV function key condition.
■ Implements special processing for IGC-based languages, such as string handling and
compile overrides.
Note: Model value YIGCCNV is automatically set to 1 when an IGC language is loaded.
Note: If you use the YCPYMDLOBJ command to copy from the source to another model,
convert text fields needing the IGC attribute.
Bi-directional Languages
Bi-directional languages are languages from the Middle East, such as Arabic, in which
text is read from right to left and numbers are read from left to right.CA 2E allows you
to specify right-to-left cursor positioning for input-capable text fields.
This is done by setting the Field Exit option to R for the field details on device designs.
What Is DRDA?
DRDA is IBM's SAA architecture that provides access to data distributed across various
systems and platforms. DRDA provides the user, via a high-level programming language,
access to relational databases on different systems and platforms and the files that
reside on the systems. DRDA is implemented using SQL/400 and the SQL CONNECT
statement. Used with embedded or interactive SQL, the CONNECT statement defines
the relational database (machine) to be accessed.
Note: While DRDA is implemented using SQL statements, these statements can also
operate on DDS access paths, with the exception of Span access paths. To use DRDA
with a DDS file only requires that the function be set to generate SQL. This permits most
functions to use DDS access, while only those that require DRDA functionality will be
generated as SQL COBOL or SQL RPG.
DRDA support at the Remote Unit of Work (RUOW) level is available with i OS Version 2
Release. This phase of IBM support allows for connecting an application requester (the
system executing the program) to an application server (the system where data is being
accessed).
As supported in CA 2E, DRDA allows the user to specify that a file is distributed and
allows CA 2E functions to access the distributed data. DRDA has the constraints applied
to the DRDA level of RUOW implemented under i OS Version 2 Release 1.1. The
application accesses data on a single machine at a time. At present, support for DRDA is
provided for DB2 and i OS platforms.
RUOW restrictions and constraints should be reduced as IBM releases the two higher
levels of DRDA, Distributed Unit of Work (DUOW) (i OS Version 3 Release 1) and
Distributed Request (DR).
Only one LUOW can be active for each job, restricting the application requester to
making contact with one system at a time. However, within the program it is possible
for the application requester to contact several different application servers. The
program controls commit and rollback, and you must make provisions for them at the
program level.
Note: Since the RUOW applies at the job level (routing step), any changes of RDBs
within any program will change the RDB of the whole job stack.
Distributed Unit of Work (DUOW) permits the same capability and functionality as
RUOW, but allows the system connections to take place on an implicit basis. In other
words, the SQL CONNECT statement is not required. The program still controls commit
and rollback, and you must still make provisions for them at the program level.
Distributed Request
For Distributed Request:
■ This level of DRDA has the highest degree of transparency. Users or applications
can, within a single unit of work, read and update data on multiple systems. Each
SQL statement can access multiple systems.
■ Multiple requests per unit of work are allowed.
■ There can be more than one RDBMS per request.
■ There can be several RDBMS’s per unit of work.
■ There can be several unit of work managers.
■ One of the unit of work managers coordinates commit/rollback.
Using a Distributed Request (DR), you will be able to access multiple RDBMS’s at the
same time. The systems update the files. A DR allows the user to perceive all files across
all systems as being part of one unified database.
CA 2E Implementation of DRDA
CA 2E's DRDA support makes it possible for you to generate applications that access files
distributed over many systems. CA 2E functions can be created with distributed file I/O
control set to CA 2E. With this option, the relational databases accessed by the function
are controlled by a distributed file configuration table that you can maintain.
The use of a table to control access permits changes to the relational database (RDB)
configuration without the need to change application code. This means that you can put
the same program objects on several IBM i distributions, with different configuration
tables on each one.
Shipped Defaults
In keeping with CA 2E's implementation independent design capabilities, you do not
have to modify the design of a function to use DRDA. To generate a DRDA application
from an existing design, you set generation options and regenerate the functions, but
the design remains the same.
CA 2E ships the default values for the new model values, file options, and function
options. You explicitly set DRDA functionality. If you do not specify distributed
processing functionality for your model, DRDA functionality does not affect it.
By setting certain flags, you can choose how you wish to generate and implement your
distributed applications. The shipped defaults for the options that drive CA 2E
distributed function creation are:
■ New model values:
■ YGENRDB (*NONE - no DRDA compilation enabled)
■ YDSTFIO (*NONE - no generation of distributed functionality)
■ Distributed flag: Distributed - N (No); flag for each CA 2E file in the model
■ Function option: Distributed File I/O control - M (MDLVAL); YDSTFIO model value
Creation (compilation) of the program is via an extended form of CRTSQLxxx (where xxx
= HLL language). Use the YGENRDB model value as the RDB in the CRTSQLxxx command.
By changing the Distributed File Configuration Table, you can modify the collection and
relational database names easily, without having to generate or compile the
applications again. However, you do need a distributed machine to fully test the
distributed data functions of the generated code.
If the Distributed File I/O Control function option is M (MDLVAL) for a function, that
function inherits the value set for YDSTFIO. Set this option from the Edit Function
Options panel.
The model value YGENRDB (Generation RDB Name) is the RDB name used in the i OS
CRTSQLxxx command for compiling the CA 2E-generated distributed function. The RDB
name indicates the RDB to which the SQL package will be distributed. The RDB name
should be the name of the local RDB as defined in the IBM i RDB directory. If the name is
not the local RDB, the SQL package is created as part of the compile, and the IBM i will
try to move the package to the RDB specified in the CRTSQLxxx command, unless
communications limitations prevent it from doing so.
If you use the shipped default value *NONE for YGENRDB, the model is not enabled to
compile DRDA applications. Even though code may be generated that contains
distributed functionality, there is no RDB to compile against. You must specify an RDB to
compile DRDA applications.
Distributed Flag
A new field, Distributed, on the Edit File Details panel, allows you to flag a CA 2E file as
distributed. The field can have the following values:
■ N—No. Default.
■ Y—Yes.
This flag affects the creation of the Distributed File Configuration Table. Entries for
access paths built over CA 2E files are either added (Y) or removed (N) from the table. To
do this, execute the Convert Distributed Files to Configuration (YCVTDSTFIL) command.
The entries in the Distributed File Configuration Table can then be modified using the
Work with Distributed Files (YWRKDSTFIL) command.
Note: If you generate a program with DRDA-distributed code but compile it using the
model value YGENRDB set to *NONE, the program compiles. However, at execution the
program will be unable to perform the connects. Appropriate error messages will be
issued. You can override the YGENRDB value for a specific program by using a compiler
override to specify a different value for the RDB keyword on the i OS commands, Create
SQL RPG/400 Program (CRTSQLRPG) and Create SQL COBOL/400 Program (CRTSQLCBL).
For functions to be distributed with S (CA 2E) for Distributed File I/O Control, the default
action diagram of those functions will show the availability of the *Change RDB function
and, depending on the function type, the *Previous page function. For example:
Function Options
This section outlines how to use the Distributed I/O option.
When a function uses the S (CA 2E) Distributed I/O option, initial connections to the
primary view of the function will use the configuration table entries specified in the
configuration table for that primary view.
Since the scope of a connect affects all files and programs in the current routing step,
modifying the RDB for the main file may affect any underlying processing to other
database files within the master function and to any other functions called from that
master function.
All functions generated under S (CA 2E) control enable function key F22 for their device
designs. The default value of this key is stored in a *Change RDB command key list, and
can be modified in the model. Function key F22 calls the shipped CA 2E program
Y2CRDBR (Change RDB), which appears in a window. The program displays all RDBs in
the configuration table for the primary view and allows application users to switch to an
RDB by merely selecting one of the entries. This program indicates to users which RDB
they are currently connected to.
For example:
These automatic connections are subject to a confirm prompt if confirm prompting has
been requested for the function. This confirm prompt appears with a message, "Confirm
Connect to Next/Previous RDB," as a request to confirm the connection, not the
changes. Any changes are lost if not previously confirmed by the end user.
End users can respond N to the confirm prompt to return without connecting, and press
Enter to confirm any changes they may have made.
The subfile functions, EDTTRN and DSPTRN, do not have the roll functionality. This is
because they have an inherent key screen concept similar to the EDTRCD and DSPRCD
functions. Further, an EDTTRN function has infinite roll forwards, as you can add records
at the end of an EDTTRN function. A DSPTRN function, while having a defined roll
boundary, currently has rolling controlled by i OS, because the whole subfile is built
before it is displayed.
Note: All functions with panels, including EDTTRN and DSPTRN, have the F22-Change
RDB function under CA 2E Distributed file I/O control.
With U (User) control, connects are still generated. The application user can modify the
RDB by placing values in the PGM.*Next RDB parameter, but there is no F22 support,
nor is there any rollup/rolldown support for functions with subfiles. Users receive a
message to let them know the connection failed.
Functions such as PRTFIL and EXCEXTFUN, which have no panels, can only be specified
as having User Distributed I/O control. Specifying S (CA 2E) control is accepted but
ignored and U (User) control is used.
Referential Integrity
Due to an RUOW constraint,CA 2E does not generate CONNECT statements prior to
referential integrity checks and therefore validates relations on the RDB to which the
user is currently connected. The i OS is unable to switch connections to another RDB in
the middle of an SQL FETCH routine. This is fully consistent with the RUOW assumptions
that each RUOW is constrained to a single RDB. If a user attempts to switch to another
RDB in the middle of a SQL FETCH loop, DRDA closes all cursors and the application fails.
The YCVTDSTFIL command creates the physical file and logical files required for the
Distributed File Configuration Table if they do not already exist in the named generation
library. It uses the i OS Create Duplicate Object (CRTDUPOBJ) command and copies the
template objects from Y2SY.
The YCVTDSTFIL command can be run outside of the model. To access the Display
Convert Model Data Menu from the Display Services Menu, select the option Convert
condition values to database file. From the Display Convert Model Data Menu, you can
select the option to run the YCVTDSTFIL command.
Note: The YWRKDSTFIL command operates outside the model environment. Security for
this command, and associated functions and objects, are your responsibility.
You can copy the functions shipped with *Distributed File and *Configuration Table files
and make modifications to the copied versions as required. You can also create
functions and customize them to your own standards and requirements. You may even
want to create an NLS version of the editors by generating NLS applications in CA 2E.
The YCVTDSTFIL and YWRKDSTFIL commands and the shipped RDB loader (Y2LRDBR,
Load RDBs for View) use the access paths described in the model built over the
*Distributed File and *Configuration Table files. Any changes that impact these access
paths may cause these functions to behave incorrectly. The source for Y2LRDBR and the
associated display file is shipped in Y2SYSRC.
Note: CA does not recommend adding any fields to either the shipped *Distributed File
or *Configuration Table files, nor directly modifying the system functions and access
paths.
To begin to use the shipped configuration table editor, generate and compile the
following:
■ *Distributed File Access Paths:
■ Physical file—Y2DSTFP
■ Update index—Y2DSTFL0
■ Retrieval index—Y2DSTFL1
■ *DSTFNM/*TYPE/*TABVIEWNM—Y2DSTFL2
■ Dist. File - Config Tbl—Y2DSTFL3255
■ Functions:
■ Work With Config Table—Y2CFGTR
■ Work With Dist. File—Y2DSTFR
■ *Configuration Table Access Paths:
■ Physical file—Y2CFGTP
■ Update index—Y2CFGTL0
■ Retrieval index—Y2CFGTL1
■ *TABVIEWNM/*SEQ/*RDBNM—Y2CFGTL2
Once you generate and compile these objects, run the YCVTCNDVAL (Convert Condition
Values) command, then the YCVTMDLMSG (Convert Model Messages) command for
your model.
You can then use the YWRKDSTFIL command to invoke the configuration table editor.
This command displays a list of the access paths enabled for distribution. These entries
are created with the YCVTDSTFIL command and displayed on the Work With Distributed
Files panel. On this panel, files are identified as tables or views. A table in SQL is
equivalent to a physical file, and a view is similar to a logical file.
You can work with the tables and/or views from this panel. You may wish to define the
distributed nature of data at the table level (physical file) or to differentiate the
distribution of that at the view (logical file) level.
While you are not required to do so for DRDA support, you can reference the access
paths by any valid CA 2E functions.
Note: You cannot remove any of the distributed file table entries, except by running the
YCVTDSTFIL command.
RDB Name
You can add or remove RDB locations for a table. Each RDB name must be unique for a
table, regardless of sequence number. You can only add a new RDB for a table. Once
you add an RDB, it is propagated to all the views based on the table.
Once you remove an RDB, it is removed from all the views associated with that table.
This ensures referential integrity in the configuration table database.
Note: You can only add RDBs directly for views if the RDB exists as an entry for the
corresponding table. This prevents any view from being specified on an RDB when its
corresponding table is not specified.
Once you add an RDB entry, modifying it at the table level will not cause the views to be
updated, as you may have customized certain views.
Seq
The Sequence Number (Seq) on the Work with Configuration Table Entries panel
indicates the order in which to process the locations for that particular access path.
Collection
The Collection is optional and serves as a reference. Its presence is compatible with
expected enhancements in i OS DRDA support.
You can only create RDBs for views already present as RDBs for the corresponding
tables. You can remove any RDBs on which the view may not reside. You can also alter
the sequence of access for the view.
This appendix also lists the Toolkit objects required to display Help text (Display Help,
YDSPHLP) and menus (Go to Menu, YGO).
Required CA 2E Objects
This topic covers:
■ Required Objects for RPG Compilation
■ Required Objects for COBOL Compilation
■ Required Objects for Execution
Solution: Enter the device design to correct this problem. You can use F4 to move to the
right and look for labels or fields exceeding the device size. The size depends on the
header options.
One easily missed area is the function key text lines and subfile selection prompt and
text. These fields are 78 characters long and should begin at the left margin. To correct
the problem:
1. Press F17 and zoom into the Subfile Control format.
2. Zoom into each *SFLSEL field, and make the Spaces before equal to 1.
Solution: Use the Find Error facility in the action diagram editor, or follow these steps:
1. Scan through the generated source to find the comment line containing !!!.
2. From the Submit Model Generation & Creates panel, invoke the source editor,
STRSEU, by placing E in front of the program object in error.
3. To find the incomplete action diagram statement, at the SEU positioner line, enter
the search string !!! and press Enter.
4. Return to the action diagram for the function to correct or remove the incomplete
statement.
Solution: Use the Find Error facility in the action diagram editor, or find the errors by
looking for ??? in the source listing. You can roll backward to identify both the function
that is called and the user point in which the function is located.
When you revisit the parameters for a statement or a function, always prompt the field
and reselect the values.CA 2E does not automatically perform the validation on the
statement shown if you do not make a change to the displayed parameter values.
Use selection option 8 from the Edit Model Object List panel to view the model object
description for an object. A standard set of information is displayed for each model
object type; for example, name, type, surrogate, and so on. Additional information
displayed depends on the model object type as shown in the following table:
Object Type Information Displayed Examples
ACP Attribute PHY, RTV, UPD
Source Member Name and description
Source Details Date/time of last successful
generatio
Auxiliaries Implementation object name
and description
APP Application Area Code Three-character name
ARR – –
■
Field Meaning
FunctiModel object surrogate number A number that uniquely identifies an
(OBJSGT) object in a model; it is assigned
automatically when the model object is
created. CA 2E uses the object surrogate
to identify objects internally. You can use
the surrogate on model object list
commands as an alternate to the
owner/name/type identifier.
Object name (OBJNAM) Descriptive name of the model object
assigned by the developer. This is the
name part of the object's
owner/name/type identifier.
The model object's type; for example, ACP
Object type (OBJTYP) for access path. Possible values are:
■ ACP
■ APP
■ ARR
■ CND
■ FIL
■ FLD
■ FUN
■ MSG
This is the type part of the object's
owner/name/type identifier.
Field Meaning
The model object's subtype; the value
Object attribute (OBJATR) depends on the object type. For example,
for an object of type ACP, RTV means
Retrieval access path. This field is blank for
APP and ARR object types.
The model object surrogate for the owner
Surrogate of the owning object of the model object; for example, for an
(OWNSGT) access path or function, this is the
surrogate of the owning file (FIL). Not all
objects have owners.
Name of owner of object (OWNNAM) Descriptive name of the owner of the
model object. This is the owner part of the
object's owner/name/type identifier.
The type of function for model objects of
Function type (FUNTYP) type FUN; for example, DSPFIL for Display
file and RTVOBJ for Retrieve object.
The implementation or 3GL name for the
Implementation name (IMPNME) model object. The value depends on the
object type; it is blank for ARR and CND.
■ ACP—Source member name
■ APP—Application area code
■ FIL—Format prefix
■ FLD—DDS name
■ FUN—Program source member name
or blank
■ MSG—Message ID
Copy name (CPYNME) The Object name of the corresponding
model object in a target model. It is used
by the YCPYMDLOBJ command when
copying model objects between models.
For new objects, the Copy name is initially
the same as the Object name; for new
versions (FUN or MSG), the Copy name is
initially the same as that used by the
version group to which it belongs.
Creation date and time The date and time the model object was
(CRTDTE/CRTTME) created.
Field Meaning
Change date and time The date and time the model object was
(CHGDTE/CHGTME) last edited. CA 2E updates this field
automatically. It is not updated when:
■ The model object is accessed as if to
edit, but no changes are actually
made.
■ The model object has been copied
from another model or model object
and has not been changed since
copying.
User profile of developer that The name of the user profile that last
changed the object (CHGUSR) updated the model object.
The type of the most recent change to the
Change type (CHGTYP) model object. It is used by component
change processing to identify other
objects in the model affected by the
change. The possible values are:
■ PUB—Public
■ PVT—Private
■ GEN—Regenerate
■ OBJ—Object only
Impact processed indicator (IPCPRC) This field indicates whether component
change processing has been run for the
last change to the model object. It is set
by component change processing.
Component changed processing date The meaning of this field depends on
and time (COMPDTE/COMPTME) whether the model object itself or a
component of the model object was
changed.
■ For a changed object, this is the same
as its Change date and time.
■ For an object that uses a changed
object (a component changed), this is
the date and time component change
processing was run for the change.
Field Meaning
Field Meaning
Archive surrogate number (ARCSGT) The model object surrogate of the archive
object that this object replaced when it
was promoted. This field contains a value
only for archive versions. This field is used
only for Advantage 2E CM.
Check out date and time (CHKDTE/ The date and time the model object was
CHKTME) last checked out for a change. This field
contains a value only if you are using
Advantage 2E CM.
The name of the user profile that checked
Check out user (CHKUSR) out the model object for a change. This
field contains a value only if you are using
Advantage 2E CM.
For more information on component change processing, refer to the Impact Analysis
section of the “Managing Model Objects” chapter in this guide.
The tables in this appendix list the possible changes that can be made to each model
object type and the default change type for each change. There is a separate table for
each supported model object type. Each entry in each table corresponds to a position
on a CA 2E panel where you can change a model object.
In cases where these tables cannot be used to determine the change type, the Override
column in the table explicitly specifies the change type. A change type of *CREATE or
*DELETE in the Override column are special cases of *PUBLIC. As a result, they do not
require component change processing because there are no using objects.
Field *GEN
Condition *GEN
Edit Access Path Details Access path name *OBJONLY
Allow select/omit *GEN
Generation mode *PRIVATE
Ascending/descending *GEN
Type *PRIVATE
Length *PRIVATE
Edit Access Path Relations Add/remove relations *PUBLIC
CA2E--Arrays-ARR
Panel Change Change Type Override
Edit Array New array details *CREATE
Delete Array Delete array *DELETE
Edit Array Details Number of elements *PRIVATE
Sequence *PRIVATE
Unique *PRIVATE
File/field *PRIVATE
Access path/field *PRIVATE
Sequence *PRIVATE
Array name *OBJONLY
Edit Array Entries '+' Select field *PRIVATE
'-' Drop field *PRIVATE
Edit Array Key Entries Key number *PRIVATE
CA 2E--Conditions - CND
Panel Change Change Type Override
Display Field Domain Delete condition *DELETE
Conditions
Edit Field Condition Details Create condition *CREATE
Condition name *OBJONLY
Relational operator *PRIVATE
Internal value *PRIVATE
External value *PRIVATE
Edit List Condition Create condition *CREATE
'+' Add condition *PRIVATE
'-' Remove condition *PRIVATE
Change condition name *OBJONLY
CA 2E--Files - FIL
Panel Change Change Type Override
Define Objects New file/field
CA 2E--Fields - FLD
Panel Change Change Type Override
Edit Field Details Field name *OBJONLY
Document sequence *OBJONLY
Type *PUBLIC
Ref type *NONE
Ref field *PUBLIC
Field usage *OBJONLY
Internal length *PUBLIC
Internal decimals *PUBLIC
Data type *OBJONLY
Gen name *PUBLIC
K'bd shift *PRIVATE
Lowercase *PRIVATE
Old DDS name *OBJONLY
Text *OBJONLY
Left hand side text *OBJONLY
Right hand side text *OBJONLY
Column headings *OBJONLY
Default condition *OBJONLY
Check condition *OBJONLY
Mandatory fill *OBJONLY
Valid system name *OBJONLY
Modulus 10/11 *OBJONLY
Edit codes Screen I/P *OBJONLY
Screen O/P *OBJONLY
Report *OBJONLY
Translate condition values *OBJONLY
External Length *PUBLIC
External decimal *PUBLIC
DDS name *PUBLIC
CA 2E--Functions – FUN
Panel Change Change Type Override
Display All Functions Change access path *PRIVATE
Edit Functions Function *OBJONLY
Function type *OBJONLY
Access path *PRIVATE
Edit Function Details Function name *OBJONLY
Source name *GEN
Target HLL *GEN
Text *OBJONLY
No panel Default functions for a *CREATE
new file
Edit Screen Format Select record override *PRIVATE
Relations function
Edit Screen Constant Lines before *PRIVATE
Spaces before
Screen text
Length
CA 2E--Messages – MSG
Panel Change Change Type Override
Edit Message Function Add message *CREATE
Change message *PRIVATE
Delete message *DELETE
Copy message New message *CREATE
Edit Function Parameters File/field *PUBLIC
Access path/field *PUBLIC
Passed as *PRIVATE
Sequence *PRIVATE
Create Model Versions From & to messages *OBJONLY
For more information on component change processing, refer to the Impact Analysis
section in the “Managing Model Objects” chapter in this guide.
Change Change Using Object Type
d Object Type
Type
ACP ARR CND FIL FLD FUN MSG
Index 261
converting in multi-model environment • 183 Edit Model Object List panel • 45, 46, 47, 53, 56, 57,
converting model messages • 183 61, 62, 63, 65, 69, 70, 71, 72, 73, 74, 76, 128
Copy Model Objects (YCPYMDLOBJ) • 74 editing • 43, 47, 67
copy name • 31, 48, 124, 128 enabling applications • 181
copying • 72, 74 entries • 23, 28, 152
copying entries • 73 error routine (*PSSR) • 169
copying objects • 74 errors • 185, 186, 206, 243
creating • 44, 69, 73 example • 23, 39, 40, 41, 76, 96, 100, 114, 124, 131
creating entries • 234 exception monitoring • 168
creating for applications • 199 exception monitoring-program calls • 168
current • 124 executing • 77
current version • 124, 128 execution displays • 147
execution environment • 181, 183, 204
D execution objects • 204
data area YLNGnnnSYA (NLS) • 214 execution support programs • 150
data objects • 159 expansion • 85
date/time information • 32 external message IDs • 212
DBCS applications • 220, 221
DBCS machine to create for SBCS • 221
F
debug aids • 189 F4 prompt • 206
default • 145 features in RPG not in COBOL • 167
defined • 20, 23, 25, 83, 86, 87, 106 field condition values • 183
defining • 76 field reference file • 179
defining source file names • 145 file • 76
delete • 27, 28, 71, 136 filter • 93
deleting • 71, 136 filtering • 65
deleting entries • 71 Find Error option • 185
deleting items in converting to RPG • 173 finding compilation errors • 187
deleting model object list entries • 71 finding errors • 186
deleting model objects • 71 flag selection • 23
description • 22, 25, 28, 29, 68 for generation • 160
design objects • 20 for tables • 236
development environment • 228 for views • 237
Display Services Menu • 176, 187 from Display Services Menu • 176
displaying (YGO) • 201 function keys • 53
displaying compile listing • 187 function options • 230
Distributed File Configuration Table • 230, 234, 236, functional • 210
237 functional text • 210
distributed flag • 230 functions • 148
documentation • 210
DRDA • 223, 224, 226, 227, 228, 229, 230, 233, 234 G
DRDA objects • 235 generatable objects • 21
DSPCLS Class • 153 generate help text (YGENHLP) • 141
duplicating execution objects • 204 generated applications • 210
duplicating shipped objects • 204 generated model • 212
generation • 138, 140, 141, 143, 144, 159, 160, 162,
E 163, 164, 173, 175, 176, 179, 184, 186, 190, 197,
edit from Submit Model Generation & Creates • 165 208, 212, 235, 243
H M
header specification • 169 management • 151
help text • 208 managing • 123
Help text • 141, 208, 210, 215 many-at-a-time • 141
help text generation • 141 many-at-a-time generation • 141
HLL compatibility • 170 menu • 199, 201, 202, 203
HLL implementation • 167, 170 merging entries and commands • 56
merging entries with commands • 56
I message conversion • 183
impact analysis • 83, 84, 85, 87, 88, 89, 93, 96, 100, message file names • 147
102, 103, 104, 106, 194 message ID generation • 141
impact processed indicator • 107 message ID generation (NLS) • 141
implementation • 140, 167 message IDs (NLS) • 141
implementation objects • 21 model • 142, 170, 183
in another national language • 212 model list for commands • 35
interactive • 88 model object • 71
interactive diagram • 163 model object cross references • 85, 102
interactive generation • 163, 186 model object description • 29, 30, 37, 68
introduction • 140, 223 model object list • 27
model object list entries • 73
J model object list entry • 71
model object lists • 20, 23, 25, 27, 28, 39, 40, 41, 42,
job description • 156, 164
43, 44, 45, 47, 69, 71, 73, 77
job description for batch • 164
model object type • 86, 87
job description list • 156
model object usages • 194
job descriptions • 156
model objects • 20, 21, 22, 25, 28, 29, 39, 67, 68, 71,
job list • 72, 160, 161, 164, 165, 166, 167, 173
72, 74, 81, 84, 85, 86, 87, 123
job list commands • 72
model profile • 35, 38, 76, 110, 123, 141
job list for generation • 160
model reorganization • 142
job log • 187, 188
model values • 110, 141, 142, 229
job queue • 152, 153, 156, 159, 176
moving • 207
job queue entries • 152
moving items among queues • 176
K moving objects • 207
MSGID (NLS) • 212
keyword • 212 multi-language environments • 216
multiple lists • 166
L multi-programmer environment • 197
language-specific (NLS) • 213
language-specific object library • 213 N
language-specific objects • 213 named • 28, 69
level • 89, 96 named model object list • 69
Index 263
names • 167, 170 regenerating Help text • 215
names in recreating physical files • 197 regenerating in another language • 215
naming • 21, 25 relational database • 225
narrative text • 210 Relational Database Management System • 224
navigation • 61 Remote Unit of Work (RUOW) • 224
NLS • 141, 212, 213, 214, 215, 216, 220, 222 reorganization • 142
non-current • 133 reorganizing • 167
numeric parameter passing • 168 repeating selection options • 53, 57, 70, 74
requesting • 175
O requesting generation • 176
object only • 83 required action indicator • 115, 117
objects • 194, 207, 208, 213, 239 required for compile/execute • 239
on *ALLOBJ • 128 resetting severity level • 188
on SBCS machine • 221 retaining data when recreating • 197
one per developer • 165 return code • 203
operational • 210 reviewing/changing entries • 156
operational narrative text • 210 routing entries • 153
operational text • 210 RPG conversion to COBOL • 171
output queue • 188 RPG features not in COBOL • 168, 169
output queue for jobs • 188 running • 113
overview • 16, 23, 29, 45, 106, 123
S
P sample • 161
performance considerations • 140, 141, 142 selecting • 47
PGM fields • 233 selecting a list • 47
physical file • 197 separate compile queue • 159
positioning • 63 separate gen queue • 159
preparations • 143 separate gen/compile queues • 159
preparing to generate • 145, 147 session list • 25, 26
private • 83, 115 setting up color • 202
program call exception monitoring • 168 setup • 164
program execution • 203 shipped application objects • 204
public • 83, 117 shipped defaults • 226
shipped files • 149, 150
Q simulating • 104, 109
simulating a change • 104, 113
QBATCH subsystem • 153
source and object libraries • 141
QBATCH2 • 156
source banner • 146
QBATCH2 job queue • 156
source code comments generation • 142
QCMD environment • 153
source file name defaults • 145
QIGC system value • 221
source file names • 145
R SQL • 223, 227
stage flag • 160
RDB • 225 standard source banner • 146
RDBMS • 224 status • 160
recreating physical files • 197 storing • 27
redirection • 131, 133, 134 subfile select options • 47, 53, 73, 76
references • 87, 100
referential integrity • 233
W
where used • 194, 195
work environment • 151, 152, 153, 156, 159
Index 265