static void pas_ProcStatement(void) { STYPE *procPtr = tknPtr; int size = 0; TRACE(lstFile,"[pas_ProcStatement]"); /* FORM: procedure-method-statement = * procedure-method-specifier [ actual-parameter-list ] * * Skip over the procedure-method-statement */ getToken(); /* Get the actual parameters (if any) associated with the procedure * call. */ size = actualParameterList(procPtr); /* Generate procedure call and stack adjustment (if required) * Upon return from the procedure, the level stack pointer (LSP) * may also be invalid. However, we rely on level level logic in * pgen.c to manage this case (as well as the function call case). */ pas_GenerateProcedureCall(procPtr); if (size) { pas_GenerateDataOperation(opINDS, -size); } }
static void valProc(void) /* VAL procedure */ { int size; TRACE(lstFile, "[valProc]"); /* Declaration: * procedure val(const S : string; var V; var Code : word); * * Description: * val() converts the value represented in the string S to a numerical * value, and stores this value in the variable V, which can be of type * Longint, Real and Byte. If the conversion isn��t succesfull, then the * parameter Code contains the index of the character in S which * prevented the conversion. The string S is allowed to contain spaces * in the beginning. * * The string S can contain a number in decimal, hexadecimal, binary or * octal format, as described in the language reference. * * Errors: * If the conversion doesn��t succeed, the value of Code indicates the * position where the conversion went wrong. */ /* Skip over the 'val' identifer */ getToken(); /* Setup the actual-parameter-list */ size = actualParameterList(valSymbol); /* Generate the built-in procedure call. NOTE the procedure call * logic will release the parameters from the stack saving us from * having to generate the INDS here. */ pas_BuiltInFunctionCall(lbVAL); } /* end writelnProc */