RE: I have tried coworkers, and the manual, but to no avail...
Posted in 1998
Follow-up to my earlier posting... Here are my last known working version of fgl_getkey(), which was last modified in 1992 but I ANSI-fied it today (mainly because my private coding standards say my code is ANSI C with prototypes), and some discussion on related subjects, some dating back as far as 1990. If anyone has problems with the C code which can't be resolved with -DNO_FGLSYS_H on the compiler command line, you'd better let me know. Have fun. Jonathan Leffler (jleffler@visa.com) #include <bother.ms-exchange.h> ---------- From: Jonathan Leffler[SMTP:jleffler@earthlink.net] Sent: Thursday, April 16, 1998 6:18 AM To: informix-list@iiug.org Subject: Re: I have tried coworkers, and the manual, but to no avail... TomMartins wrote: > What function can you call in 4gl that WAITS for a keystroke, and > returns the key pressed? Someone suggested PROMPT ... FOR CHAR; that sometimes does what you want. Otherwise, there is no standard function that does the job that is documented. I have, I'm sure, contributed such a function in the past, though I can't find it in the DejaNews archive or in the IIUG web site. So, I will try and dig it out of my own archives later and repost it. The 4J's compiler/runtime provides an fgl_getkey() function equivalent to the one I'd provide. Note that the code would be unsupported as far as Informix is concerned. begin 600 getkey.c M+RH-"D H(RE&:6QE.B @(" @(" @(" @("120U-F:6QE.B!G971K97DN8RQV M("0-"D H(RE697)S:6]N.B @(" @(" @("12979I<VEO;CH@,2XS("0-"D H M(RE,87-T(&-H86YG960Z(" @("1$871E.B Q.3DX+S T+S$V(#$X.C,R.C0W M("0-"D H(RE0=7)P;W-E.B @(" @(" @(%!R;W9I9&4@=&AE(&UI<W-I;F<@ M231'3"!F=6YC=&EO;CH@1D=,7T=%5$M%62@I#0I *",I075T:&]R.B @(" @ M(" @("!*($QE9F9L97(-"D H(RE#;W!Y<FEG:'0Z(" @(" @("A#*2!*3%-3 M(#$Y.3$M.3(L,3DY. T**B\\-"@T*+RI404)35$]0/30J+PT*#0HC:69N9&5F M($Y/7T9'3%-94U](#0HC:6YC;'5D92 B9F=L<WES+F@B#0HC96YD:68@+RH@ M3D]?1D=,4UE37T@@*B\\-"@T*(VEF;F1E9B!L:6YT#0IS=&%T:6,@8V]N<W0@ M8VAA<B!R8W-;72 ](") *",I)$ED.B!G971K97DN8RQV(#$N,R Q.3DX+S T M+S$V(#$X.C,R.C0W(&IL969F;&5R($5X<" D(CL-"B-E;F1I9@T*#0II;G0@ M9F=L7V=E=&ME>2AI;G0@;F%R9W,I#0I[#0H)97AT97)N('-H;W)T(&5F;&%S M=&ME>3L-"@T*"6EF("AN87)G<R A/2 P*0T*"0E?9F=L7V9A=&%L*")F9VQ? M9V5T:V5Y(BP@,2P@+3$S,3@I.PT*#0H)969L87-T:V5Y(#T@7V5F<F=E=&ME K>2@I.PT*"7)E=&EN="AE9FQA<W1K97DI.PT*"7)E='5R;B@Q*3L-"GT-"FME ` end begin 600 fgl_getkey M1G)O;2!J+FQE9F9L97) 86-M+F]R9R!4:'4@2F%N(" Q(# P.C P.C P(#$Y M-S -"D9R;VTZ($1A=F4@4VYY9&5R(#QU=6YE="%S;FED92YC;VTA9&%V92YS M;GED97(^#0I3=6)J96-T.B!F9VQ?9V5T:V5Y*"D@/S\\-"E1O.B!J;VAN;$!I M;F9O<FUI>"YC;VT-"D1A=&4Z($UO;BP@,C0@36%Y(#$Y.3,@,#DZ,#DZ,C0@ M+3 T,# @*$5$5"D-"@T*2&D@2F]N871H86XL($D@:&%V92!S;VUE(')E86QL M>2!I;7!O<G1A;G0@<75E<W1I;VYS('1H870@22!H;W!E('EO=2!C86X@86YS M=V5R+@T*5&AI<R!I<R!A(&9U;F-T:6]N($D@=W)O=&4@<V]M92!T:6UE(&%G M;RXN+@T*#0I(97)E("TM+2TM+2TM+2!3;FEP($AE<F4@+2TM+2TM+2TM(%-N M:7 @2&5R92 M+2TM+2TM+2T@4VYI<"!(97)E("TM+2TM+2TM+2!3;FEP#0HO M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0HJ(%1H:7,@9G5N M8W1I;VX@=V%I=',@9F]R(&$@:V5Y(&]N('1H92!K97EB;V%R9"!T;R!B92!H M:70@86YD(')E='5R;G,@86X@(" @(" J#0HJ($E.5$5'15(@8V]D92!F;W(@ M=&AA="!K97DN(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @ M(" @(" @(" @(" @(" J#0HJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHO#0H-"F5X=&5R;B!S:&]R= EE9FQA<W1K97D[#0H-"F9G;%]G971K M97DH87)G*0T*:6YT"6%R9SL-"GL-"@EE>'1E<FX@<VAO<G0)7V%C8VME>3L- M"@ES:&]R= EK97EH:70[#0H-"@EE9FQA<W1K97D@/2 H*&ME>6AI=" ](')G M971K97DH*2D@/3T@7V%C8VME>2D@/R R,#$V(#H@:V5Y:&ET.PT*"6-L<FUS M9R@I.PT*"7)E=&QO;F<H*&QO;F<I(&5F;&%S=&ME>2D[#0H)<F5T=7)N*#$I M.PT*?0T*#0I(97)E("TM+2TM+2TM+2!3;FEP($AE<F4@+2TM+2TM+2TM(%-N M:7 @2&5R92 M+2TM+2TM+2T@4VYI<"!(97)E("TM+2TM+2TM+2!3;FEP#0H- M"BH@5VAA="!I<R!T:&4@<&]S<VEB:6QI='D@=&AA="!);F9O<FUI>"!W:6QL M('-U<'!O<G0@82!F=6YC=&EO;B!L:6ME('1H:7,@:6X-"B @82!F=71U<F4@ M<F5L96%S93\\-"@T**B!7:&%T('=I;&P@:&%P<&5N('1O(')G971K97DH*2!A M;F0@8VQR;7-G*"D@:6X@231'3"TU+C P/PT*#0HJ(%=I;&P@(E]A8V-K97DB M(&%N9" B969L87-T:V5Y(B!S=&EL;"!B92!V86QI9"!V87)I86)L97,@:6X@ M231'3"TU+C P/PT*#0HJ($EF(')G971K97DH*2P@8VQR;7-G*"DL(")?86-C M:V5Y(BP@86YD(")E9FQA<W1K97DB(&1I<V%P<&5A<B!I;B U+C P+ T*("!W M:6QL('1H97)E(&)E('-I;6EL87(@<F5P;&%C96UE;G1S/PT*#0I4:&4@<F5A M<V]N($D@87-K(&ES('1H870@;7D@8W5R<F5N="!E;7!L;WEE<B!L;W9E<R!M M>2 B9'EN86UI8R(@8G)O=W-E#0IF=6YC=&EO;G,@8G5T(&ES;B=T(&%L;"!T M:&%T('1H<FEL;&5D(&)Y(&%N('5N<W5P<&]R=&5D+"!H;VUE+6=R;W=N#0IF M=6YC=&EO;B!T:&%T(&UA:V5S(&-A;&QS('1O('5N+61O8W5M96YT960@-$=, M(')O=71I;F5S+B @06YY('=I<V1O;0T*=&AA="!Y;W4@8V]U;&0@<VAA<F4@ M=VET:"!M92!W;W5L9"!B92!A<'!R96-I871E9"X@(%1H86YK<R$-"@T*1$%3 M#0HM+0T*1&%V:60@4VYY9&5R($ @4VYI9&4@0V]M<'5T97(@4V5R=FEC97,@ M+2!&;VQC<F]F="P@4$$-"E550U Z(" N+B%U=6YE="%D87,Q,R%D879E(" @ M24Y415).150Z("!D879E+G-N>61E<D!S;FED92YC;VT-"@T*1G)O;3H@=75N M970A8W)U<VAE<BYA;6=E;BYC;VTA8VAR:7-S("A#:')I<R!3:6QV97-T97(I M#0I3=6)J96-T.B!293H@9F=L7V=E=&ME>2@I(#\\_#0I$871E.B R-B!-87D@ M,3DY,R Q-CHR-CHR-2!'350-"E1O.B!I;F9O<FUI>"UL:7-T0')M>2YE;6]R M>2YE9'4-"E@M26YF;W)M:7@M3&ES="U)9#H@/&YE=W,N,S0U-#X-"@T*26X@ M87)T:6-L92 \\9&)E<F<N-S,X,S<Q.#$V0'!U;6$^+"!D8F5R9T!I;F9O<FUI M>"YC;VT@*$1A=FED($DN($)E<F<I('=R:71E<SH-"GP^(&1A=F5 9&%S,3,N M<VYI9&4N8V]M("A$879E(%-N>61E<BD@=W)I=&5S.@T*?#X-"GP^(#Y(97)E M(&ES(&$@<75E<W1I;VX@9F]R(&%N>6]N92!R=6YN:6YG($EN9F]R;6EX+31' M3"!V97(@-2XP," H:68@:70G<PT*?#X@/F%V86EL86)L92!Y970I(&]R(&9O M<B!A;GEO;F4@870@26YF;W)M:7@@=&AA="!C86X@=&%K92!A(&QO;VL@870@ M=&AE(#1'3 T*?#X@/G-O=7)C92X-"GP^#0I\\/B ^5&AI<R!I<R!A(&9U;F-T M:6]N($D@=W)O=&4@<V]M92!T:6UE(&%G;RXN+@T*?#X-"GP^(#X@+BXN;VUI M='1E9"!F;W(@8G)E=FET>2XN+@T*?#X-"GP^(#XJ(%=H870@:7,@=&AE('!O M<W-I8FEL:71Y('1H870@26YF;W)M:7@@=VEL;"!S=7!P;W)T(&$@9G5N8W1I M;VX@;&EK92!T:&ES#0I\\/B ^("!I;B!A(&9U='5R92!R96QE87-E/PT*?#X- M"GP^(#1'3" T+C$@:6YT<F]D=6-E9" U(&YE=R!F=6YC=&EO;G,@=VAI8V@@ M87)E(&1O8W5M96YT960@:6X@=&AE(#1'3" T+C$-"GP^(%-U<'!L96UE;G0@ M*$IU;'D@,3DY,2DZ#0I\\/B @(" @9F=L7V=E=&5N=BP@9F=L7VQA<W1K97DL M(&9G;%]K97EV86PL(&9I96QD7W1O=6-H960L(&%N9"!G971?9FQD8G5F9BX- M"GP^(%1H92!S96-O;F0@;V8@=&AE<V4@<F5P;&%C97,@=&AE('!R979I;W5S M;'D@=6YD;V-U;65N=&5D(&5F;&%S=&ME>2X-"@T*56YF;W)T=6YA=&5L>2P@ M22!T:&EN:R!T:&4@9G5N8W1I;VYA;&ET>2!T:&%T($1A=F4@:7,@869R86ED M(&]F(&QO<VEN9R!D;V5S#0IN;W0@97AI<W0@:6X@=&AE<V4@;F5W(&9U;F-T M:6]N<RX@($EF(&AI<R!O<FEG:6YA;"!F=6YC=&EO;BP@9F=L7V=E=&ME>2@I M+ T*86-T=6%L;'D@=V%I=',@9F]R(&$@:V5Y<')E<W,@*'-I;6EL87(@=&\\@ M4%)/35!4('<O;R!A(&-U<G-O<BD@86YD('1H96X-"G)E='5R;G,@=&AE(&ME M>2!T:&%T('=A<R!P<F5S<V5D+"!T:&5N('1H;W-E(&YE=R!F=6YC=&EO;G,@ M9&]N)W0@9'5P;&E