The RPG Programming Resource – Directory & Links

 

From Mainframes.in – Home of Legacy & Mainframes Online

 

 

 

Mainframes.in – Home of Legacy & Mainframes Online

 

Legacy Software

 

Operating Systems

Midrange > OS/400, VMS

Mainframe > (MVS > OS/390 > z/OS), (VM > VM/CMS, VM/ESA, z/VM, VM/370, VM/390), (VSE > VSE/ESA), Aix, SVS, ALCS, IBSYS, DPXX, ,  OS/360, TPF,  IBM TOS

 

Databases

DB2, IMS DB/DC, VSAM, CA/IDMS, Unidata

 

Programming & Development Assembler, COBOL, PL-1, FORTRAN, REXX, C, SAS, JCL, RPG, SCOBOL

 

Transaction Processing Transaction Monitors, CICS

 

Legacy, Mainframe Outsourcing Directory

 

Legacy Hardware

 

Mainframe Hardware

S/390 Hardware, z/Series Hardware, IBM Hardware

 

Midrange Hardware

AS/400 Hardware, RS/6000 Hardware, VAX Hardware

 

Legacy & Non-legacy

 

Legacy & Contemporary OS

Legacy & Linux, Legacy & Unix, Legacy & Windows

 

Legacy & Contemporary Databases

Legacy & Oracle, Legacy & SQL Sever, Legacy & MySQL

 

Legacy & Networking

Legacy & LAN, Legacy & Client/Server

 

Legacy & Contemporary Programming Languages

 

Legacy & Mainframe Migration

 

Legacy Companies

 

Other Sites from eSource India

 

IT, Mainframes (also this), AML, Analytics, Databases, EAI, CRM, Legacy, Legacy 2 Web, Middleware, BPO, GeoDig, Precious, Chemicals, Textiles, Crops, Sourcing

 

The RPG Programming section of Mainframes.in provides a listing of WWW resources for RPG programming language. Mainframes.in is a comprehensive online resource for legacy and mainframe systems.

 

..

 

..

 

Add Links: If you have a web site that you wish to include in this directory, do let us know the details by sending a note about your URL to narsi@esource.in. We’ll quickly review the web site, and if found relevant, add it to the database. We look forward to web site owners and link exchange partners to submit URL. Thanks!

 

 

Looking for an Indian mainframe / legacy system outsourcing partner? Talk to us!

 

 

 

Content derived from Wikipedia article on RPG Programming Language

 

IBM RPG (programming language)

From Wikipedia, the free encyclopedia

 

 

RPG is a programming language for business applications. Originally an initialism for Report Program Generator, it officially no longer stands for anything. Its latest incarnation is RPG IV (aka ILE RPG) on IBM's iSeries servers; it inherits the iSeries Integrated Language Environment’s OOP features such as prototyped functions and procedures, static and dynamic binding, access to C routine libraries, dynamic link libraries, and fully recursive and re-entrant modular code.

 

Contents

 

1 Overview

2 History

3 Language Evolution

4 RPG IV, a Modern Language

5 Example code

6 Platforms

7 External links

 

 

 

Overview

RPG (aka RPG IV aka RPGLE) is the mainstay programming language of the IBM iSeries platform. Originally designed as a query tool, IBM has enhanced the language to become a full-fledged, powerful programming language.

 

An RPG program typically starts off with a File Specification, listing all files being written to, read from or updated, followed by a Data Definition Specification containing program elements such as Data Structures and dimensional arrays (much like a "Working-Storage" section of a COBOL program or var statements in a Pascal program). This is followed by the Calculation Specification, which contains the actual meat of the code. Output Specifications can follow which can be used to determine the layout of a report or the report can be defined externally.

 

In the early days of RPG, its major strength was known as the program cycle: every RPG program executes within an implied loop, which can apply the program to every record of a file. Alternately, the cycle can make an interactive program continue to run until explicitly stopped. Today, most RPG programmers avoid using the cycle in favor of controlling the flow of the program with standard looping constructs.

 

 

History

RPG is one of the few languages created for punch card machines that is still in common use today. This is because the language has evolved considerably over time. It was originally developed by IBM in the 1960s. The name Report Program Generator was descriptive of the purpose of the language: generation of reports from data files, including matching record and sub-total reports.

 

FARGO (Fourteen-o-one Automatic Report Generation Operation) was the predecessor to RPG. Both FARGO and RPG were intended to facilitate ease of transition for IBM tabulating machine unit record equipment technicians to the new IBM 1401 series of computers.

 

