Showing posts with label Application Engine. Show all posts
Showing posts with label Application Engine. Show all posts

Tuesday, March 26, 2013

AE Basics


PeopleSoft Application Engine is a PeopleTool used to carry out background SQL processing. Application Engines are neatly structured into blocks and offer an alternative to writing COBOL or SQR programs for background SQL processing.

Application Engine Program Types
Application Engine has five types of programs. We can specify the type in the Program Properties dialog box for your program definition. The types are:

1. Standard, which is a normal entry-point program.
2. Upgrade Only, which is used in PeopleSoft upgrade utilities.
3. Import Only, which is used by PeopleSoft import utilities.
4. Daemon Only, a type of program used as a daemon process.
5. Transform Only, a program type used to support Extensible Style sheet Language Transformations (XSLT).

Structure of an Application Engine

The key elements of an application engine program are:


Peoplesoft Application Engine Structure
Sections
A PeopleSoft App Engine can have one or more sections. Every App Engine should have at least one section called main section where the execution always start. A section can have multiple steps that get executed one after another.

Steps
Steps in an Section gets executed sequentially. Steps are the smallest unit of work that can be committed within a program. Each Step can have one or more actions.

Actions
Actions, unlike steps have a particular execution order. An Application has 9 Actions out of which two (SQL and Call Section ) are mutually exclusive. These steps are discussed in detail in the Application Engine Action article.
1. Do When
2. Do While
3. Do Until
4. Do Select
5. PeopleCode
6. SQL\
7. Call Section
8. Log Message
9. XSLT – found only in Transform Only programs

State Records
State Records are PeopleSoft records that are used to pass values from one action to another. They can be considered as storage locations for an Application engine. Find more about State records here.

Parallel Processing in Application Engines
Application Engine seamlessly supports Parallel Processing which helps faster processing when the data involved is huge. This is achieved by the use of temporary tables and %Table meta-SQL. PeopleSoft highly recommends programmers to make use of this feature.

Running an Application Engine
An application engine can be executed from the following 4 places:
1. From within Application Designer using Run Request
2. From PeopleCode using CallAppEngine()
3. From Process Scheduler
4. Manually from command prompt

Thursday, February 7, 2013

AE Disable Restart


If you get an error message like this, you either need to restart the specific instance that abended, or remove the restart row from the table.
PeopleTools 8.46 – Application Engine Server
Copyright (c) 1988-2006 PeopleSoft, Inc.
All Rights Reserved
PSAESRV started service request at 14.19.05 2006-09-19
All Processing Suspended: Restart OPRID=PS, RUNID=AppEngName, PI=499 (108,503)
PSAESRV completed service request at 14.19.05 2006-09-19
Disable Restart:
You can disable the restart on the properties of the application engine, but that will not help when the Application Engine has already abended. Remember, the disable restart prevents the app engine from writing to the restart table when the program abends; it does not prevent it from checking the table to see if another instance is waiting to restart.
In other words, once an application has abended, disable restart will not allow you to rerun the program without restarting.
AERUNCONTROL Record:
The restart status is stored in the record AERUNCONTROL. If you receive the message requiring you to restart instead of rerun, then there is a row in this table for the program you are running and the run control that you are using.
Fields:
PROCESS_INSTANCE — instance that abended
OPRID — your user name
RUN_CNTL_ID — run control used when it abended
AE_APPLID — Application Engine program name
Fixing the Error:
To fix the error, you either have to delete the row from the table or restart the original process instance that abended.
SELECT * FROM PS_AERUNCONTROL WHERE AE_APPLID = ‘<App Engine Name>
Update:
Ray pointed out that PeopleSoft has provided an online way to fix the problem. You can do it from the page: PeopleTools > Application Engine > Manage Abends
Deleting the Row:
If you are the only one with an abended program, you can just truncate the whole table:
TRUNCATE TABLE PS_AERUNCONTROL
Or, if you want to just affect your program, you can do something more like this:
DELETE FROM PS_AERUNCONTROL WHERE OPIRD = ‘<username>‘ AND RUN_CNTL_ID = ‘<run control>

AE Q&A


1)     There are different types of variables in the Application Engine people code?
Local variable – these are available for the duration of the program in which they are declared.
Global / Component – These variables are available while the Application Engine program is running. They are saved at commits and checkpoints,
So they can be used for restarts. Component variables are same as Global incase of the AE.

