× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: Procedure changing not passed values
  • From: "Marcin Sagan" <marcin_sagan@xxxxx>
  • Date: Tue, 10 Jul 2001 12:00:31 +0200

Hello everyone,
why when I call ProcA (code below) without parameters it gives me
"MCH3601-Pointer not set for location referenced." (what I am expected) but
when first call is with parms and second without  ProcA change values of
this (not passed!) parameters anyway?

Regards
Marcin

======================================================
h  Debug
h  Indent( '| ' )
h  Option( *NoDebugIO : *SrcStmt )
h  DftActGrp( *No )

d ProcA           pr
d  FPar1                         2a   Options( *NoPass : *Omit )
d  FPar2                         2a   Options( *NoPass : *Omit )
d  FPar3                         2a   Options( *NoPass : *Omit )

d APar1           s              2a
d APar2           s              2a
d APar3           s              2a

c                   CallP     ProcA( APar1 : *Omit : APar3 )
c                   Eval      APar1 = '--'
c                   Eval      APar2 = '++'
c                   Eval      APar3 = '!!'
c                   CallP     ProcA

c                   Eval      *InLr = *On

 *~~~~~~~~~~~~~~~~~~

p ProcA           b
d ProcA           pi
d  Par1                          2a   Options( *NoPass : *Omit )
d  Par2                          2a   Options( *NoPass : *Omit )
d  Par2                          2a   Options( *NoPass : *Omit )
d  Par3                          2a   Options( *NoPass : *Omit )


c                   If        %Parms > 0
c                   If        %Addr( Par1 ) <> *Null
c                   Eval      Par1 = '11'
c                   EndIF
c                   EndIF

c                   If        %Parms > 1
c                   If        %Addr( Par2 ) <> *Null
c                   Eval      Par2 = '22'
c                   EndIF
c                   EndIF

c                   If        %Parms > 2
c                   If        %Addr( Par3 ) <> *Null
c                   Eval      Par3 = '33'
c                   EndIF
c                   EndIF
  * What if we try to reach parms without checking?
c                   Eval      Par1 = 'AA'
  * Par2 Blow up on first calling with *Omit
c**                 Eval      Par2 = 'BB'
c                   Eval      Par3 = 'CC'

c                   Return

p ProcA           e
======================================================



+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.