Ho cercato s9 (5) v99 ma ho ottenuto informazioni diverse e non molto chiaro. Qualcuno potrebbe mostrare come o la formula da convertire. graziecome formattare un numero su S9 (5) V99 ascii in .net
risposta
PIC S9(5)v99
non è un formato numerico. È una descrizione di come vengono memorizzati i dati e cosa significa lì. Ad esempio, un numero memorizzato come "-0010000" significa -100,00.
Che cosa stai cercando di realizzare esattamente? Stai cercando di inviare un decimal
-100.00 a un programma COBOL?
PIC -99,999.00
è un formato numerico. Specifica di usare un segno meno negativo se il numero è negativo, di usare cinque cifre prima della cifra decimale, con una virgola tra le migliaia, un punto decimale, quindi esattamente due cifre dopo. Un numero memorizzato in un campo PIC S9(5)V99
potrebbe essere ragionevolmente spostato in un campo PIC -99,999.00
.
Quello che ci avete mostrato qui è la parte di clausola PICTURE
di una dichiarazione di dati COBOL.
Le dichiarazioni di dati COBOL sono un po 'strane e ci vuole un po' di tempo per abituarsi. Ecco un collegamento a un tutorial introduttivo su COBOL data declarations. Questo dovrebbe iniziare.
La clausola di immagine che hai dato nella tua domanda è la definizione di una voce numerica con le seguenti caratteristiche:
S
- Leading segno9(5)
- 5 cifre decimaliV
- punto decimale implicita99
- 2 cifre dopo il punto decimale implicito
In pratica, si sta dicendo al compilatore COBOL di definire una variabile numerica in grado di contenere i valori da -99999.99 a +99999.99. Esattamente come il compilatore soddisferà questa richiesta dipende dalla specifica clausola USAGE
. Tuttavia, per gli articoli numerici contenenti una posizione decimale fissa , l'UTENTE "normale" è PACKED-DECIMAL
o COMP-3
(questi sono solo nomi diversi che indicano la stessa cosa). Questo link fornisce alcune informazioni introduttive riguardanti la rappresentazione di archiviazione dei dati decimali compressi.
I dati decimali preconfigurati sono utili per eseguire calcoli numerici in cui il numero di punti decimali deve essere rimanente.
La scrittura di dati decimali compressi su un rapporto o terminale non funziona particolarmente bene. È necessario convertirlo prima in un formato adatto a DISPLAY
. Ciò implica il valore decimale compresso di MOVE
in un'altra variabile con un attributo USAGE DISPLAY
. Supponiamo che la variabile decimale compressa sia stata chiamata PACKED-DECIMAL-NBR
e che stia mantenendo il valore -2345.01.Si potrebbe definire una variabile di visualizzazione per tenerlo come:
01 DISPLAY-NBR PIC+++,++9.99.
poi quando arriva il momento di scrivere/visualizzare il valore contenuto in PACKED-DECIMAL-NBR
si fare qualcosa di simile:
MOVE PACKED-DECIMAL-NBR TO DISPLAY-NBR
DISPLAY DISPLAY-NBR
I MOVE
convertiti il numero decimale impacchettato in una rappresentazione di carattere che è possibile visualizzare nei report o sul terminale. Viene visualizzato il valore -2,345.01
.
grazie Neal sulle informazioni sulla comp-3. – user392973
@ user392973 @John Saunders. Sulla base del tuo commento a John Saunders, è possibile che il tipo di USAGE che il tuo cliente sta cercando non sia PACKED-DECIMAL ma DISPLAY (meglio chiarirlo con il tuo cliente). Se USAGE è DISPLAY, quindi basta allocare una stringa da 8 byte e formattare il numero come indicato nella risposta che John ti ha dato. Se l'ambiente di destinazione è un mainframe IBM, il prossimo bit da osservare sono i problemi della code page tra i set di caratteri EBCDIC/ASCII. – NealB
Se queste persone vogliono un servizio Web per inviarli PACKED-DECIMAL o EBCDIC, devono svegliarsi e annusare il decennio. –
S in cobol è la definizione di un campo numerico con segno (cioè può essere positivo o negativo). Quindi, ad esempio, S999 è un numerico numerico (binario) con segno. Il problema è S presumibile, e nella maggior parte dei compilatori cobol, il modo in cui il segno è marcato consiste nel "sovrascrivere" l'ultimo carattere con un altro carattere per indicare più o meno. Ciò risulta, se si guarda il campo in un browser ascii, si avrà uno strano carattere. Vale a dire. MINUS 500 assomiglierebbe a questo 50C o 50} a seconda del personaggio sottostante e se fosse un + o - che aveva sovraffollato.
Perché ritieni che S999 sia "binario"? Non è necessario. S è "implicito", non "assunto". I campi VISUALIZZAZIONE DI UTILIZZO sono "overpunched", packed-decimal/comp-3 o binary/comp/comp-4/comp-5 non sono, in quanto non sarebbero "punzonati" in primo luogo. "50C" sarebbe positivo 503, "50}" è -500. Se si trattasse di un "+" che era stato sovraffollato, sarebbe un numero positivo. –
- 1. Come formattare un numero in ng: pluralizzare
- 2. Come convertire un valore ASCII in un carattere in .NET
- 3. Come formattare un numero in Expression Language?
- 4. Disimballaggio Decimali imballati EBCDIC (COMP-3) in una conversione ASCII
- 5. verbalmente formattare un numero in Python
- 6. Formattare un numero decimale in una vista
- 7. Come scrivere caratteri speciali ASCII in una stringa .net
- 8. Come convertire un numero in un carattere ASCII?
- 9. Come formattare un numero con padding in Erlang
- 10. Formattare un numero di telefono utilizzando Twig
- 11. conversione numero ascii in stringhe in R
- 12. Formattare il numero 11 come 00000011
- 13. Formattare un numero contenente un punto decimale con zeri iniziali
- 14. Come posso formattare un timestamp in Perl?
- 15. Come formattare un numero di telefono con jQuery
- 16. ORM eseguiti su .NET Core 5
- 17. Come formattare un QString?
- 18. Come convertire IDN in ASCII?
- 19. conversione manuale tra caratteri ASCII e .NET
- 20. C# Come formattare un numero in un esadecimale con un prefisso '0x'
- 21. Come formattare un FileTime personalizzato
- 22. Numero di classi in .NET?
- 23. Come formattare un numero in un controller ruby on rails, number_with_delimiter funziona solo nelle viste
- 24. Come formattare TimeSpan per la stringa prima di .NET 4.0
- 25. Come caricare un file .dll creato per un'altra versione .net in .Net 5?
- 26. Come posso convertire ascii esteso su System.String?
- 27. Come formattare unsigned int in un numero esadecimale di 8 cifre?
- 28. Come formattare il ruby logger su questo?
- 29. Grande numero in C# .NET
- 30. Formattazione di un numero intero come ottale
Desidero caricare un file su un servizio Web. Per le loro specifiche, il campo dell'importo è nel formato S9 (5) V99 – user392973
Voglio caricare un file su un servizio web. Secondo le loro specifiche, il campo dell'importo è nel formato S9 (5) V99. Il campo quantità nel nostro database sql è il campo decimale – user392973
@user: dovrebbero imparare una lingua diversa da COBOL. S9 (5) V99 non ha significato per nessuno che non sia un programmatore COBOL. –