Tab machine technicians were accustomed to plugging wires into control panels or plug-boards to implement input, output, control and counter operations (add, subtract, multiply, divide). Tab machines programs were executed by impulses emitted in a machine cycle; hence, FARGO and RPG emulated the notion of the machine cycle with the program cycle. RPG was superior to and rapidly replaced FARGO as the report generator program of choice.

 

The alternative languages generally available at the time were either COBOL or FORTRAN: COBOL was a verbose business oriented language, FORTRAN was a language that facilitated mathematical applications. Other languages of the era included PL/1, ALGOL, and Autocoder. COBOL was more common in mainframe business operations (System/360 models 30 and above) and RPG was more common in shops that were transitioning from tabulating equipment (System/360 model 20).

 

 

Language Evolution

RPG II was introduced with the System/3 series of computers. It was later used on System/32, System/34, and System/36, while an improved version of the language.

 

RPG III was created for the System/38 and its successor the AS/400 (a mid-range machine. RPG III significantly departed from the original language, providing modern structured constructs like IF-ENDIF blocks, DO loops, and subroutines.

 

RPG/400 with a much cleaner syntax, and tighter integration with the integrated database. This language became the mainstay of development on the AS/400, and its editor was a simple line editor with prompt templates for each specification (type of instruction).

 

RPG IV (aka RPGLE, aka RPG/ILE) was released in 1994 and the name, officially, was no longer an acronym. RPG IV offered a greater variety of expressions within its new Extended Factor-2 Calculation Specification.

 

 

RPG IV, a Modern Language

In 2001, with the release of OS/400 V5R1, RPG IV offered even greater freedom for calculations than offered by the Extended Factor-2 Calculation Specification: a free-format text-capable source entry, as an alternative to the original column-dependent source format. The "/FREE" calculation does not require the operation code to be placed in a particular column; the operation code is optional for the EVAL and CALLP operations; and syntax generally more closely resembles that of mainstream, general-purpose programming languages.

 

Today, RPG IV is a considerably more robust language. Editing can still be done via the simple editor or it can be edited via PC using IBM's Websphere Development Studio. IBM is continually extending its capabilities and adding more built-in functions (BIFs). It has the ability to link to Java objects (See IBM's RPG Reference Manual ), and OS/400 APIs; it can be used to write CGI programs with the help of IBM's Cgidev2[1]web toolkit, RPG xTools [2] CGILIB and other commercial Web enabled packages. Even with the changes it retains a great deal of backward compatibility, so an RPG program written 35 years ago could run today with little or no modification.

 

 

Example code

The following program receives a customer number as an input parameter and returns the name and address as output parameters.

 

 

      * Historically RPG is columnar in nature, though free-formatting

      * is allowed under particular circumstances. 

      * The purpose of various lines code are determined by a

      * letter code in column 6.

      * An asterisk (*) in column 7 denotes a comment line

 

      * "F" (file) specs define files and other i/o devices

     FARMstF1   UF   E             Disk    Rename(ARMST:RARMST)

 

      * "D" specs are used to define variables

     D pCusNo          S              6p 0

     D pName           S             30a

     D pAddr1          S             30a

     D pAddr2          S             30a

     D pCity           S             25a

     D pState          S              2a

     D pZip            S             10a

 

      * "C" (calculation) specs are used for executable statements

      * Parameters are defined using plist and parm opcodes

     C     *entry        plist

     C                   parm                    pCusNo

     C                   parm                    pName

     C                   parm                    pAddr1

     C                   parm                    pAddr2

     C                   parm                    pCity

     C                   parm                    pState

     C                   parm                    pZip

 

      * The "chain" command is used for random access of a keyed file

     C     pCusNo        chain     ARMstF1

 

      * If a record is found, move fields from the file into parameters

     C                   if        %found

     C                   eval      pName  = ARNm01

     C                   eval      pAddr1 = ARAd01

     C                   eval      pAddr2 = ARAd02

     C                   eval      pCity  = ARCy01

     C                   eval      pState = ARSt01

     C                   eval      pZip   = ARZp15

     C                   endif

      

      * RPG makes use of switches.  One switch "LR" stands for

      * "last record".  This ends program execution.

     C                   eval      *InLR = *On

 

The same program using free calculations:

 

      * "F" (file) specs define files and other i/o devices

     FARMstF1   UF   E             Disk    Rename(ARMST:RARMST)

 

      * "D" specs are used to define variables and parameters

      * The "prototype" for the program is in a separate file

      * allowing other programs to call it

      /copy cust_pr

      * The "procedure interface" describes the *ENTRY parameters

     D getCustInf      PI

     D  pCusNo                        6p 0   const

     D  pName                        30a

     D  pAddr1                       30a

     D  pAddr2                       30a

     D  pCity                        25a

     D  pState                        2a

     D  pZip                         10a

      /free

        // The "chain" command is used for random access of a keyed file

        chain pCusNo ARMstF1;

 

        // If a record is found, move fields from the file into parameters

        if %found;

           pName  = ARNm01;

           pAddr1 = ARAd01;

           pAddr2 = ARAd02;

           pCity  = ARCy01;

           pState = ARSt01;

           pZip   = ARZp15;

        endif;

      

        // RPG makes use of switches.  One switch "LR" stands for

        // "last record".  This ends program execution.

        *InLR = *On;

      /end-free

 

 

Platforms

As stated above, the RPG programming language originally was introduced by IBM for their proprietary 1401, /360, /3, /32, /34, /36, /38, AS/400, and iSeries systems. But there have also been implementations for the Digital VAX, Sperry Univac BC/7, Univac system 80, Siemens BS2000, Burroughs B1700, Hewlett Packard HP3000, ICL 2900 series, and WANG VS, as well as miscellaneous compilers for Unix-based systems (Unibol) and PCs (Baby/400, Lattice-RPG).

 

RPG II applications are still supported under the HP OpenVMS operating system on VAX, Alpha, and Integrity processors by the third party Migration RPG compiler.

 

 

External links

IBM (1964). IBM 1401 RPG manual. C24-3261-1.

Retrieved from http://en.wikipedia.org/wiki/IBM_RPG_%28programming_language%29

 

End of Wikipedia content,  http://en.wikipedia.org/wiki/RPG_programming_language

 

 

 

RPG (Report Program Generator) Directory & Resources @ Mainframes.in

 

..

 

.. 

 

Main Sections @ Mainframes.in

 

Legacy Software

Legacy Operating Systems > Midrange, Mainframe 

Legacy Databases > DB2, IMS DB/DC, VSAM, CA/IDMS, Unidata

Legacy Programming & Development

Legacy Transaction Processing

 

Legacy Hardware > Mainframe Hardware, Midrange Hardware

 

Legacy & Non-legacy > Legacy & Contemporary OS, Legacy & Contemporary Databases, Legacy & Networking, Legacy & Contemporary Programming Languages, Legacy & Mainframe Migration

 

Legacy Companies

 

Other IT Resources

 

eIT.in – IT & Software Directory & Resources

 

Software > Operating Systems, Databases, Programming & Development, Mainframe & Legacy, Internet & Web

 

Hardware, Networking & Communications, IT Strategy & Design, IT in Industries, IT in Functions, IT Infrastructure, Tech Support, IT Industry & Trade Network, IT News & Updates

 

Mainframes.in provides directory and web links resources for the legacy, mainframes and midrange systems. It is intended to be useful for mainframe programmers & developers, midrange programmer & developer, legacy & mainframe databases software development, administrators & DBAs, application developers, mainframe strategy architect, legacy design specialists and architects, mainframe & legacy migration consultants and analysts, administration, maintenance & support professionals, mainframe & legacy outsourcing consultant, legacy solutions programming developers & coders, project management & functional analyst, and for mainframe, midrange, system administrators, testing & quality control engineers. It will make an effort to provide resources on tutorial/tutorials, guide/guides, tips, faq/faqs on these mainframe and legacy topics.

 

 

Reference

 

GeoDig – Get Local!

 

Have you checked out the GeoDig directories for over 30 countries? GeoDig provides useful local and regional web resources for over 200 cities around the world. See the list of cities and countries for which GeoDig provides locality-specific web resources.

 

North America

USA - Alabama (AL) > Birmingham; Alaska; Arkansas (AR) > Little Rock; Arizona (AZ) > Phoenix, Las Vegas, Tucson; California (CA) > Los Angeles, San Francisco, Sacramento, Fresno, Bakersfield; Colorado, CO > Denver; Connecticut, CT > Hartford; District of Columbia, DC > Washington DC; Delaware (DE) > Wilmington; Florida > Miami, Orlando, Tampa, Orlando, Sarasota, West Palm Beach, Jacksonville; Georgia > Atlanta; Hawaii > Honolulu; Idaho; Illinois > Chicago; Indiana > Indianapolis; Iowa; Kansas (KS); Kentucky (KY) > Louisville; Louisiana (LA) > New Orleans, Baton Rouge; Maine; Maryland (MD) > Baltimore; Massachusetts > Boston, Springfield; Michigan > Detroit, Grand Rapids; Minnesota > Minneapolis-St. Paul; Mississippi (MS); Missouri (MO) > Kansas City, St. Louis; Montana; Nebraska (NE) > Omaha; Nevada (NV) > Las Vegas; New Hampshire; New Jersey (NJ) > Jersey City, Newark; New Mexico (NM) > Albuquerque; New York > New York, Buffalo, Rochester, Albany, Syracuse; North Carolina (NC) > Raleigh-Durham, Charlotte, Greensboro; North Dakota; Ohio> Columbus, Cincinnati, Cleveland, Toledo, Youngstown, Dayton; Oklahoma (OK) > Oklahoma City, Tulsa; Oregon > Portland; Pennsylvania > Philadelphia, Allentown, Pittsburgh, Harrisburg, Scranton, ; Rhode Island (RI) > Providence; South Carolina (SC) > Greenville; South Dakota; Tennessee (TN) > Knoxville, Memphis, Nashville; Texas > Austin, Dallas, Houston, San Antonio, El Paso, Austin, McAllen; Utah (UT) > Salt Lake City; Vermont; Virginia (VA) > Norfolk, Richmond; Washington > Seattle; West Virginia; Wisconsin (WI) > Milwaukee; Wyoming

Canada - Vancouver, Montreal, Toronto, Calgary, Ottawa-Gatineau, Edmonton, Quebec City, Winnipeg, Hamilton, London

 

Europe - UK - London, Glasgow, Manchester, Birmingham, Liverpool, Sheffield, Leeds, Bristol, Edinburgh, Leicester; France - Paris, Marseille, Lyon, Toulouse, Nice, Nantes, Strasbourg, Montpellier, Bordeaux; Germany - Frankfurt (Frankfurt am Main), Munich (München), Berlin, Düsseldorf, Hamburg, Cologne (Köln), Essen, Dortmund, Stuttgart, Bremen, Duisburg, Hannover, Nürnberg (Nuremberg), Dresden, Leipzig; Italy - Milan (Milano), Rome (Roma), Napoli (Naples), Torino (Turin), Palermo, Bologna, Firenze (Florence), Genova (Genoa); Spain - Madrid, Barcelona, Valencia, Sevilla, Zaragoza, Malaga, Murcia, Las Palmas, Bilbao; Scandinavia - Finland - Helsinki (Helsingin), Espoo, Tampere (Tampereen), Vantaa, Turku, Oulu, Sweden - Stockholm, Goteborg (Göteborg), Malmo (Malmö), Uppsala, Vasteras (Västerås), Denmark - Copenhagen (Københavns), Aarhus (Århus), Odense, Aalborg (Ålborg), Norway - Oslo, Bergen, Stavanger, Trondheim; Benelux - Belgium - Brussels (Brussel), Antwerp (Antwerpen), Ghent (Gent, Gand), Charleroi, Liège (Liege), Netherlands - Amsterdam, Rotterdam, Utrecht, Eindhoven, Tilburg, ‘s-Gravenhage (sGravenhage), Groningen, Luxembourg - Luxembourg City; PortugalLisbon; GreeceAthens; HungaryBudapest; PolandWarsaw; Switzerland - Zürich (Zurich), Geneva (Geneve, Genève), Basel, Bern (Berne), Lausanne; Austria - Linz, Vienna (Wien), Graz, Linz, Salzburg, Innsbruck; IrelandDublin

 

Asia - India - Mumbai, New Delhi, Bangalore; China & Hong Kong - Hong Kong, Beijing, Shanghai, Tianjin, Wuhan, Shenyang, Guangzhou, Harbin, Xian; Japan - Tokyo, Osaka, Yokohama, Nagoya, Sapporo, Kyoto, Kobe, Fukuoka, Kawasaki, Hiroshima; South Korea - Seoul, Pusa, Taegu, Incheon, Taejeon, Taiwan - Taipei; Malaysia - Kuala Lumpur; Singapore; Russia - Moscow, St Petersburg

 

Middle East - Turkey - Istanbul, Israel - Tel Aviv

 

Oceania - Australia - Sydney, Melbourne, Brisbane, Perth, Adelaide

 

Africa - South Africa - Johannesburg, Cape Town, Durban

 

 

Web Co-ordinator: Narasimhan Santhanam ( narsi@esource.in )

  

© 2004 – 05, From Mainframes.in – Home of Legacy & Mainframes Online