|
Thomas,
I agree with you regarding Camel Case, but do not see any benefit on adding
EXTPROC unless the procedure will in fact be exported. If it is just
internal, than it serves no purpose.
Jeff Young
Sr. Programmer Analyst
On Wed, Feb 1, 2017 at 4:13 PM, Tools/400 <thomas.raddatz@xxxxxxxxxxx>
wrote:
Jeff,
I gree with you regarding the EXPORT keyword, since the cvt2F()
procedure is for internal use only.
But I do not agree with you regarding the EXTPROC keyword. Reading a
stack trace or an error message is a lot easier, when the procedure name
is shown in camel case. Just my opinion and not necessarily yours.
Also it was a good idea, at least for our development team, to prefix
the external procedure names with the name of the module. This way it is
very easy to find the module that contains a procedure, e.g. when
displaying the exported procedures of a service program with DSPSRVPGM.
Or it is easy to find the module for a given unresolved referenced item.
I love camel case and the module name prefix, e.g.:
Exported procedure:
*
* Opens a job log.
D JobLog_open...
D PR like(JobLog_handle_t)
D extproc('JOBLOG1_+
D JobLog_open+
D ')
D i_qJob const likeds(qJob_t)
D options(*nopass: *omit)
D i_options const like(JobLog_options_t)
D options(*nopass: *omit)
D i_direction const like(JobLog_direction_t)
D options(*nopass: *omit)
D i_strMsgKey const like(JobLog_msgKey_t)
D options(*nopass: *omit)
Internal procedure:
*
* ------------------------------------
* Internal prototypes
* ------------------------------------
*
* Opens the job log and returns the first entry.
D openJobLog...
D PR n
D extproc('openJobLog')
D i_qJob const likeds(qJob_t)
D i_options const like(JobLog_options_t)
D i_direction const like(JobLog_direction_t)
D i_msgKey const like(JobLog_msgKey_t)
D o_listInf likeds(qgy_opnListInf_t)
D o_options likeds(listOptions_t)
D o_errCode likeds(errCode_t)
DSPSRVPGM SRVPGM(JOBLOG) DETAIL(*PROCEXP):
JOBLOG1_JobLog_open
JOBLOG1_JobLog_getEntry
JOBLOG1_JobLog_close
JOBLOG1_JobLog_getNewest
JOBLOG1_JobLog_getOldest
JOBLOG1_JobLog_getMessageType
JOBLOG1_JobLog_isNull
JOBLOG1_JobLog_null
Of course it is more work to add the EXTPROC keyword to prototypes of
internal procedures and in fact it is even more work for for **free. But
it is worth the effort for me.
Just my two cents.
Thomas.
Am 01.02.2017 um 20:58 schrieb Jeff Young:
Scott,reading
You do not want the EXTPROC on the Prototype if your procedure is in the
same module.
You also do not want the EXPORT value on the Procedure Interface.
Jeff Young
Sr. Programmer Analyst
On Wed, Feb 1, 2017 at 2:47 PM, Scott Williams <scottwill0707@xxxxxxxxx>
wrote:
Been trying to learn procedures, and having some difficulty. After
confused.examples online, I've found myself going in circles and even more
theI feel like I'm throwing knifes in a dark room...
I'm attempting to create a very simple procedure that converts a given
numeric value into another. In this case, a value in Celsius to be
converted to Fahrenheit.
I can't seem to get my PR and PI sorted out, and/or the positioning of
letP spec decs. Do I create this as a module, or a bound program? Please
properlyme know what I am doing wrong. I would like to understand how to
ideas.use a procedure so I can extrapolate this simple example into larger
(Machine is 7.1 version of the OS)
HDFTACTGRP(*NO)
HMAIN(C2F)
D CVT2F PR 5S 2 EXTPROC('C2F')
D
D $C 5S 2 VALUE
D$F S 5S 2
/FREE
$F = C2F($C);
DSPLY $F;
*INLR = *ON;
/END-FREE
PC2F B EXPORT
DC2F PI 5S 2
D $C 5S 2 VALUE
D$F S 5S 2
/FREE
$F = (($C * 1.8) + 32);
RETURN $F;
/END-FREE
P E
Thanks in advance!
--
Scott Williams
--
This is the RPG programming on the IBM i (AS/400 and 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.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
This is the RPG programming on the IBM i (AS/400 and 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.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
As an Amazon Associate we earn from qualifying purchases.
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.