| Returning Values Through Variables

Previous | Returning Values | Next

As mentioned in the previous section, returning a value from ASM program on a similar way like TI-Basic functions return values causes problems with AMS 2.xx. So, in this release of TIGCCLIB, another way for returning values (which works well unconditionally) is introduced. This method will be ilustrated using a concrete example. Look the following modified "Folder" program given in the previous section (called "Folder List"):

    // Write the variables in a folder into a list variable

    #define RETURN_VALUE dirlist

    #define USE_TI89
    #define USE_TI92PLUS
    #define USE_V200

    #include <args.h>
    #include <estack.h>
    #include <vat.h>

    void _main(void)
    {
      ESI argptr = top_estack;
      SYM_ENTRY *SymPtr = SymFindFirst (GetSymstrArg (argptr), 1);
      push_END_TAG ();
      while (SymPtr)
        {
          push_ANSI_string (SymPtr->name);
          SymPtr = SymFindNext ();
        }
      push_LIST_TAG ();
    }

The only difference between this program and the program in the previous section is in the usage of the `RETURN_VALUE` directive: in this example, it is followed with a variable name (`dirlist` in this example). If `RETURN_VALUE` is followed with a variable name (which must be a legal TI-Basic variable name in lowercase), the last value pushed to the expression stack would be stored in the TI-Basic variable with the given name. So, in this example, after execution of the program, the result of the program (a folder list) will be stored in TI-Basic variable called `dirlist` (if such variable does not exist, it will be created). See the previous section for more info about this example. I hope that this explanation is clear enough, so more detailed explanation is not necessary.