Vi è mai capitato di non riuscire a visualizzare correttamente un carattere non latino?

In questo articolo, vi illustrerò una UPP di esempio che risolve questo problema sfruttando la conversione del contenuto in esadecimale.

Cosa è la UPP C£_141?

La UPP C£_141 è stata sviluppata per mostrare un esempio di gestione dei caratteri non latini.

In particolare, è stata sviluppata per poter superare il problema di far transitare nelle variabili di tipo stringa tutti i caratteri che Unicode è in grado di gestire; evitare quindi una perdita di informazione per i caratteri non compresi nel CodePage collegato al CCSID del JOB.

Per  poter realizzare questa UPP è stata creata la /COPY £C£9, che svolge funzioni di interfaccia (lettura, inserimento, aggiornamento, cancellazione) per un nuovo file chiamato C£LIUN0F, in cui, a partire dalle descrizioni convertite in esadecimale vengono scritti sia un campo UTF-16, sia un campo stringa contenente le descrizioni codificate in esadecimale.

Funzionamento

Il client “capisce” che un campo deve essere convertito in valore esadecimale, effettua la conversione in HEX e invia il campo al server.
Il servizio riceve la stringa codificata come se fosse un campo qualsiasi.
Sta a chi implementa il servizio o, nel caso di un utilizzo con LOA36/£K89, il programma specifico della £K89, trattare in modo adeguato la stringa ricevuta e memorizzarla o rileggerla utilizzando la /COPY £C£9.

Come capisce il client che è un campo particolare?

Il client è in grado di capire se il campo deve essere trattato in modo particolare in base alla presenza di due proprietà nell’XML della colonna della griglia:

  • Cmp = “Itx” o Cmp=”Lbl”
  • Ext = “EncodeTo(HEX)”

Come è possibile vedere nel seguente esempio, la colonna della ‘Descrizione Codificata’ presenta la proprietà Cmp=”Itx” .

Mentre nel seguente caso, viene utilizzata la proprietà Cmp=”Lbl”.

Cmp=”Itx” o Cmp=”Lbl”?

Itx è il componente Input Text che permette di ottenere un campo modificabile, mentre Lbl è il componente Label che rende il campo di ‘Sola Lettura’.

Come vengono settate queste proprietà?

Nel servizio di esempio C£_141_01 è possibile osservare come vengono impostate queste proprietà.
Oltre alla consueta schiera £JAXSWK che contiene l’elenco dei campi della griglia, viene impostata la schiera £JAXSW3, che contiene le proprietà aggiuntive e che estende la £JAXSWK, utilizzando la DS £JAXDSCO3.
Nel riempire la £JAXSW3 non è necessario impostare tutte le colonne presenti nella £JAXSWK.
Le /COPY £JAX utilizzano il codice della colonna (£JAX3CD) per capire a quale elemento della schiera £JAXSWK corrisponda un elemento della £JAXSW3.
Gli altri campi della DS da riempire sono £JAX3CO per la proprietà Cmp e £JAX3EC per la proprietà Ext.

Utilizzare la UPP

Prima di iniziare ad utilizzare la UPP, cerchiamo di capire il concetto di chiavi e l’importanza del campo “Descrizione Codificata”.

Le chiavi sono dei campi che servono ad identificare in modo univoco una descrizione. Ci sono due tipi di chiavi: obbligatorie e facoltative.

Le chiavi obbligatorie, necessarie affinché la UPP funzioni correttamente, sono le seguenti:

  • Tipo
  • Parametro
  • Codice

Mentre per chiavi facoltative si intendono quei campi aggiuntivi che vengono completati per classificare nel miglior modo possibile una descrizione. Le chiavi in questione sono le seguenti:

  • Oggetto 1
  • Codice 1

Infine, la “Descrizione Codificata” è il campo nel quale inserire frasi, caratteri che vogliamo memorizzare. Questo è il campo che verrà convertito in esadecimale.

Dopo questa breve spiegazione relativa ai campi presenti nella UPP, procediamo a illustrare la scheda di esempio C£_141_01, caratterizzata da 4 tab:

  1. Scrittura con UpdSvc
  2. Test con dinamismo
  3. Lettura descrizione
  4. Input con Layout

Scrittura con UpdSvc

Questo tab di esempio è caratterizzato da un input panel dove vengono indicate le chiavi, sia obbligatorie che facoltative,  e la descrizione codificata. Siccome, svolge anche la funzione di matrice di aggiornamento, grazie alla proprietà IO settata su “B”, è possibile inserire, modificare e cancellare la descrizione.

Per quanto riguarda la scrittura o la modifica di una descrizione codificata, sono necessarie le chiavi obbligatorie e il campo delle ‘Descrizione Codificata’. Se necessario, possono essere utilizzate anche le chiavi facoltative. Mentre per la cancellazione bisogna indicare le chiavi obbligatorie e le eventuali chiavi facoltative utilizzate, lasciando vuoto il campo della descrizione.

Test con dinamismo

In questo tab, viene visualizzata  una matrice contenente degli esempi di descrizioni che si possono inserire o aggiornare, attraverso l’utilizzo di un dinamismo. Una volta che viene selezionata una riga della matrice, la descrizione con le sue chiavi viene salvata o sovrascritta nel file C£LIUN0F. Successivamente viene aggiornata la parte inferiore della pagina, dove viene visualizzata la descrizione codificata che abbiamo appena inserito e il corrispondente valore in esadecimale.

Lettura descrizione

In questo tab, viene semplicemente visualizzata la descrizione che abbiamo inserito in precedenza. Per fare ciò , bisogna indicare tutte le chiavi (obbligatorie e facoltative) associate alla descrizione che vogliamo visualizzare. Il risultato verrà riportato nella sezione sottostante, mostrando la descrizione all’interno sia di una matrice che di un input panel.

Input con layout

In quest’ultimo tab, viene visualizzato un input panel, i cui campi vengono impostati  tramite un layout, senza che le proprietà Cmp e Ext vengano settate dal servizio. Le operazioni che si possono svolgere sono la lettura, l’aggiornamento e la cancellazione.

Nel seguente esempio, abbiamo il layout applicato al soprastante input panel.