Кіріспе

IBM RPG Report Program Generator бағдарламалау тілі — 1959 жылы IBM 1401 үшін ұсынылған бизнес-қосымшаларға арналған жоғары деңгейдегі бағдарламалау тілі. Ол IBM i операциялық жүйесін қоса алғанда, IBM орта буындағы компьютерлік өнімдерінің негізгі бағдарламалау тілі ретінде кеңінен танымал. RPG дәстүрлі түрде бағдарламалық цикл және бағанға бағытталған синтаксис сияқты ерекше ұғымдармен ерекшеленеді. Соңғы нұсқасы RPG IV, ол жаңғырту мүмкіндіктерін, соның ішінде еркін пішімдегі синтаксисті қамтиды.

Платформалар

RPG бағдарламалау тілі бастапқыда IBM компаниясы 1401 жүйесі үшін жасалған. Кейіннен IBM 7070/72/74 және System/360 жүйелері үшін де іске асыруларды шығарды; RPG II олардың орта деңгейдегі компьютерлік өнімдерінің желісі үшін негізгі бағдарламалау тіліне айналды (System/3, System/32, System/34, System/38, System/36 және AS/400). Сонымен қатар, DEC VAX, Sperry Univac BC/7, Univac system 80, Siemens BS2000, Burroughs B700, B1700, Hewlett Packard HP 3000, ICL 2900 сериясы, Honeywell 6220 және 2020, Four Phase IV/70 және IV/90 сериялары, Singer System 10 және WANG VS, сондай-ақ Unix негізделген жүйелер үшін Infinite36 (бұрынғы Unibol 36) және PC (Baby/400, Lattice RPG) сияқты түрлі компиляторлар мен орындалу орталары да болды. RPG II қолданбалары әлі де IBM z/VSE және z/OS операциялық жүйелерінде, Unisys MCP, Microsoft Windows және OpenVMS жүйелерінде қолдау көрсетіледі.

Өмірбаян

Бастапқыда 1959 жылы IBM компаниясы әзірлеген Report Program Generator атауы тілдің мақсатын көрсетеді: деректер файлдарынан есептер жасау. FOLDOC Вильф Хейді RPG-ні жасаудағы IBM-дегі жұмысы үшін мойындады. FARGO (Fourteen o one Automatic Report Generation Operation) – IBM 1401 компьютеріндегі RPG-нің алдындағы нұсқасы. Екі тілдің де мақсаты – IBM кестелік машинасының (Tab) бірліктері жазба жабдықтарының техниктерінің сол кездегі жаңа компьютерлерге оңай көшуін қамтамасыз ету болды. Кестелік машина техниктері кіріс, шығыс, басқару және санау операцияларын (қосу, алу, көбейту, бөлу) жүзеге асыру үшін басқару тақтасына сымдарды қосуға үйренген. Кестелік машина бағдарламалары машина циклында берілетін импульстар арқылы іске асырылды; сондықтан FARGO және RPG бағдарлама циклымен машина циклының ұғымын имитациялады. RPG FARGO-дан артық болды және оны жылдам ығыстырды. Кейіннен IBM RPG-ні (7070 RG 902) IBM 7070/72/74 компьютерінде іске қосты, бірақ FARGO-ны емес. Ол кезде қол жетімді балама тілдер Assembler, COBOL немесе FORTRAN болды. Assembler және COBOL негізгі компьютерлік операцияларда (System/360 модельдері 30 және одан жоғары) көбірек қолданылды, ал RPG көбінесе кестелік жабдықтардан өткен клиенттерде (System/360 модель 20) жиі пайдаланылды.

РПГ II

