Qualcuno conosce uno strumento per convertire da Cobol Copybook a XSD? O XML.Converti quaderno Cobol in XSD
risposta
costruzione di un parser in piena regola per quaderni COBOL ha alcune sfide:
quaderni sono incorporati in programmi COBOL durante la fase di manipolazione del testo della compilazione. L'origine della copia può essere incompleta. L'unico modo per ottenere un'origine completa per l'analisi è pre-elaborarlo come se fosse stato inserito in un programma souce COBOL. Normalmente i copybook vengono inseriti in un programma COBOL tramite la direttiva COPY. La presentazione potrebbe sembrare un po 'inutile, ma considera quanto segue:
1) La direttiva COPIA viene fornita con un'opzione di SOSTITUZIONE. In apparenza questo può sembrare abbastanza semplice da gestire, ma una volta entrati nei dettagli diventa molto "interessante". Vedi: COPY DIRECTIVE
2) La direttiva REPLACE. Questa direttiva può anche manipolare il testo sorgente dopo che la direttiva COPY ha fatto la sua parte. Vedi: REPLACE DIRECTIVE
3) Quaderni nidificati. Questo potrebbe non essere così sgradevole come i precedenti ma tenere a mente anche il nesting.
4) La sintassi delle stringhe COBOL Picture non è in grado di ridere. Date un'occhiata a: Picture String Symbols
5) Il vostro parser dovrà occuparsi anche delle regole di continuazione di COBOL. Vedere: Continuation Lines e la continuazione del TESTO PSEUDO in particolare.
Non voglio scoraggiarti, ma analizzare COBOL non è un compito banale.
Sul lato positivo, se i quaderni hanno una struttura semplice e senza errori, come fanno molti, è possibile ottenere questo risultato utilizzando una cascata di espressioni regolari. Questo approccio è abbastanza comune tra coloro che hanno bisogno di analizzare i programmi COBOL (e i quaderni) sui progetti di ristrutturazione del software. Forse dare un'occhiata a: RegReg
Cin cin ...
Molto tempo fa, ho creato un codice per analizzare il quaderno COBOL e generare file XSD.
Poiché la struttura del linguaggio COBOL è piuttosto regolare, ho creato un'espressione regolare per ottenere i nomi delle variabili e identificare le lunghezze dei campi. Con quella struttura analizzata, potrei anche creare dati di test XML, codice DOM MSXML per manipolare la struttura e i moduli HTML per testare le transazioni IMS.
In conclusione: le espressioni regolari potrebbero essere davvero utili per farlo.
grazie per il suggerimento regex – lemotdit
Rational Developer per Z, XML Thunder, Syncsort ETL ... ci sono molti prodotti che lo farà.
In realtà, se si impara le regole dei tipi di dati dello schema, è possibile farlo manualmente molto facilmente. Per lo più, ti occuperai di xsd: string, xsd: decimal, xsd: intero e alcune versioni di xsd: date per abbinare il tuo Cobol copybook.
Si potrebbe provare il mio progetto Koopa Cobol parser. Mentre non esegue la pre-elaborazione, ho scoperto che per la maggior parte dei quaderni questo non è realmente necessario. Dovrebbe coprire la maggior parte di ciò che ti aspetteresti da un quaderno standard e, in caso contrario, puoi sempre estendere il parser. Può esportare l'albero di analisi in XML, che è possibile elaborare in qualsiasi modo.
Quindi c'è la clausola REDEFINES
che viene utilizzata per ridefinire un determinato set di byte contigui in modi diversi. Quindi la clausola OCCURS
che è un'implementazione di lunghezza fissa di matrici e la clausola OCCURS DEPENDING ON
per matrici di lunghezza variabile.
Quindi, NealB ha ragione; questo è non un compito banale.
Quello che ti serve è un front-end del parser COBOL completo per fare ciò correttamente. Vedi http://www.semanticdesigns.com/Products/FrontEnds/COBOLFrontEnd.html –