RPG II
Encyclopedia
RPG II is a version of the IBM RPG programming language. It was developed in the late 1960s and was offered on a number of different computers, including the IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...

 System/3
System/3
The IBM System/3 was a low-end business computer aimed at new customers and organizations that still used IBM 1400 series computers or unit record equipment...

, System/32
System/32
The IBM System/32 introduced in January 1975 was a low-end business computer. It was used primarily by small to midsize businesses for accounting applications.RPGII was the programming language for the machine....

, System/34
System/34
The IBM System/34 was a minicomputer marketed by IBM beginning in 1978. It was a multi-user, multi-tasking successor to the single-user System/32. Most notably, it included two very different processors, one based on System/32 and the second based on older System/3. Like the System/32 and the...

, System/36
System/36
The IBM System/36 was a minicomputer marketed by IBM from 1983 to 2000. It was a multi-user, multi-tasking successor to the System/34. Like the System/34 and the older System/32, the System/36 was primarily programmed in the RPG II language...

, System/370
System/370
The IBM System/370 was a model range of IBM mainframes announced on June 30, 1970 as the successors to the System/360 family. The series maintained backward compatibility with the S/360, allowing an easy migration path for customers; this, plus improved performance, were the dominant themes of the...

, The Singer System 10, and the Wang VS Series. ICL also produced versions for its ICL 2903
ICT 1900 series
ICT 1900 was the name given to a series of mainframe computers released by International Computers and Tabulators and later International Computers Limited during the 1960s and '70s...

 system and for the VME/K operating system. Further, Burroughs Corporation produced an RPG II compiler with database extensions for its B1700
Burroughs B1700
The Burroughs B1000 Series of computers consisted of three major generations which were the B1700, B1800, and B1900 series machines originally introduced in the 1970s and continued later on....

 series of computers.

RPG stands for Report Program Generator. RPG is a fixed-format programming language, which means that code must be placed in exact column locations in order to generate correct results. COBOL and BASIC are considered free-format to some extent because the code can be placed variously and still generate correct results.

RPG also incorporates fixed logic, which means that files are opened when the program begins and closed when the program ends, even though this is not explicitly stated; special variables such as UDATE, UYEAR, PAGE, and so forth, are filled when the program begins or when page overflow occurs, even though there is no explicit instruction for these activities. Total calculations and output are done at "total time," after the detail cycle when L1/LR has been set on by fixed logic.

The concept of RPG fitted neatly with a cyclical machine that read cards, summarised their contents and prints a result, rather like a tabulating machine
Tabulator
Not to be confused with Tabulating machine.The Tabulator is a generic data browser and editor. Using outline and table modes, it provides a way to browse RDF/Linked Data on the web. RDF is the standard for inter-application data exchange....

. The language was extended to handle other input and output devices and provides a fast and efficient method of programming.

Devices such as the workstation (WORKSTN), the keyboard (KEYBORD), or the console (CONSOLE) do not have a fixed number of records at the beginning of the job and therefore, in order to incorporate the fixed-logic RPG "Last Record" cycle, the LR indicator can be set on with a SETON instruction. LR cannot be set off.

RPG II did not evolve much from the 1977 implementation on the System/34 to 2000 when the Advanced/36
Advanced/36
The Advanced/36 refers to an IBM minicomputer in the System/36 family. It was marketed from 1994 to 2000.The Advanced/36 is physically smaller than other S/36 offerings, but because it contains much more advanced technology, it is the most robust and powerful. Also, because it was sold 11 years...

 was discontinued from marketing.

Third-party providers sold more than 200 different assembler subroutines that could be used by System/36 and Advanced/36 programmers to exceed RPG II limitations.

RPGII Specifications

In the popular System/36
System/36
The IBM System/36 was a minicomputer marketed by IBM from 1983 to 2000. It was a multi-user, multi-tasking successor to the System/34. Like the System/34 and the older System/32, the System/36 was primarily programmed in the RPG II language...