2) What are the Different ways pass data between the steps?
1) State records – One row can be passed and can have many state records.
2) Component/Global People code variables
3) Temporary records – Multiple rows of data can be passed.

3) What is Prerequisite for the State record?
1) Should be either Derived work record Or SQL Table.
2) Name of the record must end in AET; this is how the system identifies the record as a state record.
3) PROCESS_INSTANCE must be a key.
4) Any data types except character or numeric must not be required fields.
Note: - No People code fires on an Application Engine state record.
No Validation of translate values or Prompt tables are done.

4) How to read the runctrl parameters in AE
1) SQL: - %Select (EMPLID) Select EMPLID from PS_AERUNCONTROL where PROCESS_INSTANCE = %PROCESS_INSTANCE and ORPID = %oprid
2) People code: - &SQL = “Select EMPLID from PS_AERUNCONTROL Where PROCESS_INSTACNE =” PS_TEST_AET.PROCESS_INSTANCE “and OPRID =” %oprid.
%PROCESS_INSTANCE or %Bind (PROCESS_INSTANCE) can be used.
%PROCESS_INSTANCE is more efficient and faster.

5) How do you execute Application Engine through Push Button?
1) CreateProcessRequest(),Schedule ()
2) CallAppEngine.
6) What is the syntax for CallAppEngine?
CallAppEngine (applid [, state record]);

7) What are the 3 trace parameters you can pass to your psae.exe?
- TRACE 
- TOOLSTRACESQL 
- TOOLSTRACEPC 
8) Which Trace option is the best place to start for general performance information?
- TRACE 384 – mostly used trace value.

9) What is the difference between a Trace value and Trace parameters?
A Trace parameter determines which type of trace is turned on.
A Trace parameter determines what type of data is recorded in your trace files (s).

10) What are the 3 common ways to pass a trace parameter and value to your program psae.exe?
Configuration manager, Process Definition, Command prompt.

11) What are the Different types of Application Engine?
Standard: Standard entry-point program.
Upgrade Only: Used by PeopleSoft Upgrade utilities only.
Import Only: Used by PeopleSoft Import utilities only
Daemon Only: Use for daemon type programs.
Transform Only: Support for XSLT Transform programs.

12) How do you program AE program for the restarts?
Program Level State Record
One of the state record needs to SQL Table, Since All Derived work record will be re-initializing on commit.
Program Properties
On the Advanced tab in the program properties dialog box, make sure that disable restart is not checked.
Configuration manager
In the configuration manager, sure that Disable restart is not selected on the process scheduler tab.
Section Level
Section type
The option for section type are prepare only and critical updates
If the section is preparing data i,e select data, Populating temporary tables, or updating temporary tables then the section should be prepare only.
If the section is updating the permanent application tables in the database, you should select critical update.
Step Level
Add an order by clause
%Select Field Select Field1 from PS_SOME_RECORD Where FIELD1 > %Bind (FIELD1) Order by FIELD1.
Step level
If the step is do select then we have select restartable.

Add a switch to the selected table
Delete processed rows.

The only restriction for batch runs occurs when you have restart enabled, and you are inside a Do Select that is of the Select/Fetch type (instead of "Re-select" or "Restartable"). with select/Fetch, all commits inside the loop are ignored, including the commit frequency if it's set.

13) What is Set Processing? 
Set Processing uses SQL to process groups, or sets, of rows at one time rather than processing each row individually. With row by row processing you following a repetitive loop that selects a row, determines if it meets a given criteria, if so, apply rule x to row Update row, commit. With set processing, you only select those rows that meet the filtering criteria and then run the rule once again all the affected rows.

14) Advantages of Set Processing?
Improved Performance: - Our internal testing has revealed that, in an overwhelming majority of cases, set processing performs significantly better than it is -by-row counterpart for “reasonable” batch processing volumes.

Minimized SQL Overhead: - It tends to use fewer Application Engine SQL statements that each processed more data than the statements executed in row-by-row processing.
Easy Maintenance: - if need to make a fix or add an enhancement to SQL, it’s just a matter of modifying the SQL or inserting the new “Chunk”.
Leveraging the RDBMS: - With Set – based processing, you take advantage of the SQL processing engine on the database rather than placing the processing burden and overhead on the application executable.

15) Testing and debugging application engine?
Application Engine Trace file-You can track the step execution of your application execution.
Application Engine Interactive Debugger – First click on the trace tab and turn off the statement timings. Select Profile -> Edit Profile-> Process Scheduler Tab -> Application section Select Debug check box.

(You can dynamically modify the state record run application engine step by step
People Code Debugger for the Application Engine.)
AE Trace files: - AE__.AET
Without the process instance: - AE__.AET

1) Order and flow of action types
1) Do When
2) Do While
3) Do Select
4) Peoplecode
5) SQL
6) Call Section
7) Message Log
8) XSLT
9) Do until

2) What is Prerequisite for the Temporary record?
1) Should have process Instance as key
2) Name should end with _TAO

3) Different types of Temporary tables
- Dedicated
- Un Dedicated (Shared)

4) Why Parallel Processing required?
Potential performance improvements by splitting the data to be processed into groups and simultaneously running multiple instance of your program to deal with different groups of data.
If you have a one program that uses a temporary table and is invoked multiple times, that single temporary table could be used concurrently in multiple executions of the code. This could create unpredictable results since the different instances of the code would be issuing delete, Inserts and/or updates unsynchronized with each other.
You could solve the problem by creating multiple temporary tables as a pool of tables. Each invocation of your program would have to allocate an unused temporary table,
mark it as ‘in use’ , use it and release it back to the pool when you through with it (for each Application Engine program you write).

5) How running AE program as Batch differs from running it online?
Application Engine programs are designed for two types of execution and each has its own pool of Temporary Tables
Online: 
Invoked by CallAppEngine from People code
Run quickly, synchronously, and at random times.
Potential for simultaneous executions
Uses the online Temporary Table pool.
Not restart able.
Psae.exe randomly assigns an instance number from the number range on your online temp tables.
If the instance number is in use psae.exe puts the program in Queue until the assigned instance becomes free.
Unlock on completion, on Crash free from Manage Abends.
Batch:
Invoked through the Process Scheduler.
Run for longer amounts of time, asynchronously, and at scheduled times.
Can be designed for parallel execution for performance.
Uses the Batch/Dedicated Temporary table.
Restart able.
It allocates instance number based on the availability on a record by record basis and psae.exe begins with the lowest instance numbers. If the properties are set continue - Base table is used with Process instance as key. 
If Re-starable – Locked across Restarts until completes successfully.
If not Re-startable on Program completion.

6) What are the important steps for implementing the parallel processing?
Define you Temporary Tables.
Set the Temporary Tables Online pool.
Assign Temporary Tables to your Application Engine program in it program.
Set Temporary Table Batch Pool – Instance count in the AE.
Build / Rebuild your Temporary Table record.
Code %Table Meta – SQL as reference to Temporary Tables in your Application Engine program, so that Application Engine can table references to the assigned Temporary Table instance dynamically at runtime.

7) What happens when all the instance of the temporary table are in use?
It behavior can control by AE developer. If the runtime options are set to continue “People Tools will insert rows into the base table using the PROCESS_INSTANCE as a key”. If temp table doesn’t contain PROCESS_INSTANCE as a key field in a Temporary table, you should change the Temp table runtime options to “Abort” in the appropriate Application Engine programs.

8) How can you divide the data to be processed by different instance of the program to perform parallel program?
Run control parameters passed to each instance of the AE program enable it to identify which input rows “belong” to it, and each program instance inserts the rows from the source table into its assigned temporary table instance using %Table.

9) What are the 3 common ways to pass a trace parameter and value to your program psae.exe?
Configuration manager, Process Definition, Command prompt.

10) What is the main purpose of the Access property in the Section?
Basically they have two option, public and private if section declared as public then it be access from other program.Private we cannot call from other program.

11) Which actions are mutually exclusive and why they are mutually exclusive?
Sql and callsection.

12) Error handling or Exception handling in Application Engine ?
Step properties:-
On Error:- 
Abort – Write message to message log and terminate.
Ignore - Write message to message log and continue.
Suppress – No message will be written, but program will continue.
People code Action: - On return options can used to handle run time errors.
Abort: - Exits immediately – Not recommended.
Break:- Exits the current step and section and control returns to the calling step.
Skip Step:- The program exits the current step, and continues processing at the next step in the section. If this is the last step in the section, the calling step resumes control of the processing.
SQL Action properties:-
No Rows:- When the Sql doesn’t return any rows, you can tell what application engine program should do.
Abort: - Program terminates
Section Break: - Application Engine exits the current section immediately, and control returns to the calling step.
Continue: - The program continues processing
Skip Step: - Application Engine exits the current step immediately and moves on to the next step. When using skip step keep the following in mind:
1) Application Engine ignores the commit for the current step at runtime
2) If the current step contains only one Action, only use skip step at by-pass the commit.
13) What are different types Do Select? 
1) Select/Fetch
2) Reselect
3) Restart able

Select/Fetch: -
Opens the cursor only at the first time and retrieve rows one at loop.
Commits inside the step (commits in the Called Section) are ignored if AE is Restart enabled.
Reselect: -
It opens the cursor and closes the cursor on each iteration of the loop.
It will reselect the same row of data. 
Logic in Actions of the step should be such that it will be changing the status of the rows in the table they do select is selecting.
Commits are not ignored and will be committed in a reselect loop when the restart is enabled.
Restart able: - similar to select/Fetch but it WILL COMMIT inside the loop thus allowing the checkpoint to the PS_AERUNCONTROL table.

14)What is the maximum limitation on temporary tabel instances in AE.
99

15) what is the difference between the %SELECT and %SELECTINIT meta sql functions.
Ans %select : if any values have not selected then previous value will be there
%selectinit : if any values have not selected then previous value will reinitilate to null

16) what is the difference between exit(0),exit(1) when we are using this functions in AE
Exit (1) causes immediate termination of a PeopleCode program. Use this parameter to rollback database changes.
Exit (0) caused immediate termination of a Peoplecode Program but don’t make rollback in the database.

Tuesday, February 5, 2013

Create a new Application Engine Program


Step 1: Create a new Application Engine Program
In Application Designer, click Ctrl + N or use the File > New menu option.  This will open the “New” dialog, and you can choose Application Engine program from the list.
You new program should look like this:
Step 2: Disable Restart
This step is very important.  If you don’t disable the restart and your program crashes, you will have to go through a few extra steps before you can rerun it.
First, click on the properties button while your program is in focus (you can also use the File > Definition Properties menu):
This should bring up the Properties dialog.  Then, go to the Advanced tab.  Check the “Disable Restart” option.
Step 3: Add an Action
First, click on the “Step 1″ step to select it.  I usually click anywhere in the gray, and this should turn it black.
Next, click on the Add Action button, or you can use the Insert > Action menu.
Finally, change the type from SQL to PeopleCode.
Step 4: Save the program
At this point, you need to save before you can add PeopleCode.  You can use Ctrl + S, click on the Save icon on the toolbar, or you can use the File > Save menu.
Step 5: Enter the PeopleCode
First, open the PeopleCode program by double clicking anywhere on the gray of the PeopleCode action.  Or, you can right click on it and choose the “View PeopleCode” option.
Next, you will probably want to open a file to show output from your PeopleCode testing.  You can use this PeopleCode:
Local File &log;
&log = GetFile("c:\temp\log.txt", "W", "A", %Filepath_Absolute);
Then, you can print to that file with the writeline() method.  For now, we will just print Hello, World.
&log.WriteLine("Hello, World!");
Finally, you will probably want to close your file:
&log.Close();
Here is what it all looks like:
Make sure to save once you make these changes.
Step 6: Run the Program
Again, after you have saved, go back to the main program window where you can see the Main section, Step 1, and your new PeopleCode action.  Then, click the run icon.
In the dialog, Check the Output log to file and uncheck Run Minimized.  The output log to file allows you to see what happened.  Otherwise, the window will close before you see what happened.  The run minimized isn’t a big deal, but if the program doesn’t run minimized you see it pop up and go away better.  When the program goes away, you know it is done running.
Finally, when it is done, check the output.  If you used the paths that I did your output should be in the c:\temp directory.  You should have two files.  The first, is the main output from the program.  Check this to make sure the program ran to success:

The second is the log that your PeopleCode created.  For now, it should just say, “Hello, World”.



















Monday, February 4, 2013

AE Properties


Application Engine
             
              Application Engine is used for BATCH or ONLINE processing where you have a large (or small) amount of data that needs to be processed without user intervention.
Application Engine is the People Tool that you use to develop BATCH or ONLINE PROGRAM that are effective alternatives to COBOL or SQR programs for Performance.

An AE program is a set of SQL statements, People Code, and Program Control Actions defined in Application Designer that performs a business process.
Think of Application Engine as a tool that allows you to define a program's framework, as in its algorithm, structure, and looping constructs.
Allows you to take advantage of features such as the People Code File objects and Interlink objects, Component Interfaces, Application Messaging, and so on


AE Structure




Setting Section Properties

