Application programming for function shipping

You write a program to access resources in a remote region, in much the same way as if the resources were on the local region.

The commands that you can use to access remote resources are:
  • File control commands
  • Temporary storage commands
  • Transient data commands

Interval control commands are excluded. For information about this subject, see Application programming for asynchronous processing.

Your application can run in the CICS® intercommunication environment, and use the intercommunication facilities, without being aware of the location of the resource that is being accessed. You define the resource location in the Remote SysId attribute of the appropriate CICS definition. Optionally, you can use the SYSID option on EXEC commands to select the region on which the command is to run. In this case, CICS does not reference the resource definitions on the local region unless the SYSID option names the local SYSID that is configured in the Region Definitions (RD) attribute localSysId.

When your application issues a command against a remote resource, CICS ships the request to the remote region, where a mirror transaction is initiated. The mirror transaction runs the request on your behalf, and returns any output to your application program. The mirror transaction is therefore, in effect, a remote extension of your application program.

Although the same commands are used to access local resources and remote resources, several restrictions apply when the resource is remote. For details of these restrictions, see Exceptional conditions.

Some errors that do not occur in single regions can occur when function shipping. For these reasons, you should always know whether resources that your program accesses can possibly be remote.

Long-running function shipping transactions that start multiple application servers can cause a degradation in performance when EXEC CICS SYNCPOINT is frequently used. Therefore, when coding EXEC CICS SYNCPOINT in your applications, decide the frequency with which you call it, by balancing your need for data integrity with the requirement for efficient use of machine performance.