Friday 21 September 2018

Pic s9 08 opções binárias


Conversando Cobic PIC para SAS informats De: Dianne Rhodes em 14 Set 2006 13:12 Em Thu, 14 Set 2006 09:57:00 -0700, sdlenter ltsdlentert (a) AOLgt escreveu: gtthat realmente não ajudou. Gtis como PD gt gt Não, não era. Parecia que estamos pegando o mau hábito de não ser útil. Se você estiver no MF, você quer PD e RB. Da documentação on-line: A tabela a seguir compara a notação decimal compactada em várias linguagens de programação: Notation de idioma SAS PD4. COBOL COMP-3 PIC S9 (7) IBM 370 assembler PL4 PLI FIXED DEC A tabela a seguir compara os nomes da notação binária real em várias linguagens de programação: Idioma 4 Bytes 8 Bytes SAS RB4. RB8. FORTRAN REAL4 REAL8 C flutuador duplo COBOL COMP-1 COMP-2 IBM 370 montador E D Eu acredito em COBOL Comp é o mesmo que comp-1. Eu nunca vi comp-2 eu mesmo. Se você não estiver no mainframe, use os formatos S370 correspondentes mencionados. Dianne Rhodes BLS parte do COBOL cabal De: quotTerjeson, Markquot on 14 Sep 2006 13:26 A outra parte que entra em jogo é a plataforma a que você se referia. É uma plataforma mainframe ou mini, ou seja, EBCDIC ou ASCII ou é este arquivos de um EBCDIC para um sistema ASCII. A questão real é qual o estado (ou sabor) dos dados atualmente em EBCDIC e permanecer EBCDIC ou EBCDIC baixado para um Plataforma ASCII e o arquivo já foi convertido de EBCDIC para ASCII Se começarmos com o posterior, já convertido em ASCII, então os bytes e restrições para os campos PD ou ZD já foram corrompidos. Ou seja, você não quer os valores de byte EBCDIC mapeados para o conjunto de caracteres ASCII. Você quer que eles permaneçam intactos se estiverem indo para uma plataforma ASCII. Para fazer isso, faça o download da plataforma EBCDIC para a plataforma ASCII com FTP e altere o modo de ASCII para BINARY, o que informa o FTP não para converter, mas para deixar todos os bytes como está no arquivo. Em seguida, os formatos S370xxx funcionam simplesmente ótimos, e para pegar os outros textos apenas use ebcdic. Informar para alternar (mapa) as peças de texto de personagem. Mais importante ainda, se você pode fazer um despejo ou, de alguma forma, escrever um pequeno utilitário para exibir os valores de bytes na plataforma original, você pode ver visivelmente os dígitos do nibble (meio bytes) e ver o número real e os sinalizadores de letras para o nibble de sinal, Etc. Você pode seguir isso até a máquina de destino e ver se você possui os bytes originais ou se uma conversão não desejada já ocorreu. Claro, pode haver algo mais em jogo aqui para você, mas geralmente, se você manter o sabor do arquivo reto e usar os informats enlatados, ele geralmente funciona bem. Espero que isso seja útil. Mark Terjeson Analista de Programador Sênior, Grupo de Investimento Russell IMbr Russell Russell Leaders Globais em Multi-Manager Investing ----- Mensagem Original ----- De: SAS (r) Discussão mailto: SAS-L (a) LISTSERV. UGA. EDU Em nome do sdlenter Enviado: quinta-feira, 14 de setembro de 2006 9:57 AM Para: SAS-L (a) LISTSERV. UGA. EDU Assunto: Re: Convertendo o Cobol PIC para SAS informats que realmente não ajudaram. É como PD quotTerjeson, Markquot escreveu: gt Olá, gt gt Veja o SAS Informat S370FPDw. d para COBOL 9 (n) Veja o SAS Informat gt S370FZDw. d para COBOL S9 (n) gt gt gt gt Espero que isso seja útil. Gt gt gt Mark Terjeson gt Analista Programador Sênior, IMampR gt Russell Investment Group gt gt gt Russell gt Líderes Globais em Multi-Manager Investir gt gt gt gt gt gt ----- Mensagem Original ----- gt De: SAS (R) Discussão mailto: SAS-L (a) LISTSERV. UGA. EDU Em nome de gt sdlenter gt Enviado: quarta-feira, 13 de setembro de 2006 15:00 gt Para: SAS-L (a) LISTSERV. UGA. EDU gt Assunto: Conversão de Cobol PIC para SAS informats gt gt Como faço para converter o seguinte: gt PICTURE S9 (05) V99 COMP-3 gt PICTURE S9 (11) V99 COMP-3. Gt PICTURE S9 (11) COMP-3. Gt PICTURE S9 (13) COMP-3. Gt PICTURE S9 (05) COMP-3. Gt PICTURE S9 (03) COMP-3. Gt PICTURE S9 (15) COMP-3. Gt gt PICTURE S9 (04) COMP. Gt PICTURE S9 (18) COMP. De: quotTerjeson, Markquot em 14 de setembro de 2006 13:29 PS: Se o seu arquivo de dados original não for EBCDIC, talvez seja necessário verificar as informações do SAS PDw. d e ZDw. d, pois a notação S370 adiciona a conversão EBCDIC ao processo . ----- Mensagem Original ----- De: Terjeson, Mark Enviado: quinta-feira, 14 de setembro de 2006 10:26 AM Para: 039sdlenter039 SAS-L (a) LISTSERV. UGA. EDU Assunto: RE: Re: Convertendo Cobol PIC para SAS informats A outra parte que entra em jogo é a plataforma (s) a que você faria referência. É uma plataforma mainframe ou mini, ou seja, EBCDIC ou ASCII ou é este arquivos de um EBCDIC para um sistema ASCII. A questão real é qual o estado (ou sabor) dos dados atualmente em EBCDIC e permanecer EBCDIC ou EBCDIC baixado para um Plataforma ASCII e o arquivo já foi convertido de EBCDIC para ASCII Se começarmos com o posterior, já convertido em ASCII, então os bytes e restrições para os campos PD ou ZD já foram corrompidos. Ou seja, você não quer os valores de byte EBCDIC mapeados para o conjunto de caracteres ASCII. Você quer que eles permaneçam intactos se estiverem indo para uma plataforma ASCII. Para fazer isso, faça o download da plataforma EBCDIC para a plataforma ASCII com FTP e altere o modo de ASCII para BINARY, o que informa o FTP não para converter, mas para deixar todos os bytes como está no arquivo. Em seguida, os formatos S370xxx funcionam simplesmente ótimos, e para pegar os outros textos apenas use ebcdic. Informar para alternar (mapa) as peças de texto de personagem. Mais importante ainda, se você pode fazer um despejo ou, de alguma forma, escrever um pequeno utilitário para exibir os valores de bytes na plataforma original, você pode ver visivelmente os dígitos do nibble (meio bytes) e ver o número real e os sinalizadores de letras para o nibble de sinal, Etc. Você pode seguir isso até a máquina de destino e ver se você possui os bytes originais ou se uma conversão não desejada já ocorreu. Claro, pode haver algo mais em jogo aqui para você, mas geralmente, se você manter o sabor do arquivo reto e usar os informats enlatados, ele geralmente funciona bem. Espero que isso seja útil. Mark Terjeson Analista de Programador Sênior, Grupo de Investimento Russell IMbr Russell Russell Leaders Globais em Multi-Manager Investing ----- Mensagem Original ----- De: SAS (r) Discussão mailto: SAS-L (a) LISTSERV. UGA. EDU Em nome do sdlenter Enviado: quinta-feira, 14 de setembro de 2006 9:57 AM Para: SAS-L (a) LISTSERV. UGA. EDU Assunto: Re: Convertendo o Cobol PIC para SAS informats que realmente não ajudaram. É como PD quotTerjeson, Markquot escreveu: gt Olá, gt gt Veja o SAS Informat S370FPDw. d para COBOL 9 (n) Veja o SAS Informat gt S370FZDw. d para COBOL S9 (n) gt gt gt gt Espero que isso seja útil. Gt gt gt Mark Terjeson gt Analista Programador Sênior, IMampR gt Russell Investment Group gt gt gt Russell gt Líderes Globais em Multi-Manager Investir gt gt gt gt gt gt ----- Mensagem Original ----- gt De: SAS (R) Discussão mailto: SAS-L (a) LISTSERV. UGA. EDU Em nome de gt sdlenter gt Enviado: quarta-feira, 13 de setembro de 2006 15:00 gt Para: SAS-L (a) LISTSERV. UGA. EDU gt Assunto: Conversão de Cobol PIC para SAS informats gt gt Como faço para converter o seguinte: gt PICTURE S9 (05) V99 COMP-3 gt PICTURE S9 (11) V99 COMP-3. Gt PICTURE S9 (11) COMP-3. Gt PICTURE S9 (13) COMP-3. Gt PICTURE S9 (05) COMP-3. Gt PICTURE S9 (03) COMP-3. Gt PICTURE S9 (15) COMP-3. Gt gt PICTURE S9 (04) COMP. Gt PICTURE S9 (18) COMP. De: quotTerjeson, Markquot em 14 Set 2006 13:30 PPS: Com licença, uma maneira melhor de afirmar é se você estiver no EBCDIC e permanecer no EBCDIC, ou você está no ASCII e ficando no ASCII, então confira o PD de informats E ZD ----- Mensagem Original ----- De: Terjeson, Mark Sent: quinta-feira, 14 de setembro de 2006 10:29 AM Para: 039sdlenter039 039SAS-L (a) LISTSERV. UGA. EDU039 Assunto: RE: Re : Convertendo o Cobol PIC para SAS informats PS: Se o seu arquivo de dados original não for EBCDIC, talvez seja necessário verificar as informações do SAS PDw. d e ZDw. d, pois a notação S370 adiciona a conversão EBCDIC ao processo. ----- Mensagem Original ----- De: Terjeson, Mark Enviado: quinta-feira, 14 de setembro de 2006 10:26 AM Para: 039sdlenter039 SAS-L (a) LISTSERV. UGA. EDU Assunto: RE: Re: Convertendo Cobol PIC para SAS informats A outra parte que entra em jogo é a plataforma (s) a que você faria referência. É uma plataforma mainframe ou mini, ou seja, EBCDIC ou ASCII ou é este arquivos de um EBCDIC para um sistema ASCII. A questão real é qual o estado (ou sabor) dos dados atualmente em EBCDIC e permanecer EBCDIC ou EBCDIC baixado para um Plataforma ASCII e o arquivo já foi convertido de EBCDIC para ASCII Se começarmos com o posterior, já convertido em ASCII, então os bytes e restrições para os campos PD ou ZD já foram corrompidos. Ou seja, você não quer os valores de byte EBCDIC mapeados para o conjunto de caracteres ASCII. Você quer que eles permaneçam intactos se estiverem indo para uma plataforma ASCII. Para fazer isso, faça o download da plataforma EBCDIC para a plataforma ASCII com FTP e altere o modo de ASCII para BINARY, o que informa o FTP não para converter, mas para deixar todos os bytes como está no arquivo. Em seguida, os formatos S370xxx funcionam simplesmente ótimos, e para pegar os outros textos apenas use ebcdic. Informar para alternar (mapa) as peças de texto de personagem. Mais importante ainda, se você pode fazer um despejo ou, de alguma forma, escrever um pequeno utilitário para exibir os valores de bytes na plataforma original, você pode ver visivelmente os dígitos do nibble (meio bytes) e ver o número real e os sinalizadores de letras para o nibble de sinal, Etc. Você pode seguir isso até a máquina de destino e ver se você possui os bytes originais ou se uma conversão não desejada já ocorreu. Claro, pode haver algo mais em jogo aqui para você, mas geralmente, se você manter o sabor do arquivo reto e usar os informats enlatados, ele geralmente funciona bem. Espero que isso seja útil. Mark Terjeson Analista de Programador Sênior, Grupo de Investimento Russell IMbr Russell Russell Leaders Globais em Multi-Manager Investing ----- Mensagem Original ----- De: SAS (r) Discussão mailto: SAS-L (a) LISTSERV. UGA. EDU Em nome do sdlenter Enviado: quinta-feira, 14 de setembro de 2006 9:57 AM Para: SAS-L (a) LISTSERV. UGA. EDU Assunto: Re: Convertendo o Cobol PIC para SAS informats que realmente não ajudaram. É como PD quotTerjeson, Markquot escreveu: gt Olá, gt gt Veja o SAS Informat S370FPDw. d para COBOL 9 (n) Veja o SAS Informat gt S370FZDw. d para COBOL S9 (n) gt gt gt gt Espero que isso seja útil. Gt gt gt Mark Terjeson gt Analista Programador Sênior, IMampR gt Russell Investment Group gt gt gt Russell gt Líderes Globais em Multi-Manager Investir gt gt gt gt gt gt ----- Mensagem Original ----- gt De: SAS (R) Discussão mailto: SAS-L (a) LISTSERV. UGA. EDU Em nome de gt sdlenter gt Enviado: quarta-feira, 13 de setembro de 2006 15:00 gt Para: SAS-L (a) LISTSERV. UGA. EDU gt Assunto: Conversão de Cobol PIC para SAS informats gt gt Como faço para converter o seguinte: gt PICTURE S9 (05) V99 COMP-3 gt PICTURE S9 (11) V99 COMP-3. Gt PICTURE S9 (11) COMP-3. Gt PICTURE S9 (13) COMP-3. Gt PICTURE S9 (05) COMP-3. Gt PICTURE S9 (03) COMP-3. Gt PICTURE S9 (15) COMP-3. Gt gt PICTURE S9 (04) COMP. Gt PICTURE S9 (18) COMP. Reading COBOL Layouts Este tutorial sobre como ler um layout COBOL foi escrito especificamente para nossos clientes que tiveram uma conversão realizada no Disc Interchange e receberam um layout COBOL com os dados. Destina-se a dar-lhe informações suficientes para ler os layouts mais simples. Não abrange todos os tópicos ou tudo o que você encontraria em um layout complexo, e destina-se a explicar os layouts COBOL somente para que você possa usar seus dados convertidos, não para que você possa escrever programas COBOL. Este artigo começa aqui: Leitura COBOL Layouts onde você também encontrará um índice tópico. Parte 4: Campos numéricos Esta seção descreve vários tipos de dados numéricos e o tratamento de sinais e pontos decimais. Conteúdo desta seção: Precisa converter campos numéricos. Esse é o negócio COBOL que possui vários tipos de campos numéricos. Esses tipos de dados incluem um campo DISPLAY, que é composto de caracteres (os caracteres EBCDIC ou ASCII para 0 - 9), campos binários, campos compactados e campos de ponto flutuante. Há também opções para um separador separado ou um sinal, ou para um decimal real ou implícito. O tipo de dados é especificado pela cláusula USAGE IS. A cláusula de USUÁRIO É realmente mais na indicação de imagem do que anteriormente descrita anteriormente. Existe uma cláusula USAGE IS que especifica o tipo de armazenamento de um campo numérico - exibição, binário ou computacional. A sintaxe completa, por meio de um exemplo, é: Isto diz para armazenar o campo no formato computacional-3. O uso é parte é opcional e geralmente deixado, e computacional pode ser abreviado COMP, então você verá mais comummente este escrito. Os tipos de campos numéricos que você verá normalmente em layouts COBOL são: Exibição (incluindo campos assinados), computação binária ou Comp Comp-1 Comp-2 Comp-3 Display, incluindo Signed ou Zoned fields, é o mais comum, e comp-3 é o segundo tipo mais comum de campo numérico. Alguns compiladores também podem ter comp-4 e comp-5 tipos de dados, geralmente para emular comp em outro compilador. O uso é Display O formato de exibição é padrão para números no COBOL. Se nenhuma cláusula de uso é especificada, o uso padrão é exibido, o que significa que o valor é armazenado como caracteres EBCDIC (dígitos), em oposição ao binário. O valor pode ou não ter um decimal - implícita ou real - e pode ser sem assinatura ou ter um sinal incorporado ou separado - que pode ser líder ou posterior. O campo de formato de exibição assinado padrão contém um sinal de fuga embutido e geralmente é chamado de campo Assinado, ou assinado pela IBM ou Zonificado. Este tipo de dados é descrito abaixo. Campos assinados Existe um tipo de dados numéricos comum usado no COBOL em mainframes IBM chamados de Assinado (também chamado de IBM Signed ou Zoned). COBOL representa este tipo de campo por um S na cláusula de imagem de um campo de formato de exibição, e. PIC S9 (6). Um campo assinado é composto de caracteres numéricos EBCDIC regulares, um caractere por byte, para todos os dígitos, exceto o que contém o sinal, ou o sinal mais significativo (sinal de liderança) ou o menos significativo (sinal de rastreio) - geralmente o Dígito menos significativo O dígito que contém o sinal combina, ou supera o sinal do número nesse dígito. Isso economiza um byte que o sinal ocuparia de outra forma. O valor desse dígito é armazenado como um valor binário e é ORd com o código de sinal, que é D0 hex para números negativos, C0 hex para valores positivos e F0 hex para valores não assinados. Por causa do sobrepacho, o dígito que contém o sinal não aparecerá como um número quando o campo for exibido no modo de caractere EBCDIC. Se você tiver o campo e ver um valor de 1.23 com um editor EBCDIC, ele lerá 0000012C. Os compiladores ASCII COBOL também usam um tipo de dados assinado com um overpunch, mas os bits de sinal são diferentes e não padronizados entre compiladores. Consulte nossos campos assinados com o Tech-Talk para obter mais detalhes sobre os campos EBCDIC e ASCII Signed. Sign is Separate COBOL assinado campos incorporar o sinal no valor por padrão (ver campos assinados acima). Mas existe uma provisão no COBOL para um sinal separado, e pode ser líder ou posterior. A declaração para isso é combinada com a frase principal ou posterior: esta afirmação pode ser aplicada a um item elementar (campo) ou a todo o registro. Campos computacionais e binários Como os computadores executam cálculos com números binários, é mais eficiente armazenar esses valores no arquivo em sua forma binária nativa do que armazená-los em bases base legíveis humanos. Se o número estiver armazenado em seu formato binário nativo, ele pode ser inserido a partir do arquivo e usado diretamente. Se estiver armazenado em um formato de base dez, ele precisa ser convertido em binário antes de executar cálculos nele, então convertido de volta para a base dez para armazenamento. COBOL define vários tipos de dados binários. Vamos listar um breve resumo aqui, e você pode encontrar mais detalhes em Campos Computacionais COBOL e em Campos embalados COBOL Comp-3. Antes de começar, há um ponto importante para entender: o padrão COBOL deixa a implementação real da maioria dos tipos de dados até o fornecedor que escreveu o compilador COBOL. A razão para isso é porque diferentes computadores - CPUs - usam diferentes representações binárias internamente e funcionam melhor com seu próprio tipo de números binários. Esta abordagem resulta em compiladores melhores e mais rápidos, mas também causa confusão, porque um tipo de dados comp em uma máquina não é necessariamente o mesmo que comp em outra máquina. A tabela abaixo lista os usos comuns, não todos os compiladores seguirão esses tipos. Para mais detalhes sobre ordem de palavras e sinais, veja o link acima. O tipo de dados que um campo usa para armazenamento é determinado pela cláusula de uso na definição do campo e, na maioria dos casos, o número de bytes de armazenamento é determinado pelo número de dígitos no PIC. Os números de ponto flutuante seguem formatos binários padrão e, como tal, seus tamanhos não são determinados por um PIC e nenhum PIC é usado na definição do campo. Descrição de como esse tipo de dados está armazenado. O decimal empacotado geralmente é implementado como comp-3. Veja comp-3. Ao ler uma especificação de campo binário ou comp, o tamanho listado no PIC é o número de dígitos decimais após o número ser convertido de binário para base dez. No caso de um campo embalado, é o tamanho após a desembalagem. Decimal Real A maioria dos programadores de PC tendem a pensar em termos de decimal real em valores numéricos. Em um PC, se você tiver um valor de dólares e centavos para, digamos, total de faturamento, no valor de 123,45, o arquivo conterá os seis bytes 123,45 (e provavelmente um sinal). Em outras palavras, existe um ponto decimal real no arquivo. COBOL também pode fazer isso através do seguinte: OU: A presença do. No PIC causa um decimal real no arquivo. O decimal implícito, no entanto, é muito mais comum no COBOL. Decimal implícito decimal implícito simplesmente significa que há um ponto decimal implícito em um local especificado em um campo, mas não realmente armazenado no arquivo. A localização do decimal implícito é indicada por um V no PIC. Usar decimal implícito economiza espaço no arquivo. O decimal implícito pode ser aplicado a qualquer tipo de campo numérico, incluindo um campo compactado ou comp-3. Por exemplo, é um campo decimal implícito. Existem 6 dígitos, então uma decimal implícita - o V - e mais 2 dígitos, para um total de 8 dígitos. O campo tem 8 bytes de tamanho, não há. No arquivo - a localização do ponto decimal está implícita entre os 9 (6) e os 99. Se o campo contiver 00000123, o saldo da conta é 1.23, porque há uma porcentagem implícita entre os dólares e centavos. Sincronização e Alinhamento Este tópico é um pouco envolvido para este tutorial, mas você deve estar ciente disso. Ao usar o armazenamento binário (binário e comp), alguns compiladores em algumas máquinas podem exigir que um campo numérico comece em algum limite. Por exemplo, em uma máquina de 32 bits, pode exigir que um campo de comp funcione em um limite de 32 bits. Se você especificar um campo comp no meio de um registro, e não acontecerá começar em um limite de 32 bits (4 bytes), o compilador irá alinhá-lo a um limite de 32 bits para sincronizá-lo. O que realmente é armazenado no arquivo pode não ser o mesmo que os PICs no layout indicam. Este não é um problema muito comum, em parte porque os campos binário e comp não são muito comuns nos arquivos, mas você deve estar ciente disso. Informações adicionais Para mais artigos sobre a conversão de dados, consulte nosso Índice TechTalk. Nossa empresa de serviços de intercâmbio de disco de serviços de conversão COBOL pode converter a maioria dos tipos de dados numéricos, incluindo todos os tipos de dados EBCDIC mainframe IBM e a maioria dos tipos de dados ASCII de sistemas PC e UNIX. Nossa biblioteca de rotinas de conversão nos permite lidar com os trabalhos difíceis que os compiladores COBOL padrão não podem converter. S9 (9) COMP e S9 (8) COMP S9 (9) COMP e S9 (8) COMP Hi All, Qual é o número máximo que pode Ser espremido nos dois campos PIC diferentes acima e como a opção de compilador TRUNC (BINOPTSTD) o afeta. A razão pela qual eu pergunto é que estou trabalhando com um produto chamado HPS que define seus campos inteiros como S9 (8) COMP, e depois o move para um campo Inteiro DB2, que é S9 (9) COMP. Existe a preocupação de que os dois sejam incompatíveis. RE: S9 (9) COMP e S9 (8) COMP k5tm (Programador) 23 Jul 02 11:46 Primeiro comentário Thread209-205700 onde eu respondi a questão de quantos dígitos decimais podem ser representados por 31 dígitos binários. Claro, o truncamento padrão é feito em limites decimais, independentemente da representação de dados subjacente. Meu palpite é que você não terá problemas para mover S9 (8) para S9 (9) sob qualquer uma das opções TRUNC. Se o movimento fosse a outra direção, haveria diferenças. Em qualquer caso, parece que TRUNC BIN seria mais seguro para seu problema, assumindo que não causa efeitos colaterais indesejados. RE: S9 (9) COMP e S9 (8) COMP Tom, eu li o tópico. E então eu lê-lo novamente. Depois de tomar um par de comprimidos e ter uma mentira, eu tive outro go e ainda não tenho certeza de que eu entendo, eu sei que comp S9 (8) e comp S9 (9) ocupam o mesmo armazenamento (palavra cheia) e estou ciente de que com A opção TRUNC (BIN) do compilador, o truncamento não deve ocorrer como seria com TRUNC (STD). Estou com a impressão de que, com um campo comp S9 (4), há um número máximo que o campo pode conter, que por seu exemplo no segmento, é 32043. Isso é o mesmo para comp S9 (89) e são esses valores Diferente, acho que a pergunta que eu pergunto é que, se eu preenchesse o campo S9 (9) comp com o maior valor que poderia demorar, e movi-lo para um campo S9 (8), isso permaneceria o mesmo valor. Espero que isso faça sentido E por favor perdoe minha ignorância na frente de matemática RE: S9 (9) COMP e S9 (8) COMP Dimandja (Programador) 23 Jul 02 19:50 Meu entendimento de S9 (9) COMP e S9 (8) COMP é COBOL Manipule qualquer número até -999,999,999 e -99,999,999, respectivamente. Quanto à comparação de Inteiros com COBOL PIC 9s: COBOL PIC 9 (4) COMP max 9,999 COBOL PIC 9 (5) COMP max 99,999 COBOL NATIVE-2 max 65,535 16 bit Inteiro máx. 65,535 COBOL PIC 9 (8) COMP max 99,999,999 COBOL PIC 9 (9) COMP max 999,999,99 COBOL NATIVE-4 max 4,294,967,295 32 bit Inteiro max 4,294,967,295 RE: S9 (9) COMP e S9 (8) COMP Dimandja (Programador) 24 Jul 02 06:20 COBOL PIC 9 (4) COMP max 9,999 COBOL PIC 9 (5) COMP max 99,99 COBOL NATIVE-2 max 32,767 16 bit Inteiro max 32,767 COBOL PIC 9 (8) COMP max 99,999,999 COBOL PIC 9 (9) COMP max 999,999,999 COBOL NATIVE-4 max 2,147,483,647 32 bit Inteiro máximo 2,147,483,647 RE: S9 (9) COMP e S9 (8) COMP k5tm (Programador) 24 Jul 02 10:05 Espero que eu não tenha confundido demais. Para reiterar: Você declarou que sua questão estava movendo PIC S9 (8) para PIC S9 (9). Sob regras de truncamento decimal, isso não deve causar nenhum problema. Da mesma forma, sob truncamento binário, não acho que haja um problema. Se você tiver dados indo do outro lado, de 9 (9) para 9 (8), então você definitivamente pode ter trunfo decimal. O truncamento binário não deve ser um problema, embora eu não sou um especialista em seu compilador particular. RE: S9 (9) COMP e S9 (8) COMP Crox (Programador) 24 Jul 02 12:03 Tente usar COMP-5 em vez de COMP. Isso funcionará o mesmo para a mesma alocação de armazenamento. Leia seu manual sobre isso COMP-5 é quase sempre melhor do que COMP. RE: S9 (9) COMP e S9 (8) COMP Todos, eu não posso usar o Comp-5 como se eu tivesse uma tabela do DB2 e sua definição dclgen e, por outro lado, a definição HPS, que não são 100 iguais . Eu estou em um manframe e estou usando um deck de compilação xpediter que eu acho que está usando cobol370, embora eu não seja positivo sobre isso. É óbvio que não há problema de 9 (8) comp para 9 (9) e estou começando a dar a impressão de que o valor máximo para o 9 (9) comp é o mesmo que 9 (8) comp usando um TRUNC (BIN ) Compilar opção. Eu acho que Dimandja entendeu direito dizendo que o máximo para uma meia palavra é 32767 e o máximo para uma palavra completa é 2,147,483,647. Eu acho que ambos os 9 (8) e 9 (9) comp manterão este máximo, embora eu esteja aberto a ser persuadido de outra forma se alguém puder me mostrar a matemática. Eu acho que talvez eu tenha que bater um programa que mova os valores para os campos relevantes e veja o que acontece. Tenho certeza de que fiz isso com o 32767 há muitos anos, e você obtém um abend. Vou tentar amanhã e informar de volta, a menos que alguém conheça o contrário. Marc RE: S9 (9) COMP e S9 (8) COMP slade (Programador) 24 Jul 02 21:44 Ive apresentou o seguinte como fato, porque parece mais claro sem todos os maios e perhapes, mas não tenho certeza se é verdade. Eu gosto de ouvir o que você pensa. Não sei se esse ponto foi abordado, mas o cálculo da capacidade de uma meia palavra, palavra ou palavra dupla depende se ou não o campo é descrito como assinado ou não assinado e a opção TRUNC selecionada no tempo de compilação. Como me lembro, o sinal usa o bit de alta ordem do campo, reduzindo a capacidade. Supondo TRUNC (BIN), um campo COMP de metade da palavra definida como PIC 9 tem a capacidade de manter um valor até 65,535 decimal (XFFFF), o mesmo campo, definido como PIC S9, pode conter um valor de até 32.767 decimal (X7FFF). RE: S9 (9) COMP e S9 (8) COMP Dimandja (Programador) 25 Jul 02 15:53 ​​Isso é do meu manual COBOL85 (TandemCompaqHP): Os intervalos de valores para os tipos NATIVE-2 (16 bits), NATIVE-4 (32 bits) e NATIVE-8 (64 bits) são: Tipo Lower Bound Upper Bound NATIVE-2 -32768 32767 NATIVE-4 -2147483648 2147483647 NATIVE-8 -9223372036854775808 9223372036854775807 Os intervalos de valores para o tipo COMPUTATIONAL-5 são: O certificado PIC S9 (1) - PIC S9 (4) é NATIVO-2 -32,768 até 32,767 (assinado) ou 0 a 65,535 (não assinado) PIC S9 (5) - PIC S9 (9) NATIVO-4 -2,147,483,648 até 2,147,483,647 (assinado ) Ou 0 a 4.294.967.295 (não assinado) PIC S9 (10) - PIC S9 (18) NATIVE-8 -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 (assinado) ou 0 a 18,446,744,073,709,551,615 (não assinado) Isso deve esclarecer um pouco. RE: S9 (9) COMP e S9 (8) COMP Oi tudo, primeiro graças a todos vocês, porque todos ajudaram de uma forma ou de outra, mas eu acho que as postagens de Dimandjas foram as mais úteis, então eu vou dar D a Estrela. Espero que esteja bem com o resto de vocês. O que eu amo sobre este jogo é que, não importa quanto tempo você o tenha feito, há sempre algo novo para descobrir, mesmo que você tenha abordado isso há anos atrás. Eu recebi o erro nessa questão quando alguém a propôs como um problema na segunda-feira. O sistema definiu um valor em um campo comp S9 (8) comp e moveu-o para um campo db2 S9 (9) comp em uma tabela e a tabela foi atualizada. O cenário que me foi apresentado foi que estava causando um problema na produção, pois os grandes valores estavam entrando na tabela, que não poderia ser lido posteriormente usando o campo S9 (8) como chave. Foi-me dito que TRUNC (BIN) estava sendo usado. Meu primeiro argumento foi que, se fosse SEMPRE proveniente do campo S9 (8) comp, não deveria ser um problema. Foi-me dito que isso não parece ser o caso. Eu ainda tinha a sensação de que isso não deveria ter sido um problema porque eu tinha certeza de que o número de dígitos especificados no tamanho do campo era irrelevante quando TRUNC (BIN) como havia um valor máximo em meia palavra, palavra, etc. As postagens aqui tipo De confirmar meu pensamento, especificamente Dimandjas. Então, hoje, escrevi um programa para mover vários valores para vários campos. Os resultados me surpreenderam. Movi 32768 para um campo S9 (4) COMP e olhei o valor. Ele continha -32768. Vários valores mais elevados movidos para o campo produziram vários números negativos mais baixos. Eu relatei minhas descobertas, a saber, que S9 (8) COMP e S9 (9) COMP, quando usado com a opção TRUNC (BIN), conteriam exatamente o mesmo valor máximo, apenas para serem informados. Oh não, o deck de compilação é TRUNC (STD). - O que causa um problema Para resumir tudo isso: TRUNC (STD) seguirá o PIC que você definiu, então S9 (4) COMP permitirá um máximo de 9999 e um mínimo de -9999 TRUNC (BIN) dará: S9 a S9 (4) COMP-32768 a 32767 S9 (5) a S9 (9) COMP -2147483648 a 2147483647 remover o sinal desta opção muda o intervalo para: 9 a 9 (4) COMP 0 a 65535 9 (5) a 9 ( 9) COMP 0 a 4,294,967,295 Mais uma vez, obrigado por toda sua ajuda. MarcA1 PIC X40841 valor 1. A2 s940841 Comp redefine A1. (Valor Hex em A1 30 30 30 30 30 30 30 31) (valor hexadecimal em A2 30 30 30 30 00 00 00 01) Sua definição de exemplo para A1 contém o caractere 1 seguido de sete espaços em branco. A redef de A1 como A2 só redefiniria os quatro primeiros caracteres de A1, e não os oito octetos inteiros de A1. O valor hexadecimal em A1 seria XF140404040404040. O valor hexadecimal em A2 seria XF1404040. O valor numérico de A2 seria 4047519808. Não tenho ideia de como você obteve os valores ASCII em A1. Não tenho ideia de como você obteve o valor 1 para justificar a direita e levando os espaços em branco convertidos em zeros. Não tenho ideia de como sua redef conseguiu mudar os quatro bytes direito. Como visto, o valor acima em A2 não é numérico, pois ele tem x00 (ou seja, NULL). Os nulos em A2 são números compênicos, juntamente com o trailing 01. Minha exigência é obter 30 30 30 30 30 30 30 31 em A2. De modo que eu possa usá-lo para operações numéricas. Supondo que você tenha um decimal com data válida em A1 e que realmente quer que A2 contenha valores COMP (binários) válidos, veja acima Se você realmente quisesse que A2 contenha dígitos decimais com data válida para usar para operações numéricas, remova O COMP na rede A2. Nota: é obrigatório para mim usar uma variável comp. Por que é obrigatório? Você não pode usar o decimal compactado ou este código está sendo executado em uma máquina que nativamente não suporta instrução decimal compactada? Deixe-me saber se há mais informações necessárias do meu lado. Inicialmente, apenas as respostas às perguntas acima.

No comments:

Post a Comment