Market – Default is GBL. You can set this property for a particular country/region.
Platform - Select the target database platform for which this section definition is to execute.
Effective Date - To make a particular section effective-dated, enter the target date.
Effective Status - Specify whether a section is active, or enabled at runtime.
Section Type - In the case of an abnormal termination of the program, the value of this system field specifies whether you must restart the section. If a section controls a procedure that, if not run to completion, could corrupt or desynchronize your data, select Critical Updates. Otherwise, use the default value of Preparation Only.
Auto Commit - You can have no commit or you can have PeopleSoft Application Engine commit after the step successfully completes.
Public - Select to enable a section to be called from another program.







Setting Step properties


Commit –
·         Default: Select to inherit whatever commit level you specified for the section in which the step resides.
·         Later: Select to postpone the commit until a subsequent commit occurs. Here you can override the section-level commit, if it happened to be set to After Step.
·         After Step: Select if you have a commit level of None specified at the section level. This way you can override the section-level commit and commit a specific step within a section with no other commits.

Frequency-
Enabled only when a step contains one of the following actions: Do While, Do Select, or Do Until. Enter the numeric frequency with which PeopleSoft Application Engine should commit. If non-zero, PeopleSoft Application Engine commits every N iterations, and then again after the last iteration

On Error
·         Abort: The application terminates with an error message.
·         Ignore: The program continues but logs an error message.
·         Suppress:The program continues and presents no error message.

Status
Select to activate a step. If the step is currently applicable to your program (and working) you’ll probably want to keep it active.

Note: The On Error property does not apply to compile errors (for example, specifying erroneous SQL statements). It checks only for execution-type errors. If your program has a syntax error, the program terminates.





Setting Action properties

Re-Use Statement property

