Progress
Programming
Handbook


Programming Example

The following example consists of three procedure files: a main routine, a driver, and a third procedure file that becomes a super procedure of the driver.

The main routine, procedure file p-pomain.p, runs the driver procedure persistently:

p-pomain.p
/* p-pomain.p */ 
DEFINE VARIABLE h AS HANDLE. 
DEFINE VARIABLE a AS CHARACTER. 
FUNCTION sample2 RETURNS CHARACTER (INPUT-OUTPUT a AS CHARACTER) IN h. 
RUN p-podrvr.p PERSISTENT SET h. 
RUN sample1 IN h (INPUT-OUTPUT a). 
MESSAGE a VIEW-AS ALERT-BOX. 
a = "". 
MESSAGE sample2(a) VIEW-AS ALERT-BOX. 

The driver, procedure file p-podrvr.p, runs the third procedure file persistently, makes it a super procedure of itself, defines the internal procedure sample1, and defines the user-defined functions sample2, GetPartName, and SetPartName:

p-podrvr.p
/* p-podrvr.p */ 
FUNCTION SetPartName RETURNS INTEGER (INPUT a AS CHARACTER) FORWARD. 
DEFINE VARIABLE h AS HANDLE. 
DEFINE VARIABLE localPartName AS CHARACTER. 
/* Add a super procedure */ 
RUN p-posupr.p PERSISTENT SET h. 
THIS-PROCEDURE:ADD-SUPER-PROCEDURE (h). 
SetPartName("2000 Calendar"). 
PROCEDURE sample1: 
    DEFINE INPUT-OUTPUT PARAMETER a AS CHARACTER. 
    a = a + "proc: Part name is: ". 
    /* Invoke procedure sample1 in the super procedure. */ 
    RUN SUPER (INPUT-OUTPUT a). 
END PROCEDURE. 
FUNCTION sample2 RETURNS CHARACTER (INPUT-OUTPUT a AS CHARACTER). 
    a = a + "func: Part name is: ". 
    /* Invoke function sample2 in the super procedure. */ 
    SUPER (INPUT-OUTPUT a). 
    RETURN a. 
END FUNCTION. 
FUNCTION GetPartName RETURNS CHARACTER (): 
    RETURN localPartName. 
END FUNCTION. 
FUNCTION SetPartName RETURNS INTEGER (INPUT partname AS CHARACTER): 
    localPartName = partname. 
END FUNCTION. 

The third procedure file, p-posupr.p, defines a new version of the internal procedure sample1 and a new version of the user-defined function sample2:

p-posupr.p
/* p-posupr.p */ 
DEFINE VARIABLE h AS HANDLE. 
FUNCTION GetPartName RETURNS CHARACTER () IN H. 
PROCEDURE sample1: 
    DEFINE INPUT-OUTPUT PARAMETER a AS CHARACTER. 
    h = TARGET-PROCEDURE. 
    a = a + GetPartName(). 
    MESSAGE "TARGET-PROCEDURE is:" TARGET-PROCEDURE:FILE-NAME 
        VIEW-AS ALERT-BOX. 
    MESSAGE "SOURCE-PROCEDURE is:" SOURCE-PROCEDURE:FILE-NAME 
        VIEW-AS ALERT-BOX. 
END PROCEDURE. 
FUNCTION SAMPLE2 RETURNS CHARACTER (INPUT-OUTPUT a AS CHARACTER): 
    h = TARGET-PROCEDURE. 
    a = a + GetPartName(). 
    RETURN a. 
END. 

To start the example, run p-pomain.p.


Copyright © 2004 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095