Chapter Contents |
Previous |
Next |
Tutorial: Creating a Simple Transaction |
/*- - - - - - - - - - - - - - - - - - - - - - + | | | S A S / C S A M P L E | | | | NAME: SASCSAMP | | PURPOSE: Sample program used in CICS | | Tutorial chapter | | INSTALLATION: Follow the instructions in | | the Tutorial chapter of the | | SAS/C CICS User's Guide. | | COMPILE: | | EXECUTE: | | USAGE: | | SYSTAEM NOTES: | | | + - - - - - - - - - - - - - - - - - - - - - */ /*- - - - - - - - - - - - - - - - - - - */ /* This sample program produces a list */ /* of all the CICS programs that begin */ /* with the string "lsh". */ #pragma options xopts(xref) #include <string.h> #include <stdio.h> #include <stdlib.h> main() { int next_resp = 0; char header [ ] = "This is a list of SAS/C transient programs\n"; short hdrlen = sizeof(header) - 1; char pgmname [8]; extern char msg [80]; extern short msglen; void errhndlr(); EXEC CICS HANDLE CONDITION ERROR(errhndlr); EXEC CICS SEND TEXT FROM(header) LENGTH(hdrlen) ACCUM PAGING; EXEC CICS INQUIRE PROGRAM START; while(next_resp == 0){ EXEC CICS INQUIRE PROGRAM(pgmname) NEXT RESP(next_resp); if (memcmp(pgmname, "LSH", 3)) continue; msglen = sprintf(msg, " %.8s\n", pgmname); EXEC CICS SEND TEXT FROM(msg) LENGTH(msglen) ACCUM PAGING; } EXEC CICS INQUIRE PROGRAM END; EXEC CICS SEND PAGE; } /* Something has gone wrong.*/ /* Send a message to give a clue why. */ void errhndlr(int errcode) { char savefn [2]; /* area for saving EIBFN */ memcpy(savefn, _eibptr->EIBFN, 2); /* Make sure there's no recursion. */ EXEC CICS HANDLE CONDITION ERROR; /* Purge any partial messages. */ EXEC CICS PURGE MESSAGE; msglen = sprintf(msg, "CICS Function %02x%02x received error code %d", savefn[0], savefn[1], errcode); EXEC CICS SEND TEXT FROM(msg) LENGTH(msglen) ERASE; exit(-1); }
If you are familiar with other application languages under CICS, you'll
notice after looking over this code that C function names are given as arguments
to EXEC command options instead of as program labels. For example, in the
following code,
errhndlr
refers to a SAS/C error-handling
function:
EXEC CICS HANDLE CONDITION ERROR(errhndlr);
For more details on this and other SAS/C coding
conventions see CICS Command Coding Conventions.
The program also provides an example of including options by using
#pragma options
.
The
main
function defines variables for the output heading, program name,
and message, as well as a prototype for the error-handling routine.
CICS commands are then used to do the following:
The error-handling function
errhndlr()
is used to catch processing errors and
print a message instead of relying on default CICS processing. See Using C for CICS Application Programs for more
details on handling error conditions.
Chapter Contents |
Previous |
Next |
Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.