www.sas.com > Service and Support > Technical Support
 
Technical Support SAS - The power to know(tm)
  TS Home | Intro to Services | News and Info | Contact TS | Site Map | FAQ | Feedback


/*---------------------------------------------------------------------+
|               Copyright (c) 1995, SAS Institute Inc.                 |
|                 Unpublished - All Rights Reserved                    |
|                      S A S / C   S A M P L E                         |
|                                                                      |
|                                                                      |
|         NAME: SASCSAMP                                               |
|     LANGUAGE: C (CICS)                                               |
|      PURPOSE: Sample program used in the tutorial chapter of the     |
|                 SAS/C CICS User's Guide.  The program produces a     |
|                 list of all the SAS/C CICS transient programs that   |
|                 begin with the string "lsh".                         |
|   MVS -                                                              |
|      PREPROCESS, COMPILE, LINK: Submit prefix.SAMPLE.AUX(LCCCPCL)    |
|                 where "prefix" is the installation defined           |
|                 high-level qualifier for the SAS/C product.          |
|      EXECUTE: Execute as a transaction from CICS.  See the "CICS and |
|                 the Sample Program" and "Running the Example under   |
|                 CICS" sections of the tutorial chapter of the SAS/C  |
|                 CICS User's Guide for additional information.        |
|   TSO -                                                              |
|   PREPROCESS: LCCCP CLIST                                            |
|      COMPILE: LC370 CLIST using the RENT option.                     |
|         LINK: CLK370B CLIST using the CICS and RENT options.         |
|      EXECUTE: see EXECUTE under MVS above                            |
|   CMS -                                                              |
|   PREPROCESS: LCCCP EXEC                                             |
|      COMPILE: LC370 EXEC using the RENT option.                      |
|        CLINK: CLINK EXEC using the CICS option; resulting object code|
|                 must be ported to an MVS operating system for final  |
|                 link-editing with the CICS Execution Interface stub  |
|                 routines.                                            |
|         LINK: Use the LCCCXXL cataloged procedure using the NOCLINK  |
|                 and RENT options.  Input must be specified via the   |
|                 SYSLIN DD statement, not the SYSIN DD statement.     |
|      EXECUTE: see EXECUTE under MVS above                            |
|                                                                      |
+---------------------------------------------------------------------*/


 /*-------------------------------------------------*/
 /* 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>
char  msg [80] ;
short msglen;
void 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] ;
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;
}

void errhndlr(int errcode)         /* Something has gone wrong. Send */
{                                  /* a message to give a clue why.  */
 char savefn [2] ;                 /* Where to save EIBFN.           */
 memcpy(savefn, _eibptr->EIBFN, 2);

 EXEC CICS HANDLE CONDITION ERROR; /* Make sure we don't recurse.    */
 EXEC CICS PURGE MESSAGE;          /* Purge any partial messages.    */

 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);
}

Copyright (c) 2000 SAS Institute Inc. All Rights Reserved.
Terms of Use & Legal Information | Privacy Statement