Re: a4gl string comparison broken?
Malcolm Perrior <[email protected]>
| Newsgroups | gmane.comp.lang.4gl.aubit.general |
|---|---|
| Message-ID | <A338ECC4DD46BC4B8B313F6AACEEC1E3EB3A5743@ukhqexchange1.Foresters.co.uk> |
a) Dunno – why does it think a character space matches to ^M? And: b) Yup – it’s just that it’s always worked (probably accidentally and ‘just happens to’ so no-one noticed it was dodgy code) on the old HP/i4gl system ☺ PS it also seems to not recognise ^CTRL-M is the same as as ASCII(13)… From: [email protected] [mailto:[email protected]] On Behalf Of Mike Aubury Sent: 26 July 2017 12:37 To: Malcolm Perrior Cc: [email protected] Subject: Re: [Aubit4gl-discuss] a4gl string comparison broken? I'm not entirely sure what you're trying to do, but I'm fairly sure thats not the way to do it :) The embedded ^M is always going to cause issues . It would be much better to use code like : MAIN DEFINE lc_char CHAR(5) DEFINE ls_pos SMALLINT LET lc_char = "AB"+ascii(13)+"DE" FOR ls_pos = 1 to 5 DISPLAY ls_pos IF lc_char[ls_pos] = ascii(13) THEN DISPLAY "YES" END IF END FOR END MAIN Or IF ord(lc_char[ls_pos]) = 13 THEN DISPLAY "YES" END IF On 26 July 2017 at 11:08, Malcolm Perrior <[email protected]<mailto:[email protected]>> wrote: Hi I’m debugging one of our old (very old) production Informix 4gls that’s worked tolerably well since 1998 on our HP-UX machine under i4GL V7.20/IDSV9.30; we’ve migrated all the code with a very high degree of success to a Ubuntu machine running Aubit against an Informix 12.10 database with minimal code changes. One bit of code though has been causing screen display issues – it’s basically a horrible bit of 4GL that takes strings and displays them in a screen window and there’s a bit of string-slicing going on to strip unprintables and carriage returns etc. Under the Linux/a4gl environment it gets the test for CR wrong (it’s looking for CTRL-M) in that it seems to see whitespace as a CR and thus messes up our display. The following code snippet demonstrates it. When run in HPUX it’s fine and prints 1,2,3,4,5 as expected; but under Linux/a4gl it prints 1 2 3 YES 4 5. NB the “^M” is entered in vi using “CTRL-V CTRL-M”, and we get the same result whether we precede it with a backslash or without. NB(2) we’re compiling using ‘4glpc snippet.4gl –o snippet.4ge’. 4glpc –v shows: version 1.2, build level 38 Looks like an a4gl bug? MAIN DEFINE lc_char CHAR(5) DEFINE ls_pos SMALLINT LET lc_char = "AB DE " FOR ls_pos = 1 to 5 DISPLAY ls_pos IF lc_char[ls_pos] = "^M" THEN DISPLAY "YES" END IF END FOR END MAIN Thanks! Malcolm Perrior foresters.com<http://foresters.com> ********************************************************************** The information contained in this email is intended only for the individual or entity to whom it is addressed. It may contain privileged and confidential information and if you are not an intended recipient you must not copy, distribute or take any action in reliance on it. If you have received this email in error, please notify us immediately by telephone on (020) 8628 3456. Please also destroy and delete the message from your computer. Any opinions expressed in this message are those of the sender only and do not necessarily represent the views of Foresters. The sender may not be authorised to give financial advice and nothing in this message should be construed as offering such advice or entering into any contract on behalf of any Foresters Company. Forester Life Limited is authorised by the Prudential Regulation Authority and regulated by the Financial Conduct Authority and Prudential Regulation Authority. Forester Fund Management Limited is authorised and regulated by the Financial Conduct Authority. The Children’s Mutual is a trading name of Forester Fund Management Ltd. Companies within the Foresters UK Group are registered in England as follows: Forester Life Limited 2997655, Forester Fund Management Limited 4315370 and Forester Holdings (Europe) Limited 3013082. Registered Offices for all companies within the Foresters UK Group: Foresters House, 2 Cromwell Avenue, Bromley, BR2 9BF. T 020 8628 3400. F 020 8628 3500. E [email protected]<mailto:[email protected]> foresters.com<http://foresters.com> ********************************************************************** ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Aubit4gl-discuss mailing list [email protected]<mailto:[email protected]> https://lists.sourceforge.net/lists/listinfo/aubit4gl-discuss ________________________________________________________________________ This e-mail has been scanned for all viruses by Claranet. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.claranet.co.uk ________________________________________________________________________ ********************************************************************** The information contained in this email is intended only for the individual or entity to whom it is addressed. It may contain privileged and confidential information and if you are not an intended recipient you must not copy, distribute or take any action in reliance on it. If you have received this email in error, please notify us immediately by telephone on (020) 8628 3456. Please also destroy and delete the message from your computer. Any opinions expressed in this message are those of the sender only and do not necessarily represent the views of Foresters. The sender may not be authorised to give financial advice and nothing in this message should be construed as offering such advice or entering into any contract on behalf of any Foresters Company. Forester Life Limited is authorised by the Prudential Regulation Authority and regulated by the Financial Conduct Authority and Prudential Regulation Authority. Forester Fund Management Limited is authorised and regulated by the Financial Conduct Authority. The Children’s Mutual is a trading name of Forester Fund Management Ltd. Companies within the Foresters UK Group are registered in England as follows: Forester Life Limited 2997655, Forester Fund Management Limited 4315370 and Forester Holdings (Europe) Limited 3013082. Registered Offices for all companies within the Foresters UK Group: Foresters House, 2 Cromwell Avenue, Bromley, BR2 9BF. T 020 8628 3400. F 020 8628 3500. E [email protected] foresters.com ********************************************************************** ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Aubit4gl-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/aubit4gl-discuss