Salve! Posso darti maggiori informazioni
o rispondere a qualche domanda?
Come possiamo esserti utili?
Seleziona uno dei nostri esperti
Alberto Bedin
Supporto Commerciale
Sono online
Luisa Soranno
Supporto Commerciale
Sono online

Voglio riportarvi un articolo interessante, che ho trovato molto utile a cura di Giovanni Cippitelli. In esso si parla dell'utilizzo dell’API QRCVDTAQ per trasferire sul PC lo spool prodotto da un programma AS/400 eseguito con il comando QUOTE RCMD in una connessione FTP. Iniziamo con alcune considerazioni iniziali tenendo conto che L’FTP (File Transfer Protocol) è utilizzato di solito per trasferire file tra due sistemi. Consiste di due parti: ·        la parte client, ossia chi inizia la connessione ed invia i comandi, ·        e la parte server, ossia chi riceve i comandi da eseguire. Quindi in questo caso il concetto di client/server è indipendente da dove risiedono i dati, in quanto questi ultimi possono essere memorizzati indifferentemente sia sul client che sul server. Un'ulteriore considerazione da tenere presente è che i dati trasferiti con l’FTP non sono crittografati a meno che non si utilizzi una connessione FtpS. Analizziamo il Comando QUOTE e il sottocomando RCMD Con il comando FTP QUOTE si avviano dei comandi direttamente sul sistema remoto. Per vedere la lista dei sottocomandi che supporta sul sistema remoto si deve avviare una connessione FTP e digitale il seguente comando: QUOTE HELP Prenderemo in considerazione il sottocomando RCMD che, abbinato al comando QUOTE, consente di eseguire un comando o un programma AS/400 con la seguente sintassi: QUOTE RCMD programma parametro1, parametro2,... Analizziamo il sottosistema AS400 per FTP Nel momento in cui si avviva l'FTP dell'AS/400 tramite il comando STRTCPSVR SERVER(*FTP) sono avviati tanti lavori quanti sono quelli definiti nel parametro NBRSVR del comando CHGFTPA (Change FTP Attributes = Modifica attributi FTP). Questi lavori (definiti server FTP) sono eseguiti nel sottosistema QSYSWRK con il profilo utente QTCP. Il lavoro avrà un nome tipo QTFTPxxxxx (dove xxxxx è un numero progressivo) ed un numero che segue le regole di assegnazione dell'OS/400. Nel momento in cui un utente avvia una sessione FTP, questa viene eseguita in uno dei server FTP disponibili, avviati in precedenza. Se si desidera conoscere l'utente che ha avviato la sessione FTP è necessario visualizzare gli attributi dello stato del lavoro (comando WRKJOB - Gestione lavoro, opzione “1. Visualizzazione attributi di stato del lavoro”). La schermata che si ottiene indica l'utente che ha aperto la sessione FTP (Profilo utente attuale) e con questo utente l’OS/400 effettua i controlli di autorizzazione sugli oggetti. Vediamo insieme il Programma CL Se ora avviamo un programma, questo verrà eseguito con il profilo dell'utente che ha aperto la sessione FTP, ma l'AS/400 assegnerà all'utente un nuovo nome ed un nuovo numero di lavoro. L'unico modo per poter reperire queste due informazioni è scrivere un programma CL. Questa soluzione chiama il programma di stampa dopo aver compiuto un "OVERRIDE" delle stampe in una coda di output associata ad una coda di dati, quindi leggere quest'ultima, tramite l'api QRCVDTAQ, per reperire le informazioni sullo spool. Il programma così realizzato esegue in successione i punti che ora andiamo ad elencare: 1. Dichiara e riceve un parametro di in input di un determinato carattere. 2.  Dichiara tutte le variabili adottate nel programma. Indichiamo quali sono le più significative: ·        &LenDtaq è la lunghezza della coda dati. ·        &DatiSpool è la variabile che conterrà le informazioni sullo spool. ·        &WaitDtaq indica i secondi che il programma QRCVDTAQ resta in attesa di una voce da leggere prima di ritornare al programma chiamante (con un valore negativo resta in attesa all’infinito). ·        &LibTemp è il nome della libreria che conterrà gli oggetti usati dal programma (nel caso specifico è stata scelta la QTEMP). ·        &JobExecNbr è la variabile che conterrà il numero del lavoro. Questo numero è quello che l’AS400 assegna quando si avvia il server FTP. ·        &LibOutq è il nome della libreria che conterrà la coda di output (non si può creare una coda di output in QTEMP). 3. Compone il nome della coda di output per poi anteporre al numero del lavoro il    prefisso "FTP" (nota che l'AS/400 non supporta i nomi di oggetti che iniziamo con un numero quindi il nome della coda di output sarà del tipo FTP123456.. 4.   Con la variabile impostata al punto 3 si realizza una coda di dati e una coda di output che poi associa. In questo caso il sistema operativo AS/400 scrive una voce nella coda di dati quando lo spool viene posto nello stato di RDY (ready). Uno spool va in RDY nel momento in cui il programma chiude il file di stampa o quando da congelato viene rilasciato. 5.   Esegue l'override dei file di stampa su ciò che è stato creato (vd. punto precedente) , attribuendo al parametro FILE (da modificare) il valore *PRTF. E' un valore che attribuisce il cambiamento a tutti i file di stampa che verranno aperti in un secondo momento, dirigendoli nella coda di output definita. 6. Ora il programma esegue il programma/comando AS400 associato al parametro ricevuto. Pensiamo al caso dell'esempio: stampare il joblog del lavoro. Con parametri differenti è possibile eseguire programmi/comandi differenti. 7.   Crea il file temporaneo che contiene lo spool ed elimina il contenuto (il file potrebbe  essere già esistente). 8. Richiama l’API QRCVDTAQ che legge la coda dati e riportati nella variabile &DatiSpool le informazioni sul nome del lavoro di spool. L'API è richiamato fino a quando la lunghezza (&LenDtaq) dei dati ricevuto è maggiore di zero; in questa maniera accoda tutti gli spool nel file temporaneo creato al punto 7. 9. Imposta le variabili per copiare il file di spool. Il numero progressivo dello spool viene  ritornato in formato binario perciò usa la BIF %BINARY per convertirlo in un valore di carattere lungo 4 posizioni 10. Ottenute le informazioni utili, è possibile copiare il file di spool in un file di database. Nell’esempio viene copiato nel file SPOOL198 contenuto nella libreria QTEMP. 11. Al contempo cancella tutti gli oggetti temporanei ed il programma termina. Dopo la  compilazione del programma non resta che aprire una sessione FTP ed eseguirlo: QUOTE RCMD CALL TestFTP '1' GET QTEMP/SPOOL198 C:\AS400\Articoli\SPOOL.TXT La prima riga richiama l’esecuzione del programma, mentre la seconda trasferisce lo spool sul PC. Conclusioni Come possiamo osservare, con poche righe di codice (CLLE) si può eseguire un programma tramite una connessione FTP e trasferire lo spool in modo automatico. Questo programma è stato scritto perché dovendo compilare dei programmi e trasferire il listato sul PC, non si poteva accedere all'AS/400 con una normale sessione TELNET in quanto il firewall bloccava la porta 23. Con questo programma potrete ovviare ad ogni problema affine e potenziare così la vostra operatività sul vostro AS/400. Esistono comunque degli applicativi che rendono la vita più facile per i programmatori AS400. Non dimenticate che parliamo dellCurrent Status / Backup Nowa macchina più sicura e performante del mondo aziendale. Non teme ne virus, ne intrusioni, ma soprattutto le possibilità di sviluppo sono enormi. Non a caso grandi aziende indiane e cinesi hanno visto nell'AS400 lo strumento adatto al loro sviluppo. Per esempio io uso una soluzione che permette di realizzare il lavoro di una settimana in un ora e tutto senza essere esperti di programmazione. Realtà aziendali che hanno usato la soluzione WEBSMART di bigblue bcd italia hanno potuto cambiare la loro vita aziendale. richiedi informazioni