|
Wow... talk about being a little - mmm- forceful? Scott has a lot of points going for him. I point out that a closer analogy would be the English language as spoken in the U.S. today and in 1906. They are both clearly the same language, U.S. English, but there are THOUSANDS of words in the common vocabulary today that were not in the language a mere hundred years ago, and many idioms of that time would be senseless to us today, or at least mean something completely different. Example: Everyone today knows what SOS means. "Send an SOS!" has been common verbiage in the language for a long time. But in 1906, you would have gotten blank stares and strongly worded requests to 'make sense'. The code was adopted on Nov 22 1906. And it does not mean "Save Our Ship" or "Save Our Souls". It was just an easy to remember pattern... Today, a computer is an electronic instrument - but until the 1960's a 'computer' was a person who did computations. Often with the aid of a monster mechanical appliance like and adding machine... but still a person. Language evolves. And RPG as a language needed to evolve from it's beginnings, which were very primitive and not capable of being used in the way RPG is commonly used today. So basically, RPG *without* the cycle is RPG used to handle things that the RPG is simply unsuited to handle - like event driven windows programs. And RPG with /FREE syntax is RPG that retains it basic identity, just like English has for the last 100 years, but is far richer and able to express information about contemporary issues. Some things we will like, some things we won't, but it will either evolve or die. The RPG available on OS/360 would write reports just fine - but drive an interactive program? Not a chance. -Paul
-----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of James H H Lampert Sent: Sunday, December 10, 2006 9:01 PM To: RPG programming on the AS400 / iSeries Subject: spam: Re: Does anyone use indicators anymore? 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 -- 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.
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.