| |||||||||||||
| |||||||||||||
1. Come familiarizzarsi 2. Dimostrazioni di base 3. Comandi di approntamento 4. Servizi disponibili tramite il service program di CGIDEV2 5. Consigli per il debugging 6. Significato dei codici di errore 7. Consigli per avere prestazioni ottimali 8. A proposito dei CGI persistenti 9. Comandi ZIP e UNZIP 10. Nuovi rilasci di CGIDEV2 1. Come familiarizzarsiSe non hai ancora familiarità con la programmazione CGI tramite il service program di CGIDEV2, incomincia con il leggere questo materiale:
2. Dimostrazioni di baseLe nostre dimostrazioni di base sono forse il modo più pratico per imparare a sviluppare programmi CGI in RPG-ILE. Dopo aver letto i "Servizi disponibili tramite il service program di CGIDEV2", ti raccomandiamo di andare ad analizzare queste dimostrazioni.3. Comandi di approntamentoTi suggeriamo di non sviluppare i tuoi CGI in una delle librerie (per es. CGIDEV2) scaricate dal nostro sito. Al primo aggiornamento perderesti tutto.La cosa giusta da fare è quella di creare delle proprie librerie (libreria sorgenti e libreria esecutiva), ed effettuare lì gli sviluppi. Noi abbiamo dei comandi che ti consentono di aggiungere alle tue librerie tutta la strumentazione necessaria:
4. Servizi disponibili tramite il service program di CGIDEV2Per una panoramica completa sul service program di CGIDEV2 cgidev2/cgisrvpgm2 puoi andare alla pagina del Readme. Consigliamo comunque di utilizzare il seguente schema di apprendimento, che rende la comprensione molto più facile.
6. Significato dei codici di erroreIn certi casi alcune delle procedure del service program possono restituire dei "return code" diversi da zero. Solitamente tali codici di errore vengono anche riportati nel file CGIDEBUG. Ma quale è il significato di questi codici? Si può tentare di decifrarli attraverso le pagine dell' iSeries Information Center. Per esempio:
5. Consigli per il debuggingLa soluzione degli errori (debugging) è al primo posto nell'interesse degli sviluppatori. Ecco perchè abbiamo dedicato a questo argomento un' intera pagina.7. Consigli per avere prestazioni ottimaliSeguendo questi consigli riuscirai ad avere il meglio, in termini di prestazioni, dai tuoi CGI:
8. A proposito dei CGI persistentiSin qui, sottacendo la cosa, abbiamo sempre indirettamente parlato di CGI non persistenti. Tradizionalmemnte i programmi CGI sono non persistenti, nel senso che un CGI, la prossima volta che viene invocato non si ricorda (o meglio, è opportuno che non si ricordi- dato che chi lo chiama può benissimo essere un client diverso da precedente) quali valori erano stati lasciati nelle variabili e quale era il posizionamento dei file.Naturalmente questo fatto ha importanza notevole nella progettazione dei programmi, in quanto le variabili che sono importanti per le ri-esecuzione del programma vanno salvate nascostamente nello script html inviato al client, dimodochè il client le ritrasmetta nella chiamata successiva (in altre parole. il client funziona da "memoria" per il server). Va detto però che dalla V43R3 sull'HTTP è stato fornito supporto per i CGI persistenti. I CGI persistenti effettuano anch'essi return senza accendare l'indicatore LR , ma godono della proprietà di poter essere richiamati solo dallo stesso client che li aveva chiamati in precedenza. Pertanto un CGI persistente, una volta richiamato, sa che le variabili contengono valori appropriati e che i file sono posizionati al punto giusto. Un CGI persistente, per fare in modo da poter essere richiamato solo dal client originale, stacca -per così dire- uno scontrino in duplice copia: una copia la consegna al servente http (che funge da magazziniere), l'altra copia la consegna al client (il cliente). In definitiva, quando il client deciderà di ricontattare quel CGI, lo farà presentando al magazziniere (l'http) lo scontrino assegnatogli. L'http provvederà quindi a richiamare quella copia di programma ferma in memoria, che aveva emesso quello scontrino. In termini tecnici, anzichè di scontrino, si parla di "identificativo di sessione" o "handle" (manico della valigia). L'altro problema è che un CGI in attesa di chiamata tiene fermo un job http servente. Questo comporta due aspetti:
Dato tuttavia che utilizzare i CGI persistenti è legittimo, abbiamo preparato una pagina che aiuta nel compito. 9. Comandi ZIP e UNZIPLa libreria CGIDEV2 contiene i comandi ZIP e UNZIP. Questi comandi consentono di comprimere e decomprimere file di flusso IFS utilizzando file standard di tipo .zip.Le richieste dei comandi ZIP ed UNZIP vengono trasformate in comandi QSHELL, i quali vengono eseguiti in modo batch. Il risultato di questi comandi può essere facoltativamente visualizzato. 10. Nuovi rilasci di CGIDEV2
Occasionalmente un nuovo rilascio della libreria CGIDEV2 può comprendere nuove procedure per il *srvpgm CGIDEV2/CGISRVPGM2. A partire da 25 Marzo 2009, il *srvpgm CGIDEV2/CGISRVPGM2 è dotato di firma zero. Se hai già la libreria CGIDEV2 e sei in procinto di installarne una nuova versione, occorre che tu prima controlli la data di rilascio della versione esistente. Per farlo, devi immettere il comando CGIDEV2/RELEASED. Durante la installazione di CGIDEV2, il *srvpgm CGIDEV2/CGISRVPGM2 viene creato con activity group
CGIDEV2. Se l' activity group del tuo *srvpgm CGIDEV2/CGISRVPGM2 attuale è *CALLER, allora
dopo la installazione del nuovo rilascio di CGIDEV2, DEVI eseguire il comando |