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 ...

+ Reply to Thread
Results 1 to 2 of 2

local variable is changed when changing global variable inside procedure

  1. Default 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å



  2. Default 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




+ Reply to Thread

Similar Threads

  1. global const variable being local to a file by default
    By Application Development in forum c++
    Replies: 6
    Last Post: 12-02-2007, 04:24 AM
  2. Export local variable to global variable scope?
    By Application Development in forum PHP
    Replies: 16
    Last Post: 09-30-2007, 12:51 PM
  3. Re: creating sub-VI with local variable inside?
    By Application Development in forum labview
    Replies: 2
    Last Post: 09-21-2007, 12:40 AM
  4. ADO errors after changing SP to use local variable to avoid sniffi
    By Application Development in forum ADO DAO RDO RDS
    Replies: 0
    Last Post: 04-19-2007, 09:48 AM
  5. save local variable as global
    By Application Development in forum basic.visual
    Replies: 15
    Last Post: 03-09-2007, 03:04 PM