Chi sviluppa applicazioni IBM i conosce molto bene la libreria QTEMP, la libreria temporanea che il sistema crea e distrugge automaticamente per ogni lavoro. Ma non sempre può essere usata; per esempio, il comando RTVDIRINF (Richiamo informazioni indirizzario) non accetta la libreria QTEMP; oppure, in certe applicazioni particolari c’è bisogno di creare degli oggetti temporanei che però devono essere condivisi con altre applicazioni. Può essere quindi utile avere delle alternative alla QTEMP. Vediamone alcune.
La directory /tmp è una directory che può essere usata per creare dei stream file temporanei. Se decidete di usare /tmp è importante sapere che la utility Unix clrtmp pulisce la directory /tmp cancellando tutti i file presenti. In altri sistemi, la directory /tmp viene pulita ogni volta che il sistema viene avviato; in IBM i, la directory /tmp non viene pulita all’avvio del sistema, quindi bisogna eseguire il comando ‘QSH CMD(clrtmp)’ nel programma di avvio specificato dal valore di sistema QSTRUPPGM per pulire la directory /tmp immediatamente dopo IPL, l’unico momento in cui abbiamo la certezza che nessun file è usato. Prima di creare dei file nella directory /tmp bisogna pensare ad un metodo per evitare che i lavori si pestino i piedi tra di loro; una buona soluzione è quella di creare i file in una sub directory con il nome qualificato del lavoro, per esempio ‘/tmp/[job-user]/[job-name]/[job-number]’ avendo cura di cancellarla alla fine del lavoro con il comando RMVDIR (Rimozione indirizzario) perché, a differenza della libreria QTEMP, la directory /tmp non è legata al lavoro, quindi sappiate che i file creati in /tmp sono a disposizione di tutti gli utenti in possesso di adeguata autorizzazione.
Analogamente alla directory /tmp, potrebbe essere comodo creare uno schema temporaneo per ogni lavoro in cui creare degli oggetti temporanei. Anche in questo caso il nome qualificato del lavoro ci aiuta ad avere una buona univocità, quindi possiamo creare lo schema con l’istruzione SQL ‘CREATE SCHEMA xxxxx_[job-user]_[job-name]_[job-number]’ dove xxxxx è un prefisso dedicato a questi schema, a cui il sistema assegna automaticamente il nome libreria ‘xxxxxnnnnn’ dove nnnnn è un progressivo da 00001 a 99999 gestito dal sistema. Il nome della libreria può essere facilmente reperito con l’istruzione SQL ‘GET DIAGNOSTICS CONDITION 1 :[host-variable] = MESSAGE_TEXT’ eseguita dopo la creazione dello schema, che restituisce il messaggio ‘Schema xxxxxnnnnn creato’. Al termine del lavoro è buona regola cancellare lo schema con l’istruzione ‘DROP SCHEMA’ per non correre il rischio di superare le 99999 librerie e nel programma QSTRUPPGM inserire il comando ‘DLTOBJ OBJ(QSYS/xxxxx*) OBJTYPE(*LIB)’.
Riceviamo e pubblichiamo ben volentieri questo "tip & trick" di Patrick Rizzi che presenta una tecnica che permette di intervenire…
Prendo spunto da una risposta di Michael Mayer sulle mailing list di Midrange.com a chi chiedeva come monitorare i messaggi…
Le imprese sono sempre più alla ricerca di strumenti che possano migliorare l'efficienza, la collaborazione e la gestione delle risorse.…
I primi di Aprile è uscita la "Spring Version" di ACS Access Client Solution, versione 1.1.9.5 Interessanti novità soprattutto in…
Se non vi bastava la ricca agenda delle sessioni del Common Europe Congress 2024, 3-6 Giugno Milano, ecco un altro…
Le funzioni di debug con Visual Studio Code sono disponibili da qualche tempo ma questa nuova versione 2.10.0 semplifica la…