It as been some years (they go fast right?) since I cleared variables mid procedure. I just set them to Null and clear up whatever is appropriate at the terminice.
On Saturday, May 8, 2021 at 11:31:38 AM UTC-4 Karen Tellef wrote: > The problem isn't so much clearing as it is where you initialize it. You > can't initialize it within the stored procedure if it is called from within > a while loop. That takes away one of the advantages of using a stored > procedure, because you would still have to initialize the variables from > the calling code, before you run the stored procedure > > > Karen > > > > -----Original Message----- > From: Randyp <[email protected]> > To: [email protected] > Sent: Sat, May 8, 2021 10:14 am > Subject: Re: [RBASE-L] - Re: SET VAR in WHILE loop > > You might set the variable to zero or null rather than clearing it. > > Sent from my iPhone > > On May 8, 2021, at 9:00 AM, [email protected] <[email protected]> wrote: > > > > Yeah I'm not sure how the mechanism within R:Base works to track > variables, but what ever list is used, the named variables have to point to > some place in system memory (space requested for the Variable Type), so it > figures that if you clear a variable completely, whatever link from within > R:Base to system memory (Heap or Stack) is broken and there isn't a good or > established mechanism within R:Base to restore that within a While Loop (at > least I think that was the logic when R:Base was originally written), so > there exists this rule to NOT do it. Just a Guess! > > > On Saturday, May 8, 2021 at 4:39:08 AM UTC-4 Doug Hamilton wrote: > > Thanks Mike. The CLEAR VAR in the RUN SELECT code was typical "good > housekeeping" we see on a lot of sample code. > > But, as I now understand, code that is in the RUN SELECT is treated as if > that code were explicitly written within the WHILE loop. > > Which means, like you said, any variables in a RUN SELECT called within a > WHILE loop should be defined outside the WHILE loop so they get, and keep, > their place in line. > > Doug > > > > On 5/4/2021 11:10 AM, [email protected] wrote: > > Doug, > When you Clear a Var, you have removed it from it's location in memory, > so when you recreate it by issuing a SET VAR in the while loop, you are > violating the rules. > You can simply SET VAR SomeVar = NULL without loosing your place in line. > > Mike > > On Tuesday, May 4, 2021 at 11:31:40 AM UTC-4 Doug Hamilton wrote: > > I know VARIABLES should not be defined inside a WHILE loop. > Does that apply to variables that are defined in a RUN SELECT that is > run inside a WHILE loop? > > Specifically, I have a RUN SEL clump of code that generates sequential > alpha-numeric numbers. > In it, I clear 9 variables, SET VAR those 9 (all are TEXT), run about > 100 lines of code, and then clear 8 of the variables. > It runs in a WHILE loop of anywhere from 1 to 30 iterations. > > This is the code in the RUN SELECT, command name 'GenTaskBarCode': > CLEAR VAR + > vTaskBarcode, + > vDigit1, + > vDigit2, + > vDigit3, + > vDigit4, + > vDigit5, + > vMaxDigit, + > vMinDigit, + > vNextDigit > > SET VAR + > vTaskBarcodeTEXT, + > vDigit1 TEXT, + > vDigit2 TEXT, + > vDigit3 TEXT, + > vDigit4 TEXT, + > vDigit5 TEXT, + > vMaxDigit TEXT, + > vMinDigit TEXT, + > vNextDigit TEXT > > Runs about 100 lines of code > > CLEAR VAR + > [8 variables, not vTaskBarcode] > RETURN > > The WHILE loop is: > > WHILE SQLCODE <> 100 THEN > RUN SELECT CmdCode FROM InternalCode WHERE CmdName='GenTaskBarCode' > > UPDATE tSHPT SET tTaskBarcode =('1467'+.vTaskBarcode) + > WHERE PIKD_ID = .vPIKD_ID > FETCH c#1 INTO vPIKD_ID vi1 > ENDWHILE > > TIA, > Doug > > -- > This email has been checked for viruses by Avast antivirus software. > https://www.avast.com/antivirus > > -- > For group guidelines, visit > http://www.rbase.com/support/usersgroup_guidelines.php > --- > You received this message because you are subscribed to the Google Groups > "RBASE-L" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rbase-l/343713fe-e9a4-4002-b4f4-eacf9c0b5f4bn%40googlegroups.com > > <https://groups.google.com/d/msgid/rbase-l/343713fe-e9a4-4002-b4f4-eacf9c0b5f4bn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > > > > ------------------------------ > [image: Avast logo] <https://www.avast.com/antivirus> > This email has been checked for viruses by Avast antivirus software. > www.avast.com <https://www.avast.com/antivirus> > > > <https://mail.aol.com/webmail-std/en-us/suite#m_1014332687232617598_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > > -- > For group guidelines, visit > http://www.rbase.com/support/usersgroup_guidelines.php > --- > You received this message because you are subscribed to the Google Groups > "RBASE-L" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rbase-l/017f6707-b720-4b1f-b45e-6a43c2024826n%40googlegroups.com > > <https://groups.google.com/d/msgid/rbase-l/017f6707-b720-4b1f-b45e-6a43c2024826n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- > For group guidelines, visit > http://www.rbase.com/support/usersgroup_guidelines.php > --- > You received this message because you are subscribed to the Google Groups > "RBASE-L" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rbase-l/F181004B-9665-4586-ABA8-B6BBF53ADDB9%40ctags.com > > <https://groups.google.com/d/msgid/rbase-l/F181004B-9665-4586-ABA8-B6BBF53ADDB9%40ctags.com?utm_medium=email&utm_source=footer> > . > -- For group guidelines, visit http://www.rbase.com/support/usersgroup_guidelines.php --- You received this message because you are subscribed to the Google Groups "RBASE-L" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rbase-l/c8565fa0-bdd7-4c5a-8a7e-55c0c23a43ddn%40googlegroups.com.

