/*-------------------------------------------------------------------+
|                                                                    |
|                Copyright (c) 1996, SAS Institute Inc.              |
|                  Unpublished - All Rights Reserved                 |
|                      S A S / C   S A M P L E                       |
|         NAME: racf header file                                     |
|     LANGUAGE: C                                                    |
|      PURPOSE: Contains #define statements , pointer and structure  |
|               declarations for various MVS RACF parameter lists.   |
|                                                                    |
|         MISC: See sasc.sample.c(tryracf)                           |
+-------------------------------------------------------------------*/
                                     /* System Authorization Facility*/
struct SAFP {                        /* Router Parameter List        */
   int   prret;                      /* return code                  */
   int   prrea;                      /* reason code                  */
   short ppln;                       /* safp parm list length        */
   short rsvrd1;                     /* reserved                     */
   short preqt;                      /* request type (racheck)       */
   short rsvrd2;                     /* reserved                     */
   void  *preqr;                     /* request name address         */
   void  *psubs;                     /* subsystem name address       */
   void  *pwa;                       /* pointer to 512-byte work area*/
   int   rsvrd3;                     /* reserved                     */
   int   rsvrd4;                     /* reserved                     */
   int   pracp;                      /* offset to RACF parm list     */
};
#define SAFPAU 1                     /* racheck - authorize function */

                                     /* RACROUTE REQUEST=AUTH        */
struct ACHKLIST {                    /* parameter list               */
   char  leng;                       /* parm list length             */
   char  inst[3];                    /* installation data address    */
   char  flg1;                       /* first flag byte              */
   char  ent[3];                     /* entity name address          */
   char  flg2;                       /* second flag byte             */
   char  cln[3];                     /* classs name address          */
   void  *volw;                      /* volser address word          */
   void  *ovol;                      /* old volser address           */
   void  *appl;                      /* appl name address            */
   void  *acee;                      /* ACEE address                 */
   void  *ownr;                      /* owner address                */
   void  *in31;                      /* 31-bit installation data addr*/
   void  *entx;                      /* entityx name address         */
   void  *cl31;                      /* class name address           */
   void  *vs31;                      /* volser address               */
   void  *acc;                       /* access value address         */
   void  *acc2;                      /* second access address        */
};
#define ACHK31IN 0x08                /* 31-bit address list flag     */
#define ACHKTALT 0x80                /* attr=alter                   */
#define ACHKTCTL 0x08                /* attr=control                 */
#define ACHKTUPD 0x04                /* attr=update                  */
#define ACHKTRD  0x02                /* attr=read                    */