/*-------------------------------------------------------------------+
| |
| 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: Maps node structure used to maintiain a skiplist of |
| directory entries. |
| |
| For Sample: prefix.SAMPLE.C(P2UREAD,P2UPM,UPDBLD,P2UPSK) |
| |
+-------------------------------------------------------------------*/
#ifndef __P2UPNODE__
#define __P2UPNODE__
/*--------------------------------------------------------------------+
| Alias Entry Data Node |
+--------------------------------------------------------------------*/
typedef struct ALIAS_DATA
{
char member(|8+1|); /* member name in PDS, padded with */
/* blanks on the right */
struct ALIAS_DATA *
next_alias; /* pointer to next alias member name */
}ALIAS_DATA;
union TTR
{
/* Pointer to first block of member as */
char ttrpds[4]; /* - a string */
unsigned ttrz; /* - an unsigned ini, used by ospoint() */
};
/*--------------------------------------------------------------------+
| Partioned Data Set Member Information - extracted and reformatted |
| from the PDS directory |
+--------------------------------------------------------------------*/
typedef struct PDS_MBR
{
char member[8+1]; /* member name in PDS, padded with */
/* blanks on the right */
int alias; /* TRUE if alias, FALSE otherwise */
union TTR ttr_data; /* ttr info */
ALIAS_DATA * alias_list;
/* Linklist of alias entrires for this */
/* this real member, if they exist */
ALIAS_DATA * alias_last;
/* pointer to last alias member name */
}PDS_MBR;
/*--------------------------------------------------------------------+
| Skiplist node struct |
| |
| Note: element pointers[] must be the last element as it's size will |
| vary depending on the number of skip levels in which it |
| appears. |
| |
+--------------------------------------------------------------------*/
struct node
{
int level; /* Max skip level at which this node */
/* appears. */
PDS_MBR data; /* PDS member data, name, ttr, alias */
struct node * pointers[1]; /* Ptr to next node, there will be */
/* be one for each level at which this*/
/* node appears. */
};
#define NIL (NODE *)NULL
#define NODE struct node
#endif /* __P2UPNODE__ */