neroni.it | Sql |
Recupera da un database preesistente le istruzioni DDL necessarie per ricrearlo.
Laddove si decide di passare dalla definizione DDS (Data description Specification) del DB2 (Database dell'As400) alla piu' recente definizione
DDL (Data Definition Language), occorre utilizzare l'API QSQGNDDL (Generate Data Definition Language) definita nella documentazione al link
Generate Data Definition Language (QSQGNDDL) API.
Il nemico che ha messo in schiavitu' l'Antico ha deciso di non fornire l'interfaccia comando ufficiale per la chiamata dell'API.
Una interfaccia di chiamata decente sta nel Navigator (che non frequento) ma mi pare orientata al solo interattivo.
Un'altra chiamata e' possibile tramite SQL ed e' documentata al link
QSYS2.GENERATE_SQL() procedure.
Una chicca per gli essequellari ma una vera schifezza senza nessun concetto di prompter per il resto del mondo.
Sul web si trovano non piu' di tre esempi utilizzabili del comando necessario costruiti da gente di buona volonta'
ma non particolarmrnte sollecita a rinfrescare all'ultimo release.
1) Il primo link e' il migliore. L'API e' incapsulata da un C ma io non ho voglia di studiare il C per modificarlo.
Generating DDL Source Using a CL Command.
Sorgenti in chiaro:
Source Code.
2) Nel secondo l'incapsulamento dell'API e' in RPG ma non gestisce correttamente gli errori di ritorno. Inoltre il comando e' poverello nei parametri.
Build SQL to Define Your Existing Files.
Sorgenti zippati:
Source Code.
3) Chi ha scritto il terzo ha snobbato il Control Language scrivendo un solo RPG come Command Processing Program e come incapsulamento API. Come farsi del male.
RTVSQLSRC. Sorgenti lungo la pagina.
Scopiazzando dai primi due, ne ho costruita una versione V7R1 con anche i due parametri previsti solo dalla V7R2.
Dopo averli inseriti, li ho dovuti obnubilare con degli esadecimali x'00' che il sistema vuole quando il parametro e' definito "Reserved":
ci ho perso piu' tempo che a fare tutto il resto di scopiazzatura e implementazione.
L'uso di un comando di interfaccia per l'API QSQGNDDL mi pare la necessaria premessa ad una procedura di conversione automatica di una libreria dati dalle definizioni DDS alle definizioni DDL in grado di supportare la versione piu' moderna del database As400, la sola che continuera' a crescere nel prossimo futuro. Ahinoi!