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



Scott Klement <rpg400-l@xxxxxxxxxxxxxxxx> wrote:

Take a look at the first model of telephone released by Bell. Then look at today's cell phones. They don't look
anything alike, do they?  But they're still called
telephones.

Take a look at the cars that were originally made popular in the early 1900's, and then look at todays
cars.  They look nothing alike, yet are still called cars.

Scott, you should be ashamed of yourself! We're programmers. We specialize in logic. We should be above such obvious fallacies as the False Analogy, and yet you answer me with a whole string of them!

Just to take the first two.

No, a modern cellular telephone doesn't look or work anything like a c. 1880 wood-box wall phone (the kind with 2 bells and a carbon mic sticking out of the front, a crank on one side, and an earpiece on the otherside). Or a 1919 "dial candlestick" model. Or the sort of landline phones we've been using for over 3 quarters of a century, with the mic and earpiece in a common handset.

But everything I've mentioned shares a few common characteristic properties that define (both conceptually and operationally) what a telephone IS. It is an electronic (this rules out speaking tubes) device for transmitting private conversations (which rules out CB, Ham, and commercial radio) by full-duplex (that rules out cellular push-to-talk systems that simply emulate what a simple handie-talkie does) audio (which rules out even full-duplex telegraphy) over a distance. It is THAT, and NOT APPEARANCE, CONSTRUCTION, OR EVEN TECHNOLOGY (beyond basic electronics) that defines "telephone-ness."

Likewise, whether you're talking about a c. 1890 Duryea, or a curved-dash Oldsmobile, or a Model T Ford, or my own 1998 Toyota Camry, or a formula-1 race car, all automobiles are partially or completely enclosed (which eliminates motorcycles) mechanically-propelled (which eliminates a horse and buggy, but accepts all non-biological sources of motive power) vehicles (which eliminates riding lawnmowers and ice resurfacers, for which "vehicle" is not the primary function, but merely a means to the end of cutting grass or ice) that can carry a driver, and optionally a small number of passengers and/or a small amount of cargo (eliminating trucks, which carry large amounts of cargo, and tractors, which pull farm equipment, possibly supplying it with mechanical, electic, or hydraulic power) at street-legal or greater speeds (eliminating golf and maintenance carts), on ordinary roads (eliminating trains and trolleys) without any predetermined route (eliminating buses). None of the differences between a modern automobile and what Daimler and Benz built in 1885 affect their "automobile-ness" in the slightest.

Programming languages are defined by certain characteristic properties as well. Like natural language, they're defined by vocabulary, syntax, and semantics; in addition, they are also defined by their capabilities. FORTRAN is defined by a free-format syntax (traditionally constrained to the range from columns 7 and 72) based largely on algebra, by each procedure (whether main, subroutine, or function) being almost entirely isolated from all others, by an impressive mathematical palette, and by built-in I/O statements that traditionally include format-statement-directed and namelist-directed I/O (even if list-directed free-format I/O has since been grafted on.

COBOL, similarly, is defined in terms of vocabulary, syntax, and semantics that is, in effect, a stylized form of Business English, designed to be self-documenting and as understandable as possible for non-programmers. Thus, for a simple calculation of subtracting a credit from a total, while it is certainly possible to use a COMPUTE statement
    COMPUTE TOTAL = TOTAL - CREDIT
such constructs are frowned upon for simple calculations, and the more idiomatic (and understandable to the non-computer-literate)
    SUBTRACT CREDIT FROM TOTAL
is preferred. COBOL is also defined in terms of the ability to define record structures hierarchically, and by a highly ordered source format broken down into "divisions." The ALGOLs (including Pascal) are defined in terms of making the actual language itself as small as possible, with everything other than assignment and branching treated as direct calls to runtime routines, and in terms of defining "=" as the equality operator, and ":=" as the assignment operator. PL/I is defined by its extreme inclusiveness, while C and its derivatives are defined in terms of their case-sensitivity, their use of naked pointers as strings, and the ease with which one can screw up in them (excepting, of course, Java).

The things that make RPG RPG, in my assessment, are the unique syntax, the ability to call external programs whose names are not known at compile-time, its rich palette of report-generation functionality and above all else, The Cycle.

One need not use level breaks, or any other report-specific features of The Cycle, in order to use The Cycle. At its root, it is simply a "do until told to stop" loop in which all RPG programs live. If you define a Primary File, then The Cycle will read the next record from that file with each iteration, and an EOF condition on the fill will tell the program to stop. Otherwise, you have to tell it to stop some other way, such as turning on LR in response to a particular AID key, or doing a RETURN at the end of only one iteration.

What you DO with the implicit do-until-told-to-stop loop, or with records automatically read from a primary file IS YOUR OWN BUSINESS. A Cycle program doesn't have any more need to use level breaks (I don't think I've ever done so, and I've written over a dozen Cycle programs), or any other report-specific constructs, any more than a non-Cycle program has any need to do so.

But getting back to the syntax, if you're NOT USING TRADITIONAL RPG SYNTAX, and you're NOT USING THE ABILITY TO CALL PROGRAMS WHOSE NAMES ARE NOT KNOWN AT COMPILE-TIME, and you're NOT USING THE CYCLE, then what are you bothering using RPG for at all? And if RPG/Free is not even recognizable as RPG code, and indeed, it looks more like PL/I than RPG, then why does IBM persist in calling it RPG? Why not give it a name that reflects its nature of going beyond RPG, much the same way object-oriented derivatives of C are called by such names as Objective C, C++, C#, and (of course) Java?

--
JHHL

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.