[comp.lang.pascal] ASTPRM Declaration in Vax Pascal

dwayne@rover.bsd.uchicago.edu (08/25/89)

Hey!!!!

    Does any know the appropriate calling mechanism for an ast parameter.

I'm declaring the thing like this:

[ASYNCHRONOUS] PROCEDURE uis$set_pointer_ast (              
        VD_ID0 : UNSIGNED;                                  
        WD_ID0 : UNSIGNED;                                  
        %IMMED [UNBOUND, ASYNCHRONOUS] PROCEDURE ASTADR;    
        ASTPRM : UNSIGNED;                                  
        X1 : SINGLE;                                        
        Y1 : SINGLE;                                        
        X2 : SINGLE;                                        
        Y2 : SINGLE;                                        
        %IMMED [UNBOUND, ASYNCHRONOUS] PROCEDURE EXITASTADR;
        EXITASTPRM : UNSIGNED); EXTERNAL;

I'm declaring my ast's like this:

[unbound,ASYNCHRONOUS] PROCEDURE ENT_MENU_AST(slot:integer);                                                                        
    BEGIN                                                                                                                           
        uis$text (VD_ID,1,ITEMS[SLOT],LOCX[SLOT],LOCY[SLOT]);                                                                       
    END;                                                                                                                            

[unbound,ASYNCHRONOUS] PROCEDURE EXIT_MENU_AST(slot:integer);                                                                       
    BEGIN                                                                                                                           
        uis$text (VD_ID,0,ITEMS[SLOT],LOCX[SLOT],LOCY[SLOT]);                                                                       
    END;                                                                                                                            

and i'm calling the thing like this:

        FOR X:=1 TO NUMITEMS DO                                                                        
            BEGIN                                                                                      
                LOCX[X]:=0.1;                                                                          
                LOCY[X]:=(NUMITEMS-X+0.8)/NUMITEMS;                                                    
                uis$text (VD_ID,0,ITEMS[X],LOCX[X],LOCY[X]);                                           
                uis$set_pointer_ast (VD_ID,WD_ID,ENT_MENU_AST,X,                                       
                        0.0,(NUMITEMS-X+1.0)/NUMITEMS,1.0,(NUMITEMS-X)*1.0/NUMITEMS,EXIT_MENU_AST,X);  
            END;                                                                                       

I want to pass the value of x back for whichever AST get's answered.

Does any one know what I'm doing wrong??


I get this at compile time, and the debugger verifies that the asts are not getting their parameters:

00157      1  2                 uis$set_pointer_ast (VD_ID,WD_ID,ENT_MENU_AST,(X),0.0,(NUMITEMS-X+1.0)/NUMITEMS,1.0,(NUMITEMS-X)*1.0
/NUMITEMS,EXIT_MENU_AST,(X));                                                                                                       
                                                                 1                                                                  
          2                                                                                                                         
%PASCAL-I-NOFRMINDECL, (1) Declaration of PROCEDURE parameter ASTADR supplied no formal parameter list                              
%PASCAL-I-NOFRMINDECL, (2) Declaration of PROCEDURE parameter EXITASTADR supplied no formal parameter list                          
%PASCAL-S-ENDDIAGS, PASCAL completed with 2 diagnostics                                                                             


Thanks for any help anyone has!!

Dwayne
dwayne@rover.bsd.uchicago.edu