RPG II 1969 жылы System/3 компьютерлер сериясымен енгізілді. Кейін System/32, System/34 және System/36 жүйелерінде де қолданылды, тілдің жетілдірілген нұсқасымен бірге. RPG II үлкен жүйелер үшін де қолжетімді болды, соның ішінде DOS/VSE (кейін VSE/SP, VSE/ESA және z/VSE) жұмыс істейтін IBM System/370 мейнфреймі. ICL өзінің VME/K операциялық жүйесінде де нұсқасын жасады. RPG-нің алғашқы жылдарында оның басты артықшылығы – бағдарлама циклі болды. Бағдарламашы жеке жазбаны өңдеу үшін код жазатын, ал бағдарлама циклі файлдың әрбір жазбасына осы өзгерісті қолданып, бақылау ағынын қамтамасыз ететін. Ол кезде әрбір жазба (жеке перфокарта) бағдарламадағы әрбір жолмен салыстырылатын, және жолдың "көрсеткіші" "қосылған" немесе "өшірілген" күйде болса ғана жазбаға әсер ететін. Көрсеткіш – пайдаланушы анықтаған мақсаттар үшін 01–99 нөмірленген логикалық айнымалылар жиынтығынан, немесе жазба, өріс немесе есептеу процестеріне байланысты басқа кішігірім жиынтықтардан тұратын. Деңгейлік үзілістер және сәйкес жазбалар түсінігі RPG II тіліне тән ерекшелік және бастапқыда перфокарта оқығыштарын ескере отырып жасалған. Циклдың сәйкес жазба мүмкіндігі тақырыптық және деректерлік қатынасы бар файлдарды оңай өңдеуге мүмкіндік берді. Бағдарламалық циклды пайдаланатын RPG бағдарламалары COBOL және басқа да бизнеске бағытталған тілдерде жазылған бағдарламаларға қарағанда әлдеқайда аз кодтан тұратын күрделі есептерді шығара алатын. Файл спецификацияларында жазылатын, оқылатын немесе жаңартылатын барлық файлдар тізімделген, содан кейін дерек құрылымдары мен өлшемдік массивлер сияқты бағдарлама элементтерін қамтитын деректерді анықтау спецификациялары келтіріледі, бұл COBOL бағдарламасының "Жұмыс сақтағышы" бөліміне ұқсас. Одан кейін орындалатын нұсқауларды қамтитын есептеу спецификациялары беріледі. Басқа файлдардың немесе есептердің пішімін анықтау үшін қолданылатын шығыс спецификациялары да болуы мүмкін. Сонымен қатар, файлдарды, кейбір дерек құрылымдарын және есептерді сыртқы түрде анықтауға болады, бұл қолмен енгізу-шығару ("I/O") спецификацияларын жазу қажеттілігін азайтады.

РПГ III

RPG III, System/38 және оның ізінен келген AS/400 үшін жасалған. RPG III бастапқы тілден күрт өзгешеленді, IF-ENDIF блоктары, DO циклдары және кіші бағдарламалар сияқты қазіргі заманғы құрылымдық элементтерді ұсынды. RPG III ірі жүйелер үшін де қолжетімді болды, оның ішінде OS/VS1 операциялық жүйесінде жұмыс істейтін IBM System/370 мейнфреймі де бар. Бұл жүйе UNIVAC Series 90 мейнфреймдеріндегі VS/9 операциялық жүйесі үшін Unisys компаниясынан да қолжетімді болды. 1979 жылы IBM System/38 енгізілгеннен бері көптеген RPG бағдарламашылары циклді пайдалануды тоқтатып, стандартты циклдық конструкциялармен бағдарлама ағынын басқаруға көшті, алайда IBM циклге кері үйлесімділікті сақтап келеді.

DE/RPG

DE/RPG немесе Data Entry RPG 80-ші жылдардың басында IBM 5280 сериялы деректерді енгізу жұмыс станцияларында ғана қолжетімді болды. Ол RPG III-ке ұқсас болғанмен, System/38 және оның ізбасарларындағыдай деректерді (файлдарды) сипаттау үшін сыртқы деректер сипаттамалары (DDS) болмады. Оның орнына, DDS бөлігі RPG кодының өзіне қосылуы тиіс еді.

РПГ/400

RPG/400 – AS/400 жүйесінде жұмыс істейтін RPG III болды. IBM RPG компиляторын "RPG/400" деп атады, бірақ оның шығуымен бірге System/38 жүйесіндегі RPG III компиляторымен толықтай сәйкес келді. IBM өнімдерінің барлығы xxx/400 деп қайта аталды, RPG компиляторы да осы өзгеріске ұшырады. RPG/400 компиляторымен құрастырылған RPG III тіліне ешқандай жаңа мүмкіндік қосылған жоқ, тек бірнеше жылдан кейін AS/400 қолжетімді болған соң IBM SCAN, CAT және XLATE сияқты жаңа операциялық кодтарды әзірлеуді бастады. RPG III-ге енгізілген бұл жақсартулар RPG III-дің System/38 нұсқасында болған жоқ.

РПГ IV және ILE РПГ

