It works on 7.5.01 alpha...
I had problem using 7.5.00

thanks anyway

joannes
  ----- Original Message ----- 
  From: Joannes Capitanio 
  To: [EMAIL PROTECTED] 
  Sent: Saturday, June 12, 2004 11:55 AM
  Subject: Function parameters value after another function call


  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