Nella tabella riportata di seguito viene descritta la modalità di condizionamento delle definizioni COBOL sulle impostazioni dello schema XML nel modello messaggio.
Clausola COBOL | Tipo di dati schemi XML | Note |
---|---|---|
PIC A | xsd:string- | |
PIC G | xsd:string- | Impostare il nome locale al momento della compilazione su ja_JP in Windows - Preferenze - Importazione - COBOL per elaborarlo. |
PIC N | xsd:string- | Impostare il nome locale al momento della compilazione su ja_JP in Windows - Preferenze - Importazione - COBOL per elaborarlo. |
PIC X | xsd:string- | |
PIC 9(n) n = 1-4 | xsd:short - | DISPLAY, COMP o COMP-3 |
PIC 9(n) n = 5-9 | xsd:int - | DISPLAY, COMP o COMP-3 |
PIC 9(n) n = 10-18 | xsd:long - | DISPLAY, COMP o COMP-3 |
PIC 9(n) n = 19-31 | xsd:integer - | DISPLAY, COMP o COMP-3 |
PIC 9(n)V9(m) | xsd:decimal - | DISPLAY, COMP o qualsiasi virgola decimale virtuale COMP-3 |
COMP-1 | xsd:float - | |
COMP-2 | xsd:double - | |
Qualsiasi stringa modificata | xsd:string- | |
Qualsiasi numero modificato | xsd:string- | Ad esempio, PIC Z |
VALUE | Tutto | E' possibile importare clausole VALUE di livello diverso da 88 come valori predefiniti dello schema (opzione della procedura guidata di importazione). |
Nella tabella riportata di seguito viene descritta la modalità di condizionamento delle definizioni COBOL sulle funzioni CWF fisiche degli elementi creati nel modello messaggio.
Parola chiave COBOL | Tipo fisico CWF | Funzioni lunghezza CWF | Altre funzioni CWF |
---|---|---|---|
PIC X(n) PIC A(n) |
Stringa a lunghezza fissa | Lunghezza = n Unità di lunghezza = byte |
Giustificazione = giustificazione a sinistra Carattere di riempimento = SPACE |
PIC G(n) PIC N(n) |
Stringa a lunghezza fissa | Lunghezza = n Unità di lunghezza = Caratteri |
Giustificazione = giustificazione a sinistra Carattere di riempimento = SPACE |
PIC 9(n) DISPLAY n=1-31 | Decimale esterno | Lunghezza = n Unità di lunghezza = byte |
Giustificazione = giustificazione a destra Carattere di riempimento = "0" Segnato = Non selezionato Orientamento segnato = finale |
PIC 9(n) COMP, COMP-4, COMP-5 o BINARY | Numero intero | Lunghezza = 2, 4 o 8 basata su n Unità di lunghezza = byte |
Segnato = Non selezionato Orientamento segnato = vuoto |
PIC 9(n) COMP-3 n=1-18 | Decimale compresso | Lunghezza = CEILING((n+1)/2) Unità di lunghezza = byte |
Segnato = Non selezionato Orientamento segnato = vuoto |
PIC S9(n) DISPLAY n=1-31 | Decimale esterno | Lunghezza = n Unità di lunghezza = byte |
Segnato = Selezionato Orientamento segnato = finale *Vedere la nota 1 |
PIC S9(n) COMP o COMP-3 n=1-18 |
Numero intero o decimale compresso | Lunghezza = Fare riferimento alle definizioni COMP e COMP-3 riportate sopra Unità di lunghezza = byte |
Segnato = Selezionato Orientamento segnato = vuoto |
PIC 9(m)V9(n) DISPLAY n=1-31 | Decimale esterno | Lunghezza = n+m Unità di lunghezza = byte |
Segnato = Non selezionato Orientamento segnato = finale Virgola decimale virtuale = n |
PIC 9(m)V9(n) COMP o COMP-3 | Numero intero o decimale compresso | Lunghezza = CEILING((n+m+1)/2) per COMP-3 Lunghezza = 2, 4 o 8 per COMP Unità di lunghezza = byte |
Segnato = Non selezionato Orientamento segnato = vuoto Virgola decimale virtuale = n |
COMP-1 | Float | Lunghezza = 4 Unità di lunghezza = byte |
Segnato = Selezionato Orientamento segnato = vuoto |
COMP-2 | Float | Lunghezza = 8 Unità di lunghezza = byte |
Segnato = Selezionato Orientamento segnato = vuoto |
SYNC | Valore float, numero intero o decimale compresso | Numero di elementi iniziali ignorati come appropriato Numero di elementi finali ignorati come appropriato Allineamento byte come appropriato *Vedere la nota 2 |
|
Il numero di elementi finali e iniziali ignorati sono calcolati per ciascuno degli elementi importati dal programma di importazione indipendentemente dalla clausola SYNC. Dispongono di valori diversi da zero quando è presente la clausola SYNC.
Se è presente un elemento ripetuto, il numero di elementi finali e iniziali ignorati vengono utilizzati per la prima ricorrenza dell'elemento ripetuto; per le ricorrenze successive viene utilizzato solo il numero di elementi finali ignorati.
Consultare il materiale di riferimento COBOL per dettagli sui campi che richiedono l'allineamento dei byte.
Il componente CWF (Custom Wire Format) di WebSphere Message Broker fornisce supporto per modellare dati numerici utilizzando il formato dati decimali esterni (anche noto come decimali Zoned). In questo formato viene memorizzato un numero internamente come dati carattere decimali. Ad esempio, in un sistema in cui si utilizza il codice EBCDIC, il numero 1234 memorizzato in un campo decimale esterno a 4 byte viene memorizzato come la stringa di caratteri"1234" e la relativa rappresentazione esadecimale interna reale è F1F2F3F4.
Con numeri decimali esterni segnati, è possibile incorporare il segno nei dati reali modificando la prima metà del primo o dell'ultimo byte (in base all'utilizzo di una rappresentazione iniziale o finale del segno). Normalmente viene utilizzato "0xC" per rappresentare un numero positivo, "0xD" per rappresentare un numero negativo e "0xF" per rappresentare un numero non segnato.
Su macchine ASCII sono presenti numerosi meccanismi per la rappresentazione interna di dati decimali esterni. Una rappresentazione ("Segno ASCII") utilizzata dalle macchine pSeries di IBM utilizza codici ASCII normali (compresi tra "0" [hex 30] e "9" [hex 39]) per la prima e l'ultima cifra dei numeri positivi e non segnati e i caratteri compresi tra "p" [hex 70] e "y" [hex 79] per i numeri negativi.
Un metodo alternativo (Firma EBCDIC personalizzata) viene utilizzato in altre macchine basate su codice ASCII. Questo utilizza gli stessi caratteri di una macchina basata su EBCDIC, sebbene la rappresentazione esadecimale interna reale sia diversa. Utilizzando tale tecnica la stringa di caratteri per le piattaforme EBCDIC e ASCII è identica. Sarà possibile ricevere un messaggio da una piattaforma EBCDIC (creato da un copybook COBOL in cui sono contenute voci come PIC XXX e PIC S999) e convertire l'intero messaggio in codice ASCII o viceversa. La stringa di caratteri che rappresenta il campo decimale esterno nel messaggio (in seguito alla conversione ASCII/EBCDIC) esegue la mappatura al punto di codice che rappresenta la firma corretta del decimale. Con questo metodo esiste una limitazione. I caratteri parentesi graffe sono varianti (ad esempio, dispongono di punti di codice differenti in code page EBCDIC differenti). Questo meccanismo funziona solo per le code page EBCDIC in cui i caratteri parentesi graffe "{" e "}" (utilizzati per rappresentare 0 segnati) dispongono dei punti di codice x'C0' e x'D0'. Ad esempio, funzionerà per code page 500 e non per code page 871 in cui le parentesi graffe dispongono di punti di codice X'8E' e X'9C.
In un ambiente ASCII (determinato dalla proprietà CCSID durante il runtime), il valore predefinito per l'input e l'output è la rappresentazione "Segno ASCII". E' possibile specificare la rappresentazione applicabile nel livello fisico CWF per attributi locali ed elementi locali dei tipi decimali, float e numeri interi.
Nella tabella riportata di seguito viene descritta la rappresentazione interna (valore esadecimale reale e di carattere) della prima e dell'ultima cifra dei numeri decimali esterni rispettivamente con un segno iniziale e un segno finale inclusi (incorporati). Nota: nella tabella non viene specificata la rappresentazione per valori non segnati, che sono 0x30-0x39 per ASCII e 0xF0-0xF9 per EBCDIC.
Valori segnati positivi | Valori segnati negativi | ||||||
Ambiente ASCII | Ambiente EBCDIC | Ambiente ASCII | Ambiente EBCDIC | ||||
Cifra | Firma ASCII | Firma EBCDIC personalizzata | Firma ASCII | Firma EBCDIC personalizzata | |||
0 | 0(30) | {(7B) | {(C0) | p(70) | }(7D) | }(D0) | |
1 | 1(31) | A(41) | A(C1) | q(71) | J(4A) | J(D1) | |
2 | 2(32) | B(42) | B(C2) | r(72) | K(4B) | K(D2) | |
3 | 3(33) | C(43) | C(C3) | s(73) | L(4C) | L(D3) | |
4 | 4(34) | D(44) | D(C4) | t(74) | M(4D) | M(D4) | |
5 | 5(35) | E(45) | E(C5) | u(75) | N(4E) | N(D5) | |
6 | 6(36) | F(46) | F(C6) | v(76) | O(4F) | O(D6) | |
7 | 7(37) | G(47) | G(C7) | w(77) | P(50) | P(D7) | |
8 | 8(38) | H(48) | H(C8) | x(78) | Q(51) | Q(D8) | |
9 | 9(39) | I(49) | I(C9) | y(79) | R(52) | R(D9) |
Nella prossima tabella vengono forniti alcuni esempi per una serie di numeri semplici rappresentativi di ciò che è possibile inviare o ricevere utilizzando questi approcci.
Segno iniziale | Segno finale | |||||
Ambiente ASCII | Ambiente EBCDIC | Ambiente ASCII | Ambiente EBCDIC | |||
Valore decimale | Firma ASCII | Firma EBCDIC personalizzata | Firma ASCII | Firma EBCDIC personalizzata | ||
1234 | 31 32 33 34 |
31 32 33 34 |
F1 F2 F3 F4 |
31 32 33 34 |
31 32 33 34 |
F1 F2 F3 F4 |
+1234 | 31 32 33 34 |
41 32 33 34 |
C1 F2 F3 F4 |
31 32 33 34 |
31 32 33 44 |
F1 F2 F3 C4 |
-1234 | 71 32 33 34 |
4A 32 33 34 |
D1 F2 F3 F4 |
31 32 33 74 |
31 32 33 4D |
F1 F2 F3 D4 |
7890 | 37 38 39 30 |
37 38 39 30 |
F7 F8 F9 F0 |
37 38 39 30 |
37 38 39 30 |
F7 F8 F9 F0 |
+7890 | 37 38 39 30 |
47 38 39 30 |
C7 F8 F9 F0 |
37 38 39 30 |
37 38 39 7B |
F7 F8 F9 C0 |
-7890 | 77 38 39 30 |
50 38 39 30 |
D7 F8 F9 F0 |
37 38 39 70 |
37 38 39 7D |
F7 F8 F9 D0 |