HP Forums
compile order problem - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html)
+--- Forum: HP Prime (/forum-5.html)
+--- Thread: compile order problem (/thread-4806.html)



compile order problem - ji3m - 09-26-2015 01:42 PM

order problem

EXPORT TX=0;

//EXPORT TOTTER; //doesnt work
//EXPORT TOTTER(); //doesnt work

EXPORT TEETER()
BEGIN
IF TX>4 THEN
RETURN TX;
ELSE
TOTTER(); // <- error here
END;
END;



EXPORT TOTTER()
BEGIN
IF TX>4 THEN
TX:=TX+1;
RETURN TX;
ELSE
TEETER();
END;


Does anyone know how to make this compile?
Its not about recursion but about order of compilation and lack of declarations.
I have seversl "files" whick cross call routines and csnt conrol the order. of compilation.

Using two different files also fails since neither succeeds.


RE: compile order problem - DrD - 09-26-2015 02:25 PM

One way:

Code:

TOTTER();
LOCAL TX;

EXPORT TEETER()
BEGIN
  IF TX>4 THEN
    RETURN TX;
  ELSE
    TX:=TOTTER(); // <- 
  END;
  TEETER();
END;

TOTTER()
BEGIN
  TX:=TX+1;
END;

-Dale-


RE: compile order problem - xset - 09-26-2015 02:27 PM

The solution:

EXPORT TX=0;

TOTTER(); // forward declaration, no need for EXPORT here


EXPORT TEETER()
BEGIN
IF TX>4 THEN
RETURN TX;
ELSE
TOTTER(); // no error
END;
END;



EXPORT TOTTER()
BEGIN
IF TX>4 THEN
TX:=TX+1;
RETURN TX;
ELSE
TEETER();
END; // u forgot second END here ???
END;


RE: compile order problem - ji3m - 09-26-2015 02:34 PM

Thanx to both.

Didnt try the bare decl.

If they are in different files will export work.?