RPG IV, сондай-ақ RPG ILE деп те аталады) 1994 жылы OS/400 (қазір IBM i деп аталады) V3R2 нұсқасының бір бөлігі ретінде жарық көрді. RPG IV-тің шығуымен RPG атауы ресми түрде аббревиатура болмай қалды. RPG IV кеңейтілген 2-факторлы есептеу спецификациясы және кейіннен еркін форматтағы есептеу спецификациялары мен процедура синтаксисі шеңберінде әртүрлі өрнектерді ұсынды. Интеграцияланған тілдік ортадағы RPG IV, ILE RPG ретінде белгілі, ал пайдаланушы нұсқаулықтары екеуінің де ерекшеліктерін түсіндіреді. RPG IV және ILE RPG қазіргі IBM i платформасында IBM қолдауында. 2001 жылы OS/400 V5R1 нұсқасымен RPG IV кеңейтілген 2-факторлы есептеу спецификациясы ұсынғаннан гөрі есептеулерге көбірек еркіндік берді: бастапқы бағанаға тәуелді бастапқы форматқа балама ретінде, мәтіндік түрде еркін форматта код жазу мүмкіндігі. "/FREE" есептеуі операциялық кодты нақты бағанға орналастыруды қажет етпеді; EVAL және CALLP операциялары үшін операциялық код міндетті емес; ал синтаксис көбінесе жалпы мақсаттағы, кең таралған бағдарламалау тілдеріне ұқсас. 2013 жылдың қараша айына дейін еркін формат тек есептеу спецификацияларына ғана қатысты. IBM i V7R1 TR7 тілінің жаңартуымен "/free" және "/end free" есептеулері енді қажет емес, тіл перфокарталармен байланысын толық үзіп тастады. IBM Rational Developer for i (RDi), Eclipse негізіндегі интеграцияланған даму ортасы, RPG әзірлеу үшін IBM ұсынады. Source Entry Utility (SEU) мәтін редакторы RPG әзірлеу үшін ұсынылмайды және IBM i 6.1 нұсқасынан кейін дамуы тоқтатылды. Басқа да ескі әзірлеу құралдарына CODE/400 (IBM WorkFrame/2 негізінде) және RPG үшін VisualAge жатады.

Тілдің үздіксіз жетілдірілуі

IBM RPG тілін бағдарламалық құралдарды шығару және ішкі жаңартулар (TR) арқылы жетілдіруді жалғастыруда. Қосымша кіріктірілген функциялар (BIF) қосылды. Ол Java нысандарына және IBM i API-ларына сілтеме жасауға мүмкіндік береді; IBM-нің Cgidev2 Web toolkit, RPG Toolbox және басқа коммерциялық веб-үйлесімді пакеттердің көмегімен CGI бағдарламаларын жазу үшін қолданылуы мүмкін. Өзгерістерге қарамастан, ол кері үйлесімділіктің жоғары деңгейін сақтайды, сондықтан 37 жыл бұрын жазылған RPG бағдарламасы бүгін аз немесе ешқандай өзгеріссіз жұмыс істей алады. SQL алдын ала компиляторы қазіргі RPG әзірлеушілеріне IBM-нің SQE (SQL Query Engine) негізіндегі құнға бағаланған мүмкіндіктерін пайдалануға мүмкіндік береді. Дәстүрлі F Spec тәсілімен әзірлеуші деректер жиынтығына нақты қол жеткізу жолын анықтауға тиіс болды, енді олар стандартты кіріктірілген SQL операторларын тікелей бағдарламаға енгізе алады. Компиляцияланған кезде SQL алдын ала компиляторы SQL операторларын RPG операторларына түрлендіреді, олар деректер базасын басқару бағдарламаларын шақырады, олар сұрауды іске асырады. RPG IV тілі EBCDIC таңбалар жиынтығына негізделген, бірақ сонымен қатар UTF 8, UTF 16 және көптеген басқа таңбалар жиынтықтарын қолдайды. Тілдің қауіпсіздік аспектілерін кейбіреулер ерекше деп санайды, өйткені компилятор тобы RPG орындалу ортасын қайта кіруге мүмкіндік берудің орнына әрбір жіпке жеке статикалық жад беру арқылы жіптерді шешті. Бұл жіп пен процесс арасындағы айырмашылықты шатастырады (RPG IV жіптерін жіптер мен процестердің аралас түріне айналдырады). 2010 жылы IBM RPG Open Access-ті, сондай-ақ Rational Open Access: RPG Edition деп те аталатын жаңа мүмкіндікті ұсынды. Ол бағдарламашыға жаңа I/O өңдеушілерді анықтауға мүмкіндік береді, бұл RPG-де кіріктірілмеген дерек көздерінен деректерді оқуға және жазуға мүмкіндік береді.