RPG II

Fra DDHFwiki
Spring til navigation Spring til søgning

RPG II (Report Program Generator) var det mest anvendte programmeringssprog til IBM System/3. Sproget stammede oprindelig fra IBM 1401 og senere fra den berygtede System/360 model 20 (der ikke var en "rigtig" System/360). RPG lever fortsat (på linie med COBOL) idet det var/er primært programmeringssprog på S/32, S/34, S/36 og S/38 samt AS/400 (iSystems))

Beskrivelse fra Wikipedia.

Syntaks

RPG debugging template

RPG anvender et antal formularer i modsætning til andre sprog der er "frit format":

Yderligere info: manual (34,5 MB)

Et par simple eksempler:

Kopier hulkort til disk-file:

// LOAD $RPG,F1
// COMPILE OBJECT-F1
// FILE NAME-$WORK,UNIT-F1,TRACKS-10,PACK-F1F1F1,RETAIN-S
// FILE NAME-$SOURCE,UNIT-F1,TRACKS-10,PACK-F1F1F1,RETAIN-S
// RUN     
     H   C          J                                                     READ
     FINPUT   IP         80            MFCU1
     FOUTPUT  O          80            DISK 
     IINPUT   NS  01
     I                                        1  80 DATA
     OOUTPUT  D        01 
     O                         DATA      80
/*
// READER CONSOLE

Print disk-file:

// CALL RPG,F1
// COMPILE OBJECT-F1
// RUN
     H   C          J                                                     PRINT
     FINPUT   IP         80            DISK 
     FOUTPUT  O         132     OF    LPRINTER
     LOUTPUT  051FL045OL
     IINPUT   NS  01
     I                                        1  80 DATA
     OOUTPUT  H   01   1P
     O       OR        OF
     O        D  1     01
     O                         DATA      80
/*
// READER CONSOLE

Fortællinger

Jørgen Bøgvald:

Jeg har gennem tiderne lavet et Master Mind program på forskellige platforme.

Computeren skal "gætte" den kombination af farvede pinde du tænker på.
Første version var på en System/3 model 6 hvor de mulige træk (2401 stk.) var gemt i en disk-file.
Senere kom en version hvor trækkende blev genereret hen ad vejen i loops.
På en System/32 (der emulerede System/3 instruktioner i software) kunne et træk tage op til 45 minutter!
Den aktuelle version som vises her er "back-portet" fra System/32-versionen og afviklet på den emulator der kan downloades fra Henk Stegemans web-site: http://www.ibmsystem3.nl.
Her kører det MEGET hurtigere.
Henk har også kørt programmet på hans rigtige System/3 Model 10.
Han oplyser at der er lange perioder med 100% CPU-aktivitet.
Senere har jeg også lavet basic-versioner til micro-computere og IBM-PC.
Mest interessant var dog en java-version som jeg lavede til min Nokia mobil-telefon.
Den svarer øjeblikkelig! Så der er ingen tvivl om at den rå cpu-kraft i nutidens mobil-telefoner overstiger væsentligt hvad vi havde at gøre godt med i 70'erne.

Master Mind compilerings liste
(Læg iøvrigt mærke til at programmet kun fylder 4.745 bytes - i dag kan man dårligt lave et program på 4MB!)

Eksempel med forklaring

Tilføjet af Nico de Jong:

RPG/II var ikke begrænset til System 3 o.l., jeg har selv brugt den på IBM/360 og /370, da den i mange tilfælde var nemmere at have med at gøre (mindre skrivearbejde) end f.eks. Cobol. Sproget var meget brugt til simple udtræk, lønberegning, og andre "mindre" kontoropgaver.

Jeg kan huske et tilfælde hvor RPG/II absolut blev misbrugt. Det var hos Brødrene Dahl A/S, hvor min chef brugte det til at gen-beregne prisen uden moms ud fra salgsprisen incl. moms. Når salgsprisen idag er 125 kr incl. moms, er den 100 kr uden moms, dvs 80%, ergo salgspris * 0,8 = nettopris. Det gik også fint i hine dage, indtil der kom en momsændring fra 15 til 18%, da man så her skal skrive salgspris * 0,84746..... = nettopris. Problemet i denne beregning er, at RPG/II kun kunne regne med max 5 decimaler. Resultatet : der var altid fejl i momsen, og momsregnskabet kom aldrig til at stemme, hvilket ikke var populært hos regnskabschefen.

RPG/II har også været brugt i moderne dage. I forbindelse med mediers inputkontrol i Told & Skats konverteringssystem, var der behov for et system der kunne finde fejl i.f.m. indlæsningen, så man ikke risikerede at fejlmedier blev sendt videre til Bull maskinen. Problemet med konverteringssoftwaren er imidlertid at man læser 1 record og skriver 1 record ad gangen. Det der var behov for, var f.eks. kontrol om en indberetter havde fået lov til at indberette på et medie (der skulle være foretaget en testkørsel først), om header og trailer records passede, om SE nummeret fandtes, osv. Heldigvis har softwaren en "nødudgang" (lidt a la Exits i IBMS SORT programmer). Denne nødudgang kan kalde en DLL. Da der allerede var RPG expertise i Told & Skat, var det nærliggende at lave en DLL der kunne læse RPG/II sourcetekst, og så behandle inputdata efterfølgende. For at kunne bruge den tilstedeværende ekspertise, var det altså nødvendigt at følge RPG's flowchart, dvs at DLL'en skulle indeholde komplet RPG emulator. Desuden skulle der laves en Windows Editor til RPG kildetekst, så man kunne udvikle programmer på sin egen PC uden at belaste konverteringssystemerne. Da man nu alligevel havde en DLL, var det en smal sag at lave et Windows Standalone program, der kunne udføre RPG/II programmer. Så kunne man også teste programmet på sin egen maskine.

Alt var skrevet i TPW 1.50 (Turbo Pascal for Windows)