The ReUse Statement property is available for all SQL action types (SQL, Do When, Do While, Do Until, Do Select). You use the ReUse Statement property to optimize the SQL in your batch program. ReUse Statement converts any %BIND references to state record fields into real bind variables (:1, :2, and so on), enabling the Application Engine runtime process to compile the statement once, dedicate a cursor, and then re-execute it with new data as often as your program requires. When you are using SQL or a Do action to process a large volume of rows, one at a time, inside a fetch loop, compiling each statement that you issue can be a considerable performance issue. ReUse Statement is a way to combat potential performance decreases.
Note. You can have PeopleSoft Application Engine recompile a reused statement by using the %ClearCursor function.
When setting the ReUse Statement option, choose between these values:
Bulk Insert
When used in conjunction with statements like INSERT INTO tablename (field1, field2...) VALUES (%BIND(ref1),
%BIND(ref2), the Bulk Insert feature offers the most powerful degree of performance enhancements related to the ReUse Statement feature. This option turns on ReUse Statement, and, in addition, it holds all the data in a buffer and performs an insert only after a large volume of rows has gathered in the buffer. The number of rows allowed to gather in the buffer depends on your database platform. Storing data in the buffers is applicable only if you’ve selected Bulk Insert and the SQL is an Insert statement. For statements other than Insert, the Bulk Insert option is ignored.
No
Select this option to disable ReUse Statement. With ReUse off, the Application Engine runtime process recompiles the SQL statement every time the loop executes. By default, ReUse Statement is disabled.
Yes
Select this option to enable basic ReUse Statement functionality.
Note. The ReUse Statement property can offer significant performance gains. However, do not use it if %BIND variables are building parts of the SQL statement or are in the field list of a Select statement (this does not apply if you use the Static option in %BIND).


SQL Action
Use this action to perform the following SQL commands (Insert, Update, Delete, and Select) on multiple rows.

Note. If you intend to include multiple SQL statements within a single action, you should use the meta-SQL construct %EXECUTE
No Rows Property
In addition to the ReUse Statement property, the No Rows property is available for SQL actions. If the SQL (Insert, Update, or Delete) associated with the SQL action does not return any rows, you must specify what the Application Engine program should do.
For example, you could use this in a case where you insert into a temporary table, and then you intend to perform further operations on the inserted rows (provided that some rows meet the criteria). If the initial combination of Insert and Select statements provides no rows, you could save the program from having to reselect on the temporary table prior to executing another operation, or you could also prevent the program from performing set operations on the table when there won't be any qualifying rows.

When you set the No Rows property, you choose from the following values:
Abort
The program terminates.
Section Break
PeopleSoft Application Engine exits the current section immediately, and control returns to the calling step.
Continue
The program continues processing.
Skip Step
PeopleSoft Application Engine exits the current step immediately and moves on to the next step. Application Engine ignores the commit for the current step at runtime. If the current step contains only one action, use Skip Step only to bypass the commit.
Note. Using No Rows in conjunction with a Truncate Table operation is unreliable. Some database platforms report zero rows affected for truncations, regardless of how many rows were in the table.



Specifying DO Actions

Do When
Is similar to IF condition. The following actions in the step is executed if the select statement in the Do When returns a row.
The only property that you can specify for the Do When action is the ReUse Statement property, which applies to all SQL-based actions.

Do While
Subsequent actions within the step are executed in a loop as long as at least one row is returned by the Select statement for the Do While action. If the Do While does not return any rows, the step is complete.
The only property that you can specify for the Do While action is the ReUse Statement property, which applies to all SQL-based actions.

Do Until
Subsequent actions within the step are executed in a loop as long as no rows are returned by the Select statement for the Do While action. If the Do While returns any rows, the step is complete.
The only property that you can specify for the Do While action is the ReUse Statement property, which applies to all SQL-based actions.

Do Select
The Do Select action is a Select statement that executes subsequent actions once for every row of data that the Do Select returns. For instance, a Do Select can execute a SQL statement for each row returned from the Select statement.
Like the other Do actions, for the Do Select action you can specify the ReUse Statement property, which applies to all SQL-based actions. In addition to the ReUse Statement property, you must also specify another Do Select property: Do Select Type.


Do Select Type Property
1.     Select/Fetch
PeopleSoft Application Engine opens a cursor for the Do Select action, then, within that cursor, PeopleSoft Application Engine performs a Fetch statement for each iteration of the loop to get each row from the Select statement. When a Fetch statement results in an end of table message, the looping is complete. You can’t restart this type of Select statement, because PeopleSoft Application Engine does not perform a checkpoint or a commit within the step containing this action while Select/Fetch is running. Ultimately, your program ignores the commit settings at runtime until the outermost Select/Fetch completes.

2.     Re-Select
For each iteration of the loop, PeopleSoft Application Engine opens a cursor and fetches the first row. Your program processes the first row returned from the Select statement. The cursor is reopened for each iteration of the loop. With this type of Fetch statement, you typically want some aspect of the loop to eventually cause the Select statement to return no rows. Otherwise, there is no mechanism in place by which to exit the loop. This type of Do Select is restartable.

3.     Restartable
This option is similar to Select/Fetch in that PeopleSoft Application Engine opens the cursor associated with the Do Select action once, and then it performs a Fetch statement on each iteration of the loop to get each row from the Select statement. However, unlike the Select/Fetch option, you can restart this action, because PeopleSoft Application Engine performs a checkpoint in the middle of the step. PeopleSoft Application Engine treats this loop as if it is restartable, but it does not manage the restart. Make sure that the SQL you include within this action is such that, upon restart, the program recognizes where the previous run failed and where to restart processing. For example, you can employing a processed switch, or base the next Select statement on the key.


Specifying People code actions
With a PeopleCode action, there is only one property that you can specify—On Return. The On Return setting takes effect if your PeopleCode program issues a “return 1” or “exit 1.”
When you specify the On Return property, you choose from the following values:
4.     Abort
The program issues an error and exits immediately.

5.     Break
The program exits the current step and section, and control returns to the calling step.

6.     Skip Step
The program exits the current step, and continues processing at the next step in the section. If this is the last step in the section, the calling step resumes control of the processing.


Specifying Call section actions
Use the Call Section action to call another section defined in an Application Engine program. You can call a local section defined within your current program, and you can make external calls to a section defined in another Application Engine program.
The external section you intend to call must have its access property set to Public. If a section’s access property is set to Private, which section can be called only from within the same program.

Program ID Property
Because you can call sections defined in the current program or within external programs, you must first specify the program ID of the program containing the section you intend to call.

Section Name Property
Select from names defined in the program that appears in the Program ID list box.

Dynamic Property
Use the AE_APPLID and AE_SECTION fields in the state record to execute different sections depending on the conditions a program encounters during runtime.
These two fields must be defined on the default state record for the program


Specifying Call section actions
Use this type of action to write a message to the message log.


Message Set and Number
Select the message defined in the message catalog.

Parameters
Enter values to insert in the log message. This field should be a comma-delimited list of values to substitute for the message variables (%1, %2, and so on) in the message text. These parameters can be hard-coded values or %Bind references.