venerdì 26 novembre 2010

Generazione di un Numero Random con un CL di IBM iSeries

Devo ammettere che quanto segue e' un po' esoterico e potrebbe non generare molto interessa anche da parte dei Geek iSeries. Tuttavia risolve il problema della generazione di numeri random che non e' possibile ottenere direttamente in CLP o RPG su un IBM iSeries.

Ne' CLP ne' RPG hanno un generatore di Numeri Random, per cui occorre trovare unma soluzione esterna. Un modo e' usare la libreria in C QLEMF e richiamare la api CERNAN0 (metodo che ho trovato in Google).

L' altro modo che invece non ho trovato documentato e' usare il QSH shell per ottenerlo. Quwsto metodo genera un numero random tra 0 e 32767 all' interno dello shell QSH e quindo lo memorizza in una s DTAARA che puo' essere ketta dal programma chiamante per reperire il valore, in quanto non e' possibile ottenere direttamente un valore di ritorno da una chiamata a QSH

01. CRTDTAAARA MyRand *CHAR 5
02. Inserire le istruzioni seguenti nel vostro PGM

DCL &CMD *CHAR 40
DCL &MYRAND *CHAR 5
CHGVAR VAR(&CMD) VALUE('print $RANDOM|datarea -lw MYRAND')
QSH CMD(&CMD)
RTVDTAARA DTAARA(SX002A) RTNVAR(&MYRAND)


l' struzione Print $RANDOM genera il numero random

il comando successivo separato da | contiene l' istruzione -lw MYRAND che riceve il numero randon e lo memorizza nella DTAARA

Nessun commento: