/*-------------------------------------------------------------------+
|                                                                    |
|                Copyright (c) 1996, SAS Institute Inc.              |
|                  Unpublished - All Rights Reserved                 |
|                      S A S / C   S A M P L E                       |
|         Name: PDSMEMH                                              |
|     Language: C                                                    |
|      Purpose: Various global defines and function prototypes for   |
|               public functions.                                    |
|                                                                    |
|   For Sample: prefix.SAMPLE.C(P2UPM)                               |
|                                                                    |
+-------------------------------------------------------------------*/
/*--------------------------------------------------------------------+
| Common #defines                                                     |
+--------------------------------------------------------------------*/
#define DDN_SYSPUNCH "SYSPUNCH"       /* DDname: Output              */
#define DDN_SYSLIB   "SYSLIB  "       /* DDname: Input               */
#define ANOMALY       4               /* Indicates orphaned alias    */
                                      /* members exist or an empty   */
                                      /* real member was found       */
#define MAX_MEMBER_NAME  8
#define REALMEMB         "\xff\xff\xff\xff\xff\xff\xff\xff"
#define EQUAL            0
#define TRUE             1
#define FALSE            0

/*--------------------------------------------------------------------+
| Prototype:  pdsgetm() - reads PDS directory and constructs skiplist |
|             of members, input from DDN SYSLIB.                      |
+--------------------------------------------------------------------*/
 int pdsgetm (
              NODE * (*),         /* real member skiplist            */
              NODE * (*)          /* alias member skiplist           */
             );

/*--------------------------------------------------------------------+
| Prototype: public functions used to create and maintain skiplist    |
+--------------------------------------------------------------------*/
extern int    freelist     ( NODE * );

extern NODE * newlist      ( void );

extern NODE * insert_node  ( int (*)(), /* Ptr to compare function   */
                            NODE *,     /* SkipList head node        */
                            PDS_MBR *   /* PDS data to be inserted   */
                           );

extern NODE * search_node  ( int (*)(), /* Ptr to compare function   */
                             NODE *,    /* SkipList head node        */
                             PDS_MBR *  /* PDS data to be deleted    */
                           );
extern int    delete_node  ( int (*)(), /* Ptr to compare function   */
                             NODE *,    /* SkipList head node        */
                             PDS_MBR *  /* PDS data to be searched s */
                                        /* for                       */
                           );

/*--------------------------------------------------------------------+
| Prototype: Functions used to compare nodes in skiplist.  Functions  |
|            are used by pdsgetm() and updbld().                      |
+--------------------------------------------------------------------*/
extern int compare_by_ttr ( PDS_MBR *, PDS_MBR *);
extern int compare_by_name (PDS_MBR *, PDS_MBR *);

/*--------------------------------------------------------------------+
| Prototype: updbld() is controlling function which builds the        |
|            IEBUPDTE input file.                                     |
+--------------------------------------------------------------------*/
 int updbld  (
              NODE * (*),      /* real member skiplist            */
              NODE * (*)       /* alias member skiplist           */
             );