1 * ZLIB.INC - Interface to the general purpose compression library 2 * 3 * ILE RPG400 version by Patrick Monnerat, DATASPHERE. 4 * Version 1.2.3.9 5 * 6 * 7 * WARNING: 8 * Procedures inflateInit(), inflateInit2(), deflateInit(), 9 * deflateInit2() and inflateBackInit() need to be called with 10 * two additional arguments: 11 * the package version string and the stream control structure. 12 * size. This is needed because RPG lacks some macro feature. 13 * Call these procedures as: 14 * inflateInit(...: ZLIB_VERSION: %size(z_stream)) 15 * 16 /if not defined(ZLIB_H_) 17 /define ZLIB_H_ 18 * 19 ************************************************************************** 20 * Constants 21 ************************************************************************** 22 * 23 * Versioning information. 24 * 25 D ZLIB_VERSION C '1.2.3.9' 26 D ZLIB_VERNUM C X'1239' 27 * 28 * Other equates. 29 * 30 D Z_NO_FLUSH C 0 31 D Z_SYNC_FLUSH C 2 32 D Z_FULL_FLUSH C 3 33 D Z_FINISH C 4 34 D Z_BLOCK C 5 35 * 36 D Z_OK C 0 37 D Z_STREAM_END C 1 38 D Z_NEED_DICT C 2 39 D Z_ERRNO C -1 40 D Z_STREAM_ERROR C -2 41 D Z_DATA_ERROR C -3 42 D Z_MEM_ERROR C -4 43 D Z_BUF_ERROR C -5 44 DZ_VERSION_ERROR C -6 45 * 46 D Z_NO_COMPRESSION... 47 D C 0 48 D Z_BEST_SPEED C 1 49 D Z_BEST_COMPRESSION... 50 D C 9 51 D Z_DEFAULT_COMPRESSION... 52 D C -1 53 * 54 D Z_FILTERED C 1 55 D Z_HUFFMAN_ONLY C 2 56 D Z_RLE C 3 57 D Z_DEFAULT_STRATEGY... 58 D C 0 59 * 60 D Z_BINARY C 0 61 D Z_ASCII C 1 62 D Z_UNKNOWN C 2 63 * 64 D Z_DEFLATED C 8 65 * 66 D Z_NULL C 0 67 * 68 ************************************************************************** 69 * Types 70 ************************************************************************** 71 * 72 D z_streamp S * Stream struct ptr 73 D gzFile S * File pointer 74 D z_off_t S 10i 0 Stream offsets 75 * 76 ************************************************************************** 77 * Structures 78 ************************************************************************** 79 * 80 * The GZIP encode/decode stream support structure. 81 * 82 D z_stream DS align based(z_streamp) 83 D zs_next_in * Next input byte 84 D zs_avail_in 10U 0 Byte cnt at next_in 85 D zs_total_in 10U 0 Total bytes read 86 D zs_next_out * Output buffer ptr 87 D zs_avail_out 10U 0 Room left @ next_out 88 D zs_total_out 10U 0 Total bytes written 89 D zs_msg * Last errmsg or null 90 D zs_state * Internal state 91 D zs_zalloc * procptr Int. state allocator 92 D zs_free * procptr Int. state dealloc. 93 D zs_opaque * Private alloc. data 94 D zs_data_type 10i 0 ASC/BIN best guess 95 D zs_adler 10u 0 Uncompr. adler32 val 96 D 10U 0 Reserved 97 D 10U 0 Ptr. alignment 98 * 99 ************************************************************************** 100 * Utility function prototypes 101 ************************************************************************** 102 * 103 D compress PR 10I 0 extproc('compress') 104 D dest 32767 options(*varsize) Destination buffer 105 D destLen 10U 0 Destination length 106 D source 32767 const options(*varsize) Source buffer 107 D sourceLen 10u 0 value Source length 108 * 109 D compress2 PR 10I 0 extproc('compress2') 110 D dest 32767 options(*varsize) Destination buffer 111 D destLen 10U 0 Destination length 112 D source 32767 const options(*varsize) Source buffer 113 D sourceLen 10U 0 value Source length 114 D level 10I 0 value Compression level 115 * 116 D compressBound PR 10U 0 extproc('compressBound') 117 D sourceLen 10U 0 value 118 * 119 D uncompress PR 10I 0 extproc('uncompress') 120 D dest 32767 options(*varsize) Destination buffer 121 D destLen 10U 0 Destination length 122 D source 32767 const options(*varsize) Source buffer 123 D sourceLen 10U 0 value Source length 124 * 125 D gzopen PR extproc('gzopen') 126 D like(gzFile) 127 D path * value options(*string) File pathname 128 D mode * value options(*string) Open mode 129 * 130 D gzdopen PR extproc('gzdopen') 131 D like(gzFile) 132 D fd 10i 0 value File descriptor 133 D mode * value options(*string) Open mode 134 * 135 D gzsetparams PR 10I 0 extproc('gzsetparams') 136 D file value like(gzFile) File pointer 137 D level 10I 0 value 138 D strategy 10i 0 value 139 * 140 D gzread PR 10I 0 extproc('gzread') 141 D file value like(gzFile) File pointer 142 D buf 32767 options(*varsize) Buffer 143 D len 10u 0 value Buffer length 144 * 145 D gzwrite PR 10I 0 extproc('gzwrite') 146 D file value like(gzFile) File pointer 147 D buf 32767 const options(*varsize) Buffer 148 D len 10u 0 value Buffer length 149 * 150 D gzputs PR 10I 0 extproc('gzputs') 151 D file value like(gzFile) File pointer 152 D s * value options(*string) String to output 153 * 154 D gzgets PR * extproc('gzgets') 155 D file value like(gzFile) File pointer 156 D buf 32767 options(*varsize) Read buffer 157 D len 10i 0 value Buffer length 158 * 159 D gzflush PR 10i 0 extproc('gzflush') 160 D file value like(gzFile) File pointer 161 D flush 10I 0 value Type of flush 162 * 163 D gzseek PR extproc('gzseek') 164 D like(z_off_t) 165 D file value like(gzFile) File pointer 166 D offset value like(z_off_t) Offset 167 D whence 10i 0 value Origin 168 * 169 D gzrewind PR 10i 0 extproc('gzrewind') 170 D file value like(gzFile) File pointer 171 * 172 D gztell PR extproc('gztell') 173 D like(z_off_t) 174 D file value like(gzFile) File pointer 175 * 176 D gzeof PR 10i 0 extproc('gzeof') 177 D file value like(gzFile) File pointer 178 * 179 D gzclose PR 10i 0 extproc('gzclose') 180 D file value like(gzFile) File pointer 181 * 182 D gzerror PR * extproc('gzerror') Error string 183 D file value like(gzFile) File pointer 184 D errnum 10I 0 Error code 185 * 186 D gzclearerr PR extproc('gzclearerr') 187 D file value like(gzFile) File pointer 188 * 189 ************************************************************************** 190 * Basic function prototypes 191 ************************************************************************** 192 * 193 D zlibVersion PR * extproc('zlibVersion') Version string 194 * 195 D deflateInit PR 10I 0 extproc('deflateInit_') Init. compression 196 D strm like(z_stream) Compression stream 197 D level 10I 0 value Compression level 198 D version * value options(*string) Version string 199 D stream_size 10i 0 value Stream struct. size 200 * 201 D deflate PR 10I 0 extproc('deflate') Compress data 202 D strm like(z_stream) Compression stream 203 D flush 10I 0 value Flush type required 204 * 205 D deflateEnd PR 10I 0 extproc('deflateEnd') Termin. compression 206 D strm like(z_stream) Compression stream 207 * 208 D inflateInit PR 10I 0 extproc('inflateInit_') Init. expansion 209 D strm like(z_stream) Expansion stream 210 D version * value options(*string) Version string 211 D stream_size 10i 0 value Stream struct. size 212 * 213 D inflate PR 10I 0 extproc('inflate') Expand data 214 D strm like(z_stream) Expansion stream 215 D flush 10I 0 value Flush type required 216 * 217 D inflateEnd PR 10I 0 extproc('inflateEnd') Termin. expansion 218 D strm like(z_stream) Expansion stream 219 * 220 ************************************************************************** 221 * Advanced function prototypes 222 ************************************************************************** 223 * 224 D deflateInit2 PR 10I 0 extproc('deflateInit2_') Init. compression 225 D strm like(z_stream) Compression stream 226 D level 10I 0 value Compression level 227 D method 10I 0 value Compression method 228 D windowBits 10I 0 value log2(window size) 229 D memLevel 10I 0 value Mem/cmpress tradeoff 230 D strategy 10I 0 value Compression stategy 231 D version * value options(*string) Version string 232 D stream_size 10i 0 value Stream struct. size 233 * 234 D deflateSetDictionary... 235 D PR 10I 0 extproc('deflateSetDictionary') Init. dictionary 236 D strm like(z_stream) Compression stream 237 D dictionary 32767 const options(*varsize) Dictionary bytes 238 D dictLength 10U 0 value Dictionary length 239 * 240 D deflateCopy PR 10I 0 extproc('deflateCopy') Compress strm 2 strm 241 D dest like(z_stream) Destination stream 242 D source like(z_stream) Source stream 243 * 244 D deflateReset PR 10I 0 extproc('deflateReset') End and init. stream 245 D strm like(z_stream) Compression stream 246 * 247 D deflateParams PR 10I 0 extproc('deflateParams') Change level & strat 248 D strm like(z_stream) Compression stream 249 D level 10I 0 value Compression level 250 D strategy 10I 0 value Compression stategy 251 * 252 D deflateBound PR 10U 0 extproc('deflateBound') Change level & strat 253 D strm like(z_stream) Compression stream 254 D sourcelen 10U 0 value Compression level 255 * 256 D deflatePrime PR 10I 0 extproc('deflatePrime') Change level & strat 257 D strm like(z_stream) Compression stream 258 D bits 10I 0 value Number of bits to insert 259 D value 10I 0 value Bits to insert 260 * 261 D inflateInit2 PR 10I 0 extproc('inflateInit2_') Init. expansion 262 D strm like(z_stream) Expansion stream 263 D windowBits 10I 0 value log2(window size) 264 D version * value options(*string) Version string 265 D stream_size 10i 0 value Stream struct. size 266 * 267 D inflateSetDictionary... 268 D PR 10I 0 extproc('inflateSetDictionary') Init. dictionary 269 D strm like(z_stream) Expansion stream 270 D dictionary 32767 const options(*varsize) Dictionary bytes 271 D dictLength 10U 0 value Dictionary length 272 * 273 D inflateSync PR 10I 0 extproc('inflateSync') Sync. expansion 274 D strm like(z_stream) Expansion stream 275 * 276 D inflateCopy PR 10I 0 extproc('inflateCopy') 277 D dest like(z_stream) Destination stream 278 D source like(z_stream) Source stream 279 * 280 D inflateReset PR 10I 0 extproc('inflateReset') End and init. stream 281 D strm like(z_stream) Expansion stream 282 * 283 D inflateBackInit... 284 D PR 10I 0 extproc('inflateBackInit_') 285 D strm like(z_stream) Expansion stream 286 D windowBits 10I 0 value Log2(buffer size) 287 D window 32767 options(*varsize) Buffer 288 D version * value options(*string) Version string 289 D stream_size 10i 0 value Stream struct. size 290 * 291 D inflateBack PR 10I 0 extproc('inflateBack') 292 D strm like(z_stream) Expansion stream 293 D in * value procptr Input function 294 D in_desc * value Input descriptor 295 D out * value procptr Output function 296 D out_desc * value Output descriptor 297 * 298 D inflateBackEnd PR 10I 0 extproc('inflateBackEnd') 299 D strm like(z_stream) Expansion stream 300 * 301 D zlibCompileFlags... 302 D PR 10U 0 extproc('zlibCompileFlags') 303 * 304 ************************************************************************** 305 * Checksum function prototypes 306 ************************************************************************** 307 * 308 D adler32 PR 10U 0 extproc('adler32') New checksum 309 D adler 10U 0 value Old checksum 310 D buf 32767 const options(*varsize) Bytes to accumulate 311 D len 10U 0 value Buffer length 312 * 313 D crc32 PR 10U 0 extproc('crc32') New checksum 314 D crc 10U 0 value Old checksum 315 D buf 32767 const options(*varsize) Bytes to accumulate 316 D len 10U 0 value Buffer length 317 * 318 ************************************************************************** 319 * Miscellaneous function prototypes 320 ************************************************************************** 321 * 322 D zError PR * extproc('zError') Error string 323 D err 10I 0 value Error code 324 * 325 D inflateSyncPoint... 326 D PR 10I 0 extproc('inflateSyncPoint') 327 D strm like(z_stream) Expansion stream 328 * 329 D get_crc_table PR * extproc('get_crc_table') Ptr to ulongs 330 * 331 /endif 332