File: sllib.h

package info (click to toggle)
hercules 3.13-1
  • links: PTS
  • area: main
  • in suites: buster
  • size: 14,132 kB
  • sloc: ansic: 175,124; sh: 8,780; makefile: 748; perl: 149
file content (286 lines) | stat: -rw-r--r-- 8,084 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
/* SLLIB.H      (c) Copyright Leland Lucius, 2000-2009               */
/*              Header for Standard Label library                    */

#if !defined( _SLLIB_H_ )
#define _SLLIB_H_

#include "hercules.h"

#ifndef _SLLIB_C_
#ifndef _HTAPE_DLL_
#define SLL_DLL_IMPORT DLL_IMPORT
#else   /* _HUTIL_DLL_ */
#define SLL_DLL_IMPORT extern
#endif  /* _HUTIL_DLL_ */
#else
#define SLL_DLL_IMPORT DLL_EXPORT
#endif

/*
|| ----------------------------------------------------------------------------
||
|| SLLIB.H      (c) Copyright Leland Lucius, 2000-2009
||              Released under terms of the Q Public License.
||
|| Header for Standard Label library.
||
|| ----------------------------------------------------------------------------
*/

#if !defined( TRUE )
#define TRUE 1
#endif

#if !defined( FALSE )
#define FALSE 0
#endif

/*
|| Raw label structure
*/
typedef struct _sllabel
{
    char            id[      3 ];
    char            num[     1 ];
    union
    {
        struct
        {
            char    volser[  6 ];
            char    rsvd1[  25 ];
            char    idrc[    1 ];
            char    rsvd2[   5 ];
            char    owner[  10 ];
            char    rsvd3[  29 ];
        } vol;

        struct
        {
            char    dsid[   17 ];
            char    volser[  6 ];
            char    volseq[  4 ];
            char    dsseq[   4 ];
            char    genno[   4 ];
            char    verno[   2 ];
            char    crtdt[   6 ];
            char    expdt[   6 ];
            char    dssec[   1 ];
            char    blklo[   6 ];
            char    syscd[  13 ];
            char    rsvd1[   3 ];
            char    blkhi[   4 ];
        } ds1;

        struct
        {
            char    recfm[   1 ];
            char    blksize[ 5 ];
            char    lrecl[   5 ];
            char    den[     1 ];
            char    dspos[   1 ];
            char    jobid[  17 ];
            char    trtch[   2 ];
            char    ctrl[    1 ];
            char    rsvd1[   1 ];
            char    blkattr[ 1 ];
            char    rsvd2[   2 ];
            char    devser[  6 ];
            char    ckptid[  1 ];
            char    rsvd3[  22 ];
            char    lblkln[ 10 ];
        } ds2;

        struct
        {
            char    data[   76 ];
        } usr;
    } u;
} SLLABEL;

/*
|| Cooked label structure
*/
typedef struct _slfmt
{
    char    *key[ 14 ];
    char    *val[ 14 ];

    char    type[ 4 + 1 ];

    union
    {
        struct
        {
            char    volser[  6 + 1 ];
            char    idrc[    1 + 1 ];
            char    owner[  10 + 1 ];
        } vol;

        struct
        {
            char    dsid[   17 + 1 ];
            char    volser[  6 + 1 ];
            char    volseq[  4 + 1 ];
            char    dsseq[   4 + 1 ];
            char    genno[   4 + 1 ];
            char    verno[   2 + 1 ];
            char    crtdt[   6 + 1 ];
            char    expdt[   6 + 1 ];
            char    dssec[   1 + 1 ];
            char    blklo[   6 + 1 ];
            char    syscd[  13 + 1 ];
            char    blkhi[   4 + 1 ];
        } ds1;

        struct
        {
            char    recfm[   1 + 1 ];
            char    blksize[ 5 + 1 ];
            char    lrecl[   5 + 1 ];
            char    den[     1 + 1 ];
            char    dspos[   1 + 1 ];
            char    jobid[  17 + 1 ];
            char    trtch[   2 + 1 ];
            char    ctrl[    1 + 1 ];
            char    blkattr[ 1 + 1 ];
            char    devser[  6 + 1 ];
            char    ckptid[  1 + 1 ];
            char    lblkln[ 10 + 1 ];
        } ds2;

        struct
        {
            char    data[   76 + 1 ];
        } usr;
    } u;
} SLFMT;

/*
|| Prettier label structure mappings
*/
#define slvol u.vol
#define slds1 u.ds1
#define slds2 u.ds2
#define slusr u.usr

/*
|| Special dataset name used to generate an IEHINITT HDR1 label
*/
#define SL_INITDSN "_IEHINITT_"

/*
|| Length of SL format date
*/
#define SL_DATELEN  6

/*
|| Label types
*/
#define SLT_UNKOWN  0
#define SLT_VOL     1
#define SLT_HDR     2
#define SLT_UHL     3
#define SLT_EOF     4
#define SLT_EOV     5
#define SLT_UTL     6

/*
|| Macros to test label type
*/
#define sl_isvol( s, n ) sl_istype( (s), SLT_VOL, (n) )
#define sl_ishdr( s, n ) sl_istype( (s), SLT_HDR, (n) )
#define sl_isuhl( s, n ) sl_istype( (s), SLT_UHL, (n) )
#define sl_iseof( s, n ) sl_istype( (s), SLT_EOF, (n) )
#define sl_iseov( s, n ) sl_istype( (s), SLT_EOV, (n) )
#define sl_isutl( s, n ) sl_istype( (s), SLT_UTL, (n) )

