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



Doug,

A subprocedure is, for simplicity of explanation, another way to write a subroutine. They may be contained within a main (cycle) program (CRTBNDRPG) or within a module (CRTRPGMOD) or a service program (CRTSRVPGM). In either case, assuming you're contemplating using RPG IV to write these, the source type is RPGLE (I gave Cobol up for Lent - 1976).


May I suggest that, since you are just getting started with subprocedures, your initial task be to use a subprocedure in a mainline program. Or convert an existing subroutine to a subprocedure.


Within the D-Specs of the mainline you must define a prototype for the subprocedure:

D SomeProc PR
D FieldA 10a
D FieldB 5p 0

Within the subprocedure itself, a matching interface must be defined:

P SomeProc B

D SomeProc PI
D WorkA 10a
D WorkB 5p 0

The prototype field names mean nothing (they're not even listed in the compiled listing); only the dimensions are relevant - and must match the dimensions and order of the PI definitions. The interface (PI) field names are relevant and are used in the subprocedure like any other field.


To access the subprocedure:

/free
SomeProc(Name:Customer);
/end-free
The fields Name and Customer must have the same dimensions as the prototype; the compiler will check this and say nasty things about your mother if you violate the rule. (For Fixed format, use the CallP op-code.) WorkA and WorkB, unless defined in the mainline, are local variables to the subprocedure; another subprocedure could use the same local variables with different dimensions. Kinky! Actually it's very similar to calling an external program.


This is a very simplistic overview, but having been where it sounds like you are, this little bit of knowledge is what I started with and then built upon. The approach that I took, when initially learning how to do subprocedures, was to simply use them as I otherwise would have used subroutines in a mainline program. I.e., I didn't try to water the desert; just one little cactus.

* Jerry C. Adams
*IBM System i Programmer/Analyst
B&W Wholesale Distributors, Inc.* *
voice
615.995.7024
fax
615.995.1201
email
jerry@xxxxxxxxxxxxxxx <mailto:jerry@xxxxxxxxxxxxxxx>



Doug Palme wrote:
Thanks Charles, I appreciate your patience with my inherent stupidity....and
I was able to determine the prompt type as PR.

Mucho appreciated.

Douglas


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Wilt, Charles
Sent: Friday, July 20, 2007 10:20 AM
To: RPG programming on the AS400 / iSeries
Subject: RE: Sub-Procedures

If you're writing the procedure in RPGLE, then the source type is RPGLE.

HTH,
Charles


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Doug Palme
Sent: Friday, July 20, 2007 11:16 AM
To: 'RPG programming on the AS400 / iSeries'
Subject: RE: Sub-Procedures

Then what would the source type be?


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Michael Ryan
Sent: Friday, July 20, 2007 10:03 AM
To: RPG programming on the AS400 / iSeries
Subject: Re: Sub-Procedures

Probably not. It would probably be created as a module with CRTRPGMOD, and then bound into a program or service program.

On 7/20/07, Doug Palme <dpalme@xxxxxxxxxxx> wrote:
This is probably a very rudimentary question about sub-procedures ( have
not
used them in the past) and I am going through the IBM Red
Book, but as
for setting up the source physical file, am I correct in the assumption that a sub-procedure, when it is a standalone module, is still created as you would normally create an RPGLE program?




**************************************************************
**************
This transmission may contain information that is privileged, Confidential and/or exempt from disclosure under applicable law.
If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you.

**************************************************************
**************
--
This is the RPG programming on the AS400 / iSeries
(RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx Before posting,
please take a
moment to review the archives at
http://archive.midrange.com/rpg400-l.
--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.






**************************************************************
**************
This transmission may contain information that is privileged,
Confidential and/or exempt from disclosure under applicable law.
If you are not the intended recipient, you are hereby notified that
any disclosure, copying, distribution, or use of the information
contained herein (including any reliance thereon) is STRICTLY
PROHIBITED. If you received this transmission in error, please
immediately contact the sender and destroy the material in its
entirety, whether in electronic or hard copy format. Thank you.
**************************************************************
**************

--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




This e-mail transmission contains information that is intended to be
confidential and privileged. If you receive this e-mail and you are not a
named addressee you are hereby notified that you are not authorized to read,
print, retain, copy or disseminate this communication without the consent of
the sender and that doing so is prohibited and may be unlawful. Please
reply to the message immediately by informing the sender that the message
was misdirected. After replying, please delete and otherwise erase it and
any attachments from your computer system. Your assistance in correcting
this error is appreciated.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

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.