×
The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.
McGovern, Sean wrote:
Joe,
Could you share your quote function code ?
Thanks.
Sean, a lot depends on the context. In general the hardest part is not
the quote code, but instead the way you make the procedure generic. RPG
requires a little magic to pass fields of differing sizes.
If you're already using varying length fields, it's relatively simple.
IBM's support for *VARSIZE and VARYING makes it very easy. I'll include
a sort of skeleton example here, showing the use of a couple of bit
flags. Things get a little more involved with fixed-length fields;
*VARSIZE requires a little more work.
Joe
h dftactgrp(*no) actgrp(*new)
d Quote pr 128 varying
d input 64 varying options(*varsize)
d flags 5u 0 const options(*Nopass)
d Quote_DoubleQuote...
d C 1
d Quote_Trim...
d C 2
d start s 30 varying
d msg s 50
/free
start = 'My Baby ';
msg = Quote(start);
dsply msg;
start = 'My Baby ';
msg = Quote(start : Quote_Trim);
dsply msg;
start = 'She''s my baby';
msg = Quote(start);
dsply msg;
start = 'She''s my baby';
msg = Quote(start : Quote_Trim + Quote_DoubleQuote);
dsply msg;
*inlr = *on;
/end-free
p Quote b
d pi 128 varying
d input 64 varying options(*varsize)
d flags 5u 0 const options(*Nopass)
d SingleQuote c ''''
d DoubleQuote c ''''''
d Work s 128 varying
d x s 3u 0
d char s 1
d Work2 s 128 varying
/free
Work = input;
if %bitand(flags : Quote_DoubleQuote) = Quote_DoubleQuote;
Work2 = '';
for x = 1 to %len(Work);
char = %subst(Work:x:1);
Work2 += char;
if char = SingleQuote;
Work2 += char;
endif;
endfor;
Work = Work2;
endif;
if %bitand(flags : Quote_Trim) = Quote_Trim;
Work = %trim(Work);
endif;
return SingleQuote + Work + SingleQuote;
/end-free
p e
As an Amazon Associate we earn from qualifying purchases.