×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




John,

The problem is your variable Compressed is too small.

Not sure how you arrived at 44 bytes as the size, but in this example,
cprdata actually needs a larger field (62 bytes).

Part of the reason for the larger size is that the compressed data has a
header structure (first 12 bytes). The other is relatively small amount of
data being compressed (compression routine overhead).

To see any effective compression results you need to use cprdata on a larger
chunk of data. Your example is closer to a worst case example.

Assuming you use a large enough compression buffer, you can get the actual
size of the compressed data from the header.
Bytes 5-8  is the compressed len  (10u 0)
Bytes 9-12 is the uncompressed len (10u 0)


Keith



----- Original Message ----- 
From: "Jon Paris" <Jon.Paris@xxxxxxxxxxxxxx>
To: "Rpg400" <rpg400-l@xxxxxxxxxxxx>
Sent: Thursday, July 01, 2004 3:15 PM
Subject: Help with cprdata


> I'm having a senior citizen moment I think.  I just can't see why this
puppy
> is blowing up on me with a nasty template error.
>
> What am I missing?  The C manual defines it like so:
> int cprdata (_SPCPTR result,
> int result_length,
> _SPCPTRCN source,
> int src_length);
>
> And my RPG code is:
>
>      d Compress        pr            10i 0 Extproc('cprdata')
>      d   Output                   32000a   Options(*Varsize)
>      d   OutputLen                   10i 0 Value
>      d   Source                   32000a   Options(*Varsize)
>      d   SourceLen                   10i 0 Value
>
>      D Compressed      S             44a
>      D CompressedLen   S              2s 0
>      D Source          S             52a
>
>       /Free
>         Source = *All'Jon and Susan - ';
>         Dsply Source;
>         CompressedLen = Compress(Compressed: %Size(Compressed):
>                                  Source:     %Size(Source));
>
> Jon Paris
> Partner400
> www.Partner400.com
>
> --
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
> To post a message email: RPG400-L@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: RPG400-L-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/rpg400-l.
>
>


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.