/*
|| Macros to define specific labels
*/
#define sl_vol1( p1, p2, p3 ) \
        sl_vol( p1, p2, p3 )

#define sl_hdr1( p1, p2, p3, p4, p5, p6, p7 ) \
        sl_ds1( p1, SLT_HDR, p2, p3, p4, p5, p6, p7 )

#define sl_eof1( p1, p2, p3, p4, p5, p6 ) \
        sl_ds1( p1, SLT_EOF, p2, p3, p4, p5, p6 )

#define sl_eov1( p1, p2, p3, p4, p5, p6 ) \
        sl_ds1( p1, SLT_EOV, p2, p3, p4, p5, p6 )

#define sl_hdr2( p1, p2, p3, p4, p5, p6, p7, p8 ) \
        sl_ds2( p1, SLT_HDR, p2, p3, p4, p5, p6, p7, p8 )

#define sl_eof2( p1, p2, p3, p4, p5, p6, p7, p8 ) \
        sl_ds2( p1, SLT_EOF, p2, p3, p4, p5, p6, p7, p8 )

#define sl_eov2( p1, p2, p3, p4, p5, p6, p7, p8 ) \
        sl_ds2( p1, SLT_EOV, p2, p3, p4, p5, p6, p7, p8 )

#define sl_uhl1( p1, p2 ) sl_usr( p1, SLT_UHL, 1, p2 )

#define sl_uhl2( p1, p2 ) sl_usr( p1, SLT_UHL, 2, p2 )

#define sl_uhl3( p1, p2 ) sl_usr( p1, SLT_UHL, 3, p2 )

#define sl_uhl4( p1, p2 ) sl_usr( p1, SLT_UHL, 4, p2 )

#define sl_uhl5( p1, p2 ) sl_usr( p1, SLT_UHL, 5, p2 )

#define sl_uhl6( p1, p2 ) sl_usr( p1, SLT_UHL, 6, p2 )

#define sl_uhl7( p1, p2 ) sl_usr( p1, SLT_UHL, 7, p2 )

#define sl_uhl8( p1, p2 ) sl_usr( p1, SLT_UHL, 8, p2 )

#define sl_utl1( p1, p2 ) sl_usr( p1, SLT_UTL, 1, p2 )

#define sl_utl2( p1, p2 ) sl_usr( p1, SLT_UTL, 2, p2 )

#define sl_utl3( p1, p2 ) sl_usr( p1, SLT_UTL, 3, p2 )

#define sl_utl4( p1, p2 ) sl_usr( p1, SLT_UTL, 4, p2 )

#define sl_utl5( p1, p2 ) sl_usr( p1, SLT_UTL, 5, p2 )

#define sl_utl6( p1, p2 ) sl_usr( p1, SLT_UTL, 6, p2 )

#define sl_utl7( p1, p2 ) sl_usr( p1, SLT_UTL, 7, p2 )

#define sl_utl8( p1, p2 ) sl_usr( p1, SLT_UTL, 8, p2 )

/*
|| Error definitions
*/
#define SLE_BLKSIZE             -1      /* Block size out of range          */
#define SLE_DSSEQ               -2      /* Data set sequence out of range   */
#define SLE_EXPDT               -3      /* Invalid expiration date          */
#define SLE_JOBNAME             -4      /* Missing or invalid job name      */
#define SLE_LRECL               -5      /* Invalid record length            */
#define SLE_OWNER               -6      /* Owner string too long            */
#define SLE_RECFM               -7      /* Missing or invalid record format */
#define SLE_STEPNAME            -8      /* Missing or invalid step name     */
#define SLE_TRTCH               -9      /* Invalid recording technique      */
#define SLE_VOLSEQ              -10     /* Volume sequence out of range     */
#define SLE_VOLSER              -11     /* Missing or invalid volume serial */
#define SLE_DATA                -12     /* User data too long               */
#define SLE_INVALIDTYPE         -13     /* Label type invalid               */
#define SLE_INVALIDNUM          -14     /* Label number invalid             */

/*
|| Public functions/data
*/
SLL_DLL_IMPORT char *sl_atoe( void *, void *, int );
SLL_DLL_IMPORT char *sl_etoa( void *, void *, int );
SLL_DLL_IMPORT char *sl_fmtdate( char *, char *, int );
SLL_DLL_IMPORT void sl_fmtlab( SLFMT *, SLLABEL * );
SLL_DLL_IMPORT int sl_islabel( SLLABEL *, void *, int );
SLL_DLL_IMPORT int sl_istype( void *, int type, int num );
SLL_DLL_IMPORT int sl_vol( SLLABEL *, char *, char * );
SLL_DLL_IMPORT int sl_ds1( SLLABEL *, int type, char *, char *, int, int, char *, int );
SLL_DLL_IMPORT int sl_ds2( SLLABEL *, int type, char *, int, int, char *, char *, char * );
SLL_DLL_IMPORT int sl_usr( SLLABEL *, int type, int num, char * );
SLL_DLL_IMPORT const char *sl_error( int rc );

#endif /* defined( _SLLIB_H_ ) */