local variable is changed when changing global variable inside procedure - pl1
This is a discussion on local variable is changed when changing global variable inside procedure - pl1 ; A procedure call
CALL OVERFØR_PKU_PKI(DCLV012223.VNR_ISO,' ',
DCLV012223.AKS_BEV_AKSJEBEH);
to the following procedure
OVERFØR_PKU_PKI: PROC(VNR,TYPE,SUM);
DCL VNR CHAR(12);
PUT SKIP LIST('VNR '!!VNR);
DCL TYPE CHAR(3);
DCL SUM FIXED DEC(15);
TELLER = TELLER + 1;
DCLV012223 = '';
..
..
..
PUT SKIP ...
-
local variable is changed when changing global variable inside procedure
A procedure call
CALL OVERFØR_PKU_PKI(DCLV012223.VNR_ISO,' ',
DCLV012223.AKS_BEV_AKSJEBEH);
to the following procedure
OVERFØR_PKU_PKI: PROC(VNR,TYPE,SUM);
DCL VNR CHAR(12);
PUT SKIP LIST('VNR '!!VNR);
DCL TYPE CHAR(3);
DCL SUM FIXED DEC(15);
TELLER = TELLER + 1;
DCLV012223 = '';
..
..
..
PUT SKIP LIST('VNR1 '!!VNR);
gives a result that indicates that the
DCLV012223 = '';
statement has also blanked the VNR variable
How can this be possible? I would have expected that a change of a global
variable inside i procedure should not influate on the local variable
Bjørn Solbrå
-
Re: local variable is changed when changing global variable inside procedure
"Bjørn Solbrå" <bjs@privat.vps.no> wrote in message
news:dthv0j$hb9$1@bat-news01.banetele.basefarm.net...
>A procedure call
>
> CALL OVERFØR_PKU_PKI(DCLV012223.VNR_ISO,' ',
> DCLV012223.AKS_BEV_AKSJEBEH);
>
> to the following procedure
>
> OVERFØR_PKU_PKI: PROC(VNR,TYPE,SUM);
> DCL VNR CHAR(12);
> PUT SKIP LIST('VNR '!!VNR);
> DCL TYPE CHAR(3);
> DCL SUM FIXED DEC(15);
> TELLER = TELLER + 1;
> DCLV012223 = '';
> .
> PUT SKIP LIST('VNR1 '!!VNR);
>
> gives a result that indicates that the
>
> DCLV012223 = '';
>
> statement has also blanked the VNR variable
Of course. PL/I uses 'call by reference'.
> How can this be possible? I would have expected that a change of a
> global variable inside i procedure should not influate on the local
> variable
If you want to do a 'call by value', enclose it in parentheses on the
call, ie
CALL OVERFØR_PKU_PKI((DCLV012223.VNR_ISO),' ',
DCLV012223.AKS_BEV_AKSJEBEH);
Robert
--
Robert AH Prins
prino at prino dot plus dot com
Similar Threads
-
By Application Development in forum c++
Replies: 6
Last Post: 12-02-2007, 04:24 AM
-
By Application Development in forum PHP
Replies: 16
Last Post: 09-30-2007, 12:51 PM
-
By Application Development in forum labview
Replies: 2
Last Post: 09-21-2007, 12:40 AM
-
By Application Development in forum ADO DAO RDO RDS
Replies: 0
Last Post: 04-19-2007, 09:48 AM
-
By Application Development in forum basic.visual
Replies: 15
Last Post: 03-09-2007, 03:04 PM