implementation of RPG II, there are 8 different specification
types:
  1. The U or Auto Report spec is only required for Auto Report programs.
  2. The H or Header spec is at the top of the program and describes compiler options such as maximum compile size, whether the program is a MRT or Multiple Requestor Terminal program, and what type of listing is generated when the program is compiled. The object name of the program created is located in columns 75–80; if a source does not have an H spec, the name RPGOBJ is used.
  3. The F or File spec(s) are next, and describes the files used in the program. Files may be disk files (DISK) or may be devices such as a printer (PRINTER), the workstation (WORKSTN), keyboard (KEYBORD), unformatted display (CRT or DISPLAY), or user-defined (SPECIAL). Record size, block size, overflow indicators, and external indicators are described. It is possible that an RPG program will not use any F specs.
  4. The E or Extension spec(s) are next, and describe arrays and tables, which may be prefetched from disk files (an Input table), drawn from constants placed at the end of the source between ** and /* symbols, or built from calculations.
  5. The L or Line Counter spec(s) are next, and if present, describe the form to be printed. It defines the number of lines in a page and the positions where printing begins and ends.
  6. The I or Input specs are next, and describe the data areas within files. RPG II permits redefinition of data areas so that a field named FLDA might occupy the same area as an array AR that contains 8 elements of 1 character each. Non-record areas such as data structures can be described. Depending on the values of the input record, indicators may be conditioned.
  7. The C or Calculation spec(s) are next. Total fields may be described and accumulated. Complex computations and string manipulations are possible. Indicators may be conditioned.
  8. The last specification(s) are O or Output specifications, which describe the output record in terms of fields and output positions.


Operation codes appear in columns 28–32 of an RPG-II calculation specification.
Operation code Name
ADD Add
SUB Subtract
MULT Multiply
DIV Divide
Z-ADD Zero and Add
Z-SUB Zero and Subtract
MVR Move Remainder
MOVE Move
MOVEL Move Left
MHLZO Move High to Low Zone
MLHZO Move Low to High Zone
MLLZO Move Low to Low Zone
MHHZO Move High to High Zone
BITON Bit On
BITOF Bit Off
TESTB Test Bit
GOTO Go To
TAG Tag (destination of a GOTO)
EXSR Execute Subroutine
BEGSR Begin Subroutine
ENDSR End Subroutine
SETON Set On
SETOF Set Off
EXCPT Exception
EXIT Exit
RLABL Redefine Label
ULABL User Label
CALL1 Call
PARM1 Parameter
CHAIN Chain
READ Read
READE Read Equal
READP Read Previous
REDPE Read Previous Equal
SETLL Set Lower Limits
SET Set
TIME Time of day (000000-235959)
DSPLY Display
SORTA Sort Array
XFOOT Crossfoot
MOVEA Move Array
LOKUP Lookup (find in array)

  1. CALL/PARM was added to RPG II with Release 6.0 (also known as the VASP).


CHAIN retrieves the record in the indexed file named in Factor 2 that matches the exact key specified by the value in Factor 1.

SETLL causes the index pointer for the file named in Factor 2 to be positioned at the location specified by the value in Factor 1.

SORTA causes the named array to be sorted in place; that is, the elements appear in order.

Z-SUB calculates Factor 2 with opposite sign and moved to result field.

XFOOT causes an array to be summed and the result moved to result field.

MVR must follow a DIV operation. The integer remainder of the DIV operation is placed in the result field. MVR following the DIV operation for "56 divided by 3" would place the value 2 in the result field.

Indicators

  • Standard:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
  • Halt Indicators:
H1 H2 H3 H4 H5 H6 H7 H8 H9
  • Matching Indicators:
M1 M2 M3 M4 M5 M6 M7 M8 M9 MR
  • Control-Level Indicators:
L1 L2 L3 L4 L5 L6 L7 L8 L9
  • Command Key Indicators:
KA KB KC KD KE KF KG KH KI KJ KK KL KM KN KP KQ KR KS KT KU KV KW KX KY
These indicators refer to command keys 1 to 24, in that order. Note that there is no KO indicator.
  • First Cycle Indicator:
1P
  • Last Record Indicator:
LR
  • Overflow Indicators:
OA OB OC OD OE OF OG OV
  • External Indicators:
U1 U2 U3 U4 U5 U6 U7 U8

System/36 SEU templates
3 H
5 F/files
6 F/extensions
7 E
8 L
10 I/header
11 I/fields
12 C
13 O/header
14 O/fields

Sample Code


F***************************************************************
F* THIS PROGRAM READS THE CONTENTS OF AN INVOICE HEADER FILE
F* AND PRINTS THE INVOICES PROCESSED FOR THE DATE SET IN THE
F* LOCAL DATA AREA. THERE ARE LEVEL BREAKS AND TOTALS FOR
F* EACH STORE.
F***************************************************************
F*
FINVHDR IP F 62 DISK
FPRINTER O F 132 OF PRINTER
IINVHDR NS 01 1NC
I 1 3 STORE L1
I 4 13 INVNO
I 14 20 CUSTNO
I 21 45 STNAM
I 46 53 INVDAT
I 54 622TOTINV
I UDS
I 1 8 RPTDAT
C 01 INVDAT COMP RPTDAT 11
C 01 11 ADD TOTINV L1TOT 92
C 01 11 ADD TOTINV LRTOT 92
OPRINTER H 101 1P
O OR OF
O PAGE Z 106
O 102 'PAGE'
O 59 'VERY BIG'
O 72 'STORES, INC.'
O UDATE Y 17
O 8 'RUN DATE'
O H 1 1P
O OR OF
O 73 'DAILY SALES BY STORE'
O H 2 1P
O OR OF
O RPTDAT 83
O 63 'FOR DATE:'
O H 1 1P
O OR OF
O 6 'STORE'
O 18 'INVOICE'
O 28 'CUSTOMER'
O 58 'CUSTOMER'
O 78 'INVOICE'
O H 2 1P
O OR OF
O 6 'NUMBER'
O 18 'NUMBER'
O 28 'NUMBER'
O 58 'NAME'
O 78 'TOTAL'
O D 0 L1
O STORE 6
O D 1 01 11
O INVNO 18
O CUSTNO 28
O STNAM 58
O TOTINV1B 78
O T 1 L1
O 45 'STORE TOTAL...'
O L1TOT 1B 78
O T 1 LR
O 45 'GRAND TOTAL...'
O LRTOT 1 78
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK