Campi packed AS400

Massimo Deambrogio

Campi packed AS400
buongiorno e buon anno a tutti.
Su AS400 è possibile in un campo carattere storicizzare dei numeri
impaccati (packed), io devo estrarre questi valori utilizzando delle
istruzioni SQL, potete aiutarmi grazie.

--
Cordialmente, Best Regards
Massimo Deambrogio

Database & Business Intelligence Solutions
IBM Certified

Mobile +39 348.9008697
Fax +39 0141.440399
Web analog.it

#############################################################################################
AVVISO DI RISERVATEZZA
Qualora questa e-mail fosse da Voi ricevuta per errore vogliate
cortesemente darcene notizia a mezzo e-mail e distruggere il messaggio
ricevuto erroneamente.
Quanto precede ai fini del rispetto del D.Lgs 196/2003 sulla tutela dei
dati personali.
##############################################################################################

---------------------------------------------------------------------------------
Benvenuti alla lista DB2 User Group Italia.Per annullare l ' iscrizione collegarsi a : http://www.idugdb2-l.org/archives/DB2-UG-Italy.html. Selezionare "Join or Leave the list". Per consultare le IDUG Listserv FAQ collegarsi a :http://www.idugdb2-l.org. L'amministratore della lista DB2 User Group - Italy può essere raggiunto al seguente indirizzo: [login to unmask email] Per sapere le ultime novità sulle conferenze IDUG potete consultare : http://conferences.idug.org/index.cfm

Massimo Biancucci

R: Campi packed AS400
(in response to Massimo Deambrogio)
Non so che livello di SQL abbia ad oggi DB2/400, su z/OS funziona con questo:

SELECT
CASE
WHEN RIGHT(HEX(STRINGA),1) = 'C' THEN
DECIMAL(LEFT(HEX(STRINGA),LENGTH(HEX(STRINGA))-1))
ELSE
DECIMAL(LEFT(HEX(STRINGA),LENGTH(HEX(STRINGA))-1)) * -1
END AS NUMERO
FROM mytable
WITH UR;

Occorre che tu verifichi prima quale carattere sia il packed positivo (potrebbe essere F invece di C) ed eventualmente eseguire la modifica.

Spero sia utile.

Ciao.

-----Messaggio originale-----
Da: DB2 User Group - Italy List [mailto:[login to unmask email] Per conto di Massimo Deambrogio
Inviato: mercoledì 3 gennaio 2007 11.09
A: [login to unmask email]
Oggetto: Campi packed AS400

buongiorno e buon anno a tutti.
Su AS400 è possibile in un campo carattere storicizzare dei numeri impaccati (packed), io devo estrarre questi valori utilizzando delle istruzioni SQL, potete aiutarmi grazie.

--
Cordialmente, Best Regards
Massimo Deambrogio

Database & Business Intelligence Solutions IBM Certified

Mobile +39 348.9008697
Fax +39 0141.440399
Web analog.it

#############################################################################################
AVVISO DI RISERVATEZZA
Qualora questa e-mail fosse da Voi ricevuta per errore vogliate cortesemente darcene notizia a mezzo e-mail e distruggere il messaggio ricevuto erroneamente.
Quanto precede ai fini del rispetto del D.Lgs 196/2003 sulla tutela dei dati personali.
##############################################################################################

---------------------------------------------------------------------------------
Benvenuti alla lista DB2 User Group Italia.Per annullare l ' iscrizione collegarsi a : http://www.idugdb2-l.org/archives/DB2-UG-Italy.html. Selezionare "Join or Leave the list". Per consultare le IDUG Listserv FAQ collegarsi a :http://www.idugdb2-l.org. L'amministratore della lista DB2 User Group - Italy può essere raggiunto al seguente indirizzo: [login to unmask email] Per sapere le ultime novità sulle conferenze IDUG potete consultare : http://conferences.idug.org/index.cfm

---------------------------------------------------------------------------------
Benvenuti alla lista DB2 User Group Italia.Per annullare l ' iscrizione collegarsi a : http://www.idugdb2-l.org/archives/DB2-UG-Italy.html. Selezionare "Join or Leave the list". Per consultare le IDUG Listserv FAQ collegarsi a :http://www.idugdb2-l.org. L'amministratore della lista DB2 User Group - Italy può essere raggiunto al seguente indirizzo: [login to unmask email] Per sapere le ultime novità sulle conferenze IDUG potete consultare : http://conferences.idug.org/index.cfm

MARCO BORELLA

R: Campi packed AS400
(in response to Massimo Biancucci)
Scusate il ritardo ma ho avuto problemi di registrazione su DUGI.
___________________________________________________________________


Conviene testare tutte le combinazioni gestendo un eventuale "NULL" per i non packed.
Dalla posta non si capisce le il numero occupa tutta la lunghezza delle colonna carattere o meno .

il questo caso dovresti sostituire "HEX(STRINGA)" con"HEX(substr(STRINGA),1,???)" e LENGTH(HEX(STRINGA)) col la lunghezza reale (vedi caratteri in rosso) .

e se presenti delle posizioni decimali aggiungere una correzione (diviso 100 se ci fossero due decimali) nelle due
assegnazioni dovresti oltremodo modificare la select come segue

Esempio campo packed "PIC 9(7)v9(2) COMP-3"
SELECT
CASE
WHEN RIGHT(HEX(SUBSTR(xxxxx,1,5)),1) = 'D' THEN
DECIMAL(LEFT(HEX(SUBSTR(xxxxx,1,5)),10-1),15,2) * -1 /100

WHEN RIGHT(HEX(SUBSTR(xxxxx,1,5)),1) = 'C'
OR RIGHT(HEX(SUBSTR(xxxxx,1,5)),1) = 'F' THEN
DECIMAL(LEFT(HEX(SUBSTR(xxxxx,1,5)),10-1),15,2) /100

END AS NUMERO
FROM mytable
WITH UR;

se applicato ad una colonna con "SPACES" questo è il risultato:

REPORT LINE 1 POS 1 79



NUMERO
----------------------------------
-


*** END ***
ciao


Marco Borella
Intesa Sanpaolo S.p.A.
Rete Banca Intesa - Direzione Sistemi Informativi
Servizio Sistemi Applicativi - Ufficio Soluzioni Applicative
Incassi e Pagamenti - Rete e Sistemi di Pagamento
Tel.: +39.02.879.60573 Fax.:+39.02.879.67832
Mob.: +39.348.9159002
e-mail: [login to unmask email]

-----Messaggio originale-----
Da: DB2 User Group - Italy List [mailto:[login to unmask email] Per conto di MASSIMO BIANCUCCI
Inviato: mercoledì 3 gennaio 2007 13.54
A: [login to unmask email]
Oggetto: R: Campi packed AS400

Non so che livello di SQL abbia ad oggi DB2/400, su z/OS funziona con questo:

SELECT
CASE
WHEN RIGHT(HEX(STRINGA),1) = 'C' THEN
DECIMAL(LEFT(HEX(STRINGA),LENGTH(HEX(STRINGA))-1))
ELSE
DECIMAL(LEFT(HEX(STRINGA),LENGTH(HEX(STRINGA))-1)) * -1
END AS NUMERO
FROM mytable
WITH UR;

Occorre che tu verifichi prima quale carattere sia il packed positivo (potrebbe essere F invece di C) ed eventualmente eseguire la modifica.

Spero sia utile.

Ciao.

-----Messaggio originale-----
Da: DB2 User Group - Italy List [mailto:[login to unmask email] Per conto di Massimo Deambrogio
Inviato: mercoledì 3 gennaio 2007 11.09
A: [login to unmask email]
Oggetto: Campi packed AS400

buongiorno e buon anno a tutti.
Su AS400 è possibile in un campo carattere storicizzare dei numeri impaccati (packed), io devo estrarre questi valori utilizzando delle istruzioni SQL, potete aiutarmi grazie.

--
Cordialmente, Best Regards
Massimo Deambrogio

Database & Business Intelligence Solutions IBM Certified

Mobile +39 348.9008697
Fax +39 0141.440399
Web analog.it

#############################################################################################
AVVISO DI RISERVATEZZA
Qualora questa e-mail fosse da Voi ricevuta per errore vogliate cortesemente darcene notizia a mezzo e-mail e distruggere il messaggio ricevuto erroneamente.
Quanto precede ai fini del rispetto del D.Lgs 196/2003 sulla tutela dei dati personali.
##############################################################################################

---------------------------------------------------------------------------------
Benvenuti alla lista DB2 User Group Italia.Per annullare l ' iscrizione collegarsi a : http://www.idugdb2-l.org/archives/DB2-UG-Italy.html. Selezionare "Join or Leave the list". Per consultare le IDUG Listserv FAQ collegarsi a :http://www.idugdb2-l.org. L'amministratore della lista DB2 User Group - Italy può essere raggiunto al seguente indirizzo: [login to unmask email] Per sapere le ultime novità sulle conferenze IDUG potete consultare : http://conferences.idug.org/index.cfm

---------------------------------------------------------------------------------
Benvenuti alla lista DB2 User Group Italia.Per annullare l ' iscrizione collegarsi a : http://www.idugdb2-l.org/archives/DB2-UG-Italy.html. Selezionare "Join or Leave the list". Per consultare le IDUG Listserv FAQ collegarsi a :http://www.idugdb2-l.org. L'amministratore della lista DB2 User Group - Italy può essere raggiunto al seguente indirizzo: [login to unmask email] Per sapere le ultime novità sulle conferenze IDUG potete consultare : http://conferences.idug.org/index.cfm

---------------------------------------------------------------------------------
Benvenuti alla lista DB2 User Group Italia.Per annullare l ' iscrizione collegarsi a : http://www.idugdb2-l.org/archives/DB2-UG-Italy.html. Selezionare "Join or Leave the list". Per consultare le IDUG Listserv FAQ collegarsi a :http://www.idugdb2-l.org. L'amministratore della lista DB2 User Group - Italy può essere raggiunto al seguente indirizzo: [login to unmask email] Per sapere le ultime novità sulle conferenze IDUG potete consultare : http://conferences.idug.org/index.cfm