Générateur Automatique de Programme : GAP
Report Program Génerator : RPG
Catégorie RPG sur ce blog
Générateur Automatique de Programme : GAP
Report Program Génerator : RPG
Catégorie RPG sur ce blog
Tout arrive ! 16 ans après...
Nous ne sommes plus des Sorciers !?
IBM Redbooks | Who Knew You Could Do That with RPG IV? Modern RPG for the Modern Programmer
Application development is a key part of the IBM® i businesses. The IBM i operating system is a very modern robust platform to create and develop applications. The RPG language has been around for a
http://www.redbooks.ibm.com/redpieces/abstracts/sg245402.html
IBM Redbooks | Who Knew You Could Do That with RPG IV? A Sorcerer's Guide to System Access and More
This IBM Redbooks publication is focused on RPG IV as a modern, thriving, and rich application development language for the 21st century.
Diverses missions en province ou à
Paris, en tant qu’AP, puis Chef de Projet
m’ont conduit à une bonne maîtrise
des outils de développements AS400 ainsi
qu’à une sérieuse expérience dans la
réalisation de projets : analyses des besoins
avec les utilisateurs, création d' applications,
maintenances, mises en exploitation,
encadrements, audits et formations.
Je suis de très près les évolutions du monde IBM i,
notamment Rational Developer for i RDi ;
ainsi que celles de Windev/Webdev/Mobile.
AS/400 iSeries IBM i depuis 1989, Rpg IV Ile depuis 1996,
free-format depuis 2003, Embedded Sql, SQL PL...
Fiable, ouvert et motivé, d'un naturel communiquant,
j’apprécie les responsabilités qui me sont confiées.
Je réside à La Rochelle en Charente Maritime.
// Quelques exemples de déclarations "full free format Rpg".
// A l'occasion de l'abandon des spécifs,
// IBM aurait peut-être pu rebaptiser son langage Rpg 5, non ?!
ctl-opt option (*srcstmt:*nodebugio) dftactgrp(*no) actgrp('MILAN');
dcl-f fic010p usage(*input) keyed prefix(f1_);
dcl-f fic020e workstn sfile(SFL1:rangw);
dcl-s zona char(50);
dcl-s zonb varchar(1000);
dcl-s datedebut date(*iso);
dcl-s ouinon ind;
dcl-s yesno like(ouinon);
dcl-s zn packed(7:2);
dcl-s arn packed(5:2) dim(99);
dcl-ds mads1;
z1 char(5);
z2 char(10);
end-ds;
dcl-ds mads2 likerec(fic010f);
dcl-ds mads3;
subf1 char(5) pos(11); // Pos remplace Overlay
subf2 packed(5:2) pos(1);
subf3 char(10) pos(100);
subf4 char(5); // Equivalent à Overlay(mads3:*next)
end-ds;
dcl-ds *n PSDS;
procw *proc;
jobw char(10) pos244);
userw char(10) pos(358);
end-ds;
dcl-pr fonction1 ind; // Prototype d'une fonction
*n packed(3) value;
*n packed(3) value;
end-pr;
dcl-pi *n; // Entrée de la procédure principale
parm3 char(5);
end-pi;
dcl-proc fonction1; // Déclaration d'une fonction
dcl-pi *n ind; // Procedure Interface d'une fonction
parm1 packed(3) value;
parm2 packed(3) value;
end-pi;
return (parm1 > parm2);
end-proc;
...
Encore une histoire de date "legacy"...
Un pgm de service, deux fonctions,
et le pgm de test.
******* Prototype PSDT01CP ****************************
D dt8u pr 8 0
D dt8ix 8 0 value
D dt8i pr 8 0
D dt8ux 8 0 value
******* Programme de Service PSDT01 *******************
Hnomain
D/copy sources,psdt010cp
* jmsa = dt8u(samj)
* donne une pseudo date utilisateur
* à partir d'une pseudo date informatique,
* pas de vérification
P dt8u b export
D pi 8 0
D dt8ix 8 0 value
D samj ds
D dt8i 8 0 overlay(samj)
D ssi 2 0 overlay(dt8i:*next)
D aai 2 0 overlay(dt8i:*next)
D mmi 2 0 overlay(dt8i:*next)
D jji 2 0 overlay(dt8i:*next)
D jmsa ds
D dt8u 8 0 overlay(jmsa)
D jju 2 0 overlay(dt8u:*next)
D mmu 2 0 overlay(dt8u:*next)
D ssu 2 0 overlay(dt8u:*next)
D aau 2 0 overlay(dt8u:*next)
/free
dt8i = dt8ix;
jju = jji;
mmu = mmi;
ssu = ssi; // Hum, ces 2 lignes pourraient être
aau = aai; // un peu plus... un peu moins....
// Expliquez pourquoi,vous avez 4 minutes...
return dt8u;
/end-free
P e
* samj = dt8i(jmsa)
* donne une pseudo date informatique
* à partir d'une pseudo date utilisateur,
* vérification : 0 si pas bon.
P dt8i b export
D pi 8 0
D dt8ux 8 0 value
D dt8i s 8 0
/free
monitor;
dt8i = %dec(%date(dt8ux:*eur):*iso);
on-error;
dt8i = 0;
endmon;
return dt8i;
/end-free
P e
**********************************************
* Teste un pgm de service
*
Hdftactgrp(*no)
Hoption(*srcstmt:*nodebugio)
Hbnddir('MILAN')
Fpsdt010td cf e workstn
D/copy sources,psdt010cp
D sdsw sds
D procw *proc
D jobnw 10 overlay(sdsw:244)
D usernw s 10 inz(*user)
D bouclew s n
/free
dou bouclew;
exfmt ecran01;
if *inkc or *inkl;
exsr srfin;
endif;
date1ww = dt8u(date1w);
date2ww = dt8i(date2w);
enddo;
//**SR********************
begsr srfin;
exfmt ecran02w;
*inlr = *on;
return;
endsr;
// Date du jour en 8.0 informatique
udatiw = %dec(%date():*iso);
// Date du jour en 8.0 utilisateur
udatuw = %dec(%date():*eur);
IBM Rational Developer for Power Systems
Vous n'allez pas regretter SEU très longtemps...
http://www.ibm.com/developerworks/downloads/r/rdp/index.html
SP010T
Pgm utilisant les fonctions hébergées
dans le programme de service.
Notez,
une fois terminée
la mise en place précédemment décrite,
la simplicité d'utilisation
des fonctions ainsi mutualisées !
Hdftactgrp(*no)
Hactgrp('MILAN')
Hbnddir('MILAN')
Fsp010e cf e workstn
* Les prototypes
/copy sources,sp010k
Dboucle s n
/free
dou boucle;
exfmt ecran01;
if *inkc;
exsr srfin;
endif;
amj8w = dt3v1(aaaaw:mmw:jjw:vw);
datew = dt3v1d(aaaaw:mmw:jjw);
enddo;
// S o u s - p r o g r a m m e s
begsr srfin;
*inlr =*on;
return;
endsr;
/end-free
Voir aussi : Sous-Procédures & Fonctions
Bons dév sur "IBM i" & avec Attn !