Hi,

We wrote the following function like an entry point for a particular user's permission 
function:

Here's the source of the function...

CREATE FUNCTION HASPERMONMENU (
    MENUENTRYID CHAR(50),
    GRANTEDCOMPANYID FIXED(9,0),
    GRANTEDHUMANRESOURCEID FIXED(9,0),
    GRANTEDDSTARTCHR TIMESTAMP,
    PERMISSIONTYPEID FIXED(9,0))
RETURNS NUMBER AS

    VAR MSG VARCHAR(4000);
    L_MENUENTRYID CHAR(50);
    L_GRANTEDCOMPANYID FIXED(9,0);
    L_GRANTEDHUMANRESOURCEID FIXED(9,0);
    L_GRANTEDDSTARTCHR TIMESTAMP;
    L_PERMISSIONTYPEID FIXED(9,0);
BEGIN
    SET L_MENUENTRYID=MENUENTRYID;
    SET L_GRANTEDCOMPANYID=GRANTEDCOMPANYID;
    SET L_GRANTEDHUMANRESOURCEID=GRANTEDHUMANRESOURCEID;
    SET L_GRANTEDDSTARTCHR=GRANTEDDSTARTCHR;
    SET L_PERMISSIONTYPEID=PERMISSIONTYPEID;

    DELETE FROM PPORTAL.LOG_TABLE;

    SET MSG='CALLING --> FUNCTION HASPERMONMENU';
    CALL PPORTAL.MYPUTLINE(:MSG);
    
    SET MSG='BEFORE...';
    CALL PPORTAL.MYPUTLINE(:MSG);
    SET MSG='L_MENUENTRYID='||L_MENUENTRYID;
    CALL PPORTAL.MYPUTLINE(:MSG);
    SET MSG='MENUENTRYID='||MENUENTRYID;
    CALL PPORTAL.MYPUTLINE(:MSG);
 
    IF GRANTEDCOMPANYID IS NULL OR GRANTEDHUMANRESOURCEID IS NULL OR GRANTEDDSTARTCHR 
IS NULL OR
            MENUENTRYID IS NULL OR PERMISSIONTYPEID IS NULL THEN
        RETURN 0;
    
    IF ISEMPLOYEEINCONTEXT(L_GRANTEDCOMPANYID, L_GRANTEDHUMANRESOURCEID, 
L_GRANTEDDSTARTCHR)=0 THEN
        RETURN 0;

    SET MSG='AFTER';
    CALL PPORTAL.MYPUTLINE(:MSG);
    SET MSG='L_MENUENTRYID='||L_MENUENTRYID;
    CALL PPORTAL.MYPUTLINE(:MSG);
    SET MSG='MENUENTRYID='||MENUENTRYID;
    CALL PPORTAL.MYPUTLINE(:MSG);
    
    RETURN 1;
END;
//

MYPUTLINE is simply a dbprocedure that writes a result on a logging table...

Here's the trace retrieved from the "logging table"

2004-06-12 11:17:35.509124 CALLING --> FUNCTION HASPERMONMENU
2004-06-12 11:17:35.509502 BEFORE...
2004-06-12 11:17:35.509802 L_MENUENTRYID=test
2004-06-12 11:17:35.510109 MENUENTRYID=test
2004-06-12 11:17:35.510480 CALLING --> FUNCTION ISEMPLOYEEINCONTEXT
2004-06-12 11:17:35.510788 COMPANYID=1
2004-06-12 11:17:35.511079 HUMANRESOURCEID=200027
2004-06-12 11:17:35.511376 DSTARTCHR=2004-05-26 00:00:00.000000
2004-06-12 11:17:35.512276 AFTER
2004-06-12 11:17:35.512610 L_MENUENTRYID=test
2004-06-12 11:17:35.512918 MENUENTRYID=

as you can see the value of parameter MENUENTRYID disappears... and the same thing 
happens for the others parameters... (GRANTEDCOMPANYID, GRANTEDHUMANRESOURCEID , 
etc...) Note that MENUENTRYID is not used inside the function... so its value doesn't 
change at all...


thanks in advance

Joannes

Reply via email to