01 - Programmazione01a - RPG

RPG – FAQ & Howtos (IT Part.2)

La parte 1 di queste FAQ, le prima 10 Domande-Risposte sono disponibili a questo link: RPG – FAQ & Howtos (IT Part.1)

RPG-FAQ-013: Programmare in RPG/Free – A Beginner’s Tutorial

Per chi inizia a lavorare con RPG Free e Full-Free ci sono queste due ottime guide:

RPG-FAQ-012: Espressioni ridotte – short expressions (+=…)

Nelle assegnazioni di valore alle variabili in RPG Free possiamo utilizzare le “short expressions”, rubate dal linguaggio C… sono comode perché si risparmia qualcosa in scrittura del codice ma bisogna prestare attenzione a non confondere la posizione del segno uguale (=) …. ad esempio ” i+=1″ incrementa di uno il valore di i … mentre “i=+1” setta i al valore 1 positivo!

i=i+1; --->equivale a ---> i+=1;
i=i-1; --->equivale a ---> i-=1;
r=r*2; --->equivale a ---> r*=2;  
r=r/2; --->equivale a ---> r/=2;  

Possiamo anche usare queste funzioni gestendo l'arrotondameno

eval(h) r/=2;


RPG-FAQ-013: Datastructure Likerec vs DS extname template

Se ne è discusso in Ottobre 2019 sul gruppo di discussione RPG-L di Midrange.com: che differenza c’è tra i due modi di definire una DS come qualified template:

Method 1
dcl-f CUSTFILE keyed template qualified;
dcl-ds cust_t likeRec(CUSTFILE.CUSTFILER) template;
dcl-s custName like(cust_t.name); 

Method 2
dcl-ds cust_t extName('CUSTFILE') qualified template end-ds;
dcl-s custName like(cust_t.name);
 

I due metodi diversi arrivano allo stesso risultato … in entrambi i casi possiamo definire la variabile “custName” come “cust_t.name” campo esterno preso dalla tabella “CUSTFILE” … potremmo dire che il metodo con extName non obbliga a definire nelle specifiche ‘F’ (o meglio DCL-F) il nostro file.

Un’altra differenza tra i due metodi sta nella sintassi delle specifiche di definizione “DCL-DS”: con EXTNAME dobbiamo indicare END-DS mentre con LIKEREC no: forse non tutti sanno che con DLC-DS ExtName possiamo aggiungere dei campi esterni alla DS, vediamo un esempio:

 dcl-ds myds extname(mytable);
  extraFld1 char(10);
  extraFld2 char(15);
end-ds;

--- Roberto De Pedrini Faq400.com
About author

Founder di Faq400 Srl, IBM Champion, ideatore del sito Faq400.com e del Blog blog.faq400.com. Sviluppatore RPG da quando avevo i pantaloni corti, forte sostenitore della piattaforma IBM i (ex AS400), ho sempre cercato di convididere le mie conoscenze con gli altri tramite forum, eventi e corsi. Oggi, tramite Faq400 Srl, cerchiamo di aiutare le aziende a sfruttare al meglio questa fantastica piattaforma IBM i.

Rispondi

%d blogger hanno fatto clic su Mi Piace per questo: