HP Forums

Full Version: Don't execute a function if a routine is called outside the program
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
hi,
there is a way to don't execute a command if a function is not called inside the program, but externally (EXPORT...)?

I've a code like this one:
Code:

EXPORT ascendant(...)
BEGIN
// routine...
  ch:= MSGBOX("Another calculation?", 1);
  IF (ch<>0)  THEN changeData(); END;
END;

I would like to execute changeData(); only if ascendant() is called inside a program (to return to its menu, and so on) but not when the function is called externally (passing parameters...).

In other words: the function should ask itself: "who is calling?"...

Thank you

Salvo
Salvo,

If I understand your question correctly, this should work:

Code:

changedata();
local a:=0;

EXPORT ascendant()
BEGIN
 local ch;
 ch:=msgbox("another calculation?",1);
 if ch<>0 and a==1 then
  changedata();
  a:=0;
 end 
END;

local changedata()
begin
 print();
 print("changedata ran");
end;

export calling_program()
begin
 a:=1;
 ascendant();
end;

When you execute ascendant from the Home screen, changedata is not executed. When calling_program executes ascendant the flag "a" is set to 1 first and changedata is executed. You can't set "a" to 1 externally if you make it local.

I don't know if the prime has user flags like the 48 thru 50g series has or not. I'm still learning HPPPL.

Cheers,

Road
(07-03-2015 06:22 PM)roadrunner Wrote: [ -> ]Salvo,

If I understand your question correctly, this should work:

...

thanks Road, I'll try it; it seems a good workaround.
Never I know if the Prime has user flags.

I'll let you know then.

Salvo

EDIT: It worked, but I had to define a variable as global (internalfun:=0) to pass values through the routines...
Reference URL's