× 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: Re: COBOL and RPG was Welcome new members
  • From: Jon.Paris@xxxxxxxxxx
  • Date: Thu, 2 Dec 1999 13:46:24 -0500



I am "bilingual" and was involved in the compiler design for the current RPG and
COBOL compilers for the 400.  SO I like each for its strengths and work with the
compiler folks to suggest places where features of one can be used in the other.
The LIKE keyword in COBOL and the new date support in the language being
examples of the kind of thing I mean.

Other replies below and that's it - as much fun as it is, this wastes too much
time.








Howard Weatherly <hweatherly@dlis.dla.mil> on 12/02/99 10:14:44 AM

Please respond to COBOL400-L@midrange.com
                                                                                
                                                                                
                                                                                


                                                              
                                                              
                                                              
 To:      COBOL400-L@midrange.com                             
                                                              
 cc:      (bcc: Jon Paris/HAL/IT)                             
                                                              
                                                              
                                                              
 Subject: COBOL and RPG was Welcome new members               
                                                              







Jon, +-999,999,999,999,999,999 is a rather large number, unless we are talking
about
how much money the government wastes....:-)

File erors are trapped by using Declaratives and yes the declarations can trap
or do
anything!

<<< You mean you know someone who can actually make that feature do something
useful! I always code for file status - its far simpler.<<<

You certainly can have duplicate names in multiple structures as long as you
qualify
the name using the structure, the structure can ascend to the file name for file
data and to the 1 level for storage data. You can not have duplicate level 77
items,
no way to qualify, you can have duplicate 1 levels as long as you provide
redefinition (although this is not very useful, there are times when 1 levels
are
coppied as file records which are qualified to the file).
The corresponding is very useful for element extraction when you want to
rearrange
data without writing a novel, and example is dates (move corr date1 to date2
where
date1 is mmddyyyy and date2 is yyyymmdd) or if I dont want replication, (move
corr
field1 to field2 where field1 has 10 fields A thru J and field 2 has every other
of
A C E...).

<<< I'm very familiar with these features and can't think what I said to prompt
this comment. Qualification of reference can be very useful, but the notion that
one name = one piece of data is fundamental to the RPG language and cannot
easily be changed.  When designing RPG IV we looked at a number of ways of
bringing this into the langauge while maintaining compatibility but couldn't
come up with a good one. Effectively Move Corresponding is a code generating
statement and similar syntax should be possible in RPG - maybe one day.
Interstingly enough, I was responsible for the addition of the ability to have
the COBOL 400 compiler list the fields that "corresponded". Why did we add it?
becuase 90% of all the COBOL programmers we talked to did not use Move
corresponding because they couldn't work out what did and did not correspond!<<<


While I am not sure what you mean by prototyping, I suspect you mean define it
once
use it everywhere? Yes we can! (copy something replacing X by Y) and for
subprocedures? I do not know what you mean here, but whatever it is, it can be
done!

<<< Prototyping is the ability to define what the parameters and return value on
a call should look like. That way the compiler can validate that the call is
correct (and in some circumstances can generate temporary fields and move the
data to ensure a match. COBOL _cannot_ do this in any dialect I have ever seen.
Subprocedures provide an ability to extend the scope of the langauge (much like
C functions). If I have a subprocedure that calculates the day of the week given
a date then in RPG I can code: Eval DayNumber = DayOfWeek(TheDate).  In COBOL
this can only be done through CALL 'DayOfWeek" Using TheDate Returning
DayNumber. Not quite so elegant is it - and the RPG will validate the parameters
the COBOL cannot.<<<

Now let me say this about both COBOL and RPG, I like RPG when it is used for
reports, that is where it makes the most sense to me, I like the Cycle doing the
work and the ease with which reports can be modified. The fact that you may need
some calcs does not bother me either, I can also tolerate a forced read now and
agian and some file extensions for table processing, but once the line is
crossed
(and this line is different for everyone) I find that RPG wil lose its ability
to be
coherent (to me) whereas a well written COBOL program (the key word is "well
written") has the ability to allow me to understand the process(s) without being
familliar with the system. I can not do that with an RPG program, of course if
maybe
I used RPG as much as I use COBOL, my tolerance line would shift probably.

<<< I can't help feel that you're comparing RPG II with COBOL.  I _never_ use
the RPG cycle and it is not taught in most of the schools these days. An RPG
program written with the same degree of skill as a COBOL one should be every bit
as easy to understand<<<

Jon.Paris@halinfo.it wrote:

> For the most part I agree that there are still a number of features that are
> present in COBOL that RPG lacks.  As to your individual comments:
>
> - Indented code
>
> This is supported to a limited degree in D specs and C specs.  There will
likely
> be full support in C specs in the next RPG release.
>
> - long field names (and be able to use them in calcs)
>
> You mean 2056 characters isn't enough <grin>.  In practice I find the current
> (practical) limit of 14 to be more than adequate.  If I recall correctly the
> COBOL maximum is 30 but I never used them all. By contrast RPG supports 30
digit
> numerics while COBOL's default behavior is still 18. Now that _is_ a
limitation
> that I have hit.
>
> - record handling
>
> Not clear what you mean by this. By using RPGIV's externally described DS
> support together with the Prefix keyword I can handle things at the record
> level.
>
> - error trapping in free-format calcs (like EVAL x=y * z ON ERROR do something
> else)
>
> This has been "announced" by IBM in the form of the MONITOR group, which in
many
> ways is superior to COBOL's On error (which doesn't handle all errors by the
> way). They are considering the possibility of allowing this to be more
granular
> (a la COBOL) but MONITOR is probably better since in general I don't care if a
> single statement "blows" I want to know if anything goes wrong in a logically
> related group of statements.
>
> - data replication: move CORR to replicate data to fields of same name in
other
> records
>
> There has never been a need for this in absolute terms since you cannot have
two
> fields of the same name in different structures. I would love to see them do a
> similar thing though where the field prefix governed which fields were alike.
>
> - (and the converse: unlike RPG, dont replicate the data if the programmer
> doesnt want to!)
>
> You can already handle this with Prefix at the file level.
>
> The one biggie that COBOL is missing for me is prototyping of program calls
and
> the ability to define subprocedures. These have made a huge difference in my
RPG
> coding but I can't do it in COBOL.
>
> +---
> | This is the COBOL/400 Mailing List!
> | To submit a new message, send your mail to COBOL400-L@midrange.com.
> | To subscribe to this list send email to COBOL400-L-SUB@midrange.com.
> | To unsubscribe from this list send email to COBOL400-L-UNSUB@midrange.com.
> | Questions should be directed to the list owner/operator: david@midrange.com
> +---END

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




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



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.