EZCHART permite acessar o Interactive Chart Utility (ICU) do Graphic Data Display Manager (GDDM) a partir do programa VisualAge Generator.
A chamada a EZCHART é essencialmente uma chamada a um programa não-VisualAge Generator que converte os dados dos eixos X e Y no ponto flutuante e o passa ao ICU. Ocorre alguma verificação de parâmetros em EZCHART e os códigos de retorno são definidos de acordo com ela. O ICU não retorna nenhuma informação ao programa que faz a chamada. Todos os recursos que costumam estar disponíveis no ICU estão disponíveis ao usuário de programas VisualAge Generator.
Algum conhecimento de ICU é útil quando se usa EZCHART. Consulte a Presentation Graphics Feature (PGF) Reference para obter mais informações sobre o ICU. A introdução explica muitos dos termos usados e a descrição de CALL explica os parâmetros passados por VisualAge Generator Server for MVS, VSE, and VM.
Programa VisualAge Generator que usa EZCHART pode ser aquele que pede dados ao usuário através de vários mapas e depois os coloca no formato necessário, mostrando o resultado na forma de gráfico. A partir daí, o usuário do programa pode ser autorizado a alterar o gráfico, dependendo da opção DISPLAY indicada na lista de parâmetros pelo programa VisualAge Generator. Os programas que permitem sessão interativa com o ICU assumem que o usuário do programa conhece o ICU, porque o VisualAge Generator não tem nenhum controle sobre a sessão do ICU.
O programa VisualAge Generator pode ser programado para coletar e rearrumar os dados do usuário e depois imprimir os resultados em forma de gráfico, possivelmente com vários tipos de gráficos incorporando os mesmos dados. Nesse caso, o uso de EZCHART pode ser inteiramente transparente ao usuário do programa, porque PRINT pode ser uma opção definida num mapa VisualAge Generator que faz uma CALL a EZCHART com a opção PRINT e depois retorna ao programa VisualAge Generator.
Os analistas podem usar os programas VisualAge Generator para colocar dados coletados no ICU e modificar os gráficos. Esses gráficos podem então ser usados em outros programas VisualAge Generator.
A opção para exibir um gráfico sem sessão do ICU pode ser útil para demonstrações e reuniões, especialmente se a saída puder ser projetada numa tela grande.
Os parâmetros a seguir devem ser especificados na seguinte ordem:
Código de retorno, controle de tabela e controle de dados são parâmetros obrigatórios. Os outros parâmetros são opcionais.
Você pode deixar de fora parâmetros não usados do fim da lista ao chamar EZCHART e os dados simulados são passados para ICU, mas parâmetros não podem ser deixados de fora do meio da lista. Por exemplo, quando rótulos forem ser usados, XDATA ainda deve ser passado embora as informações nesse registro não serão usadas.
EZCHART pega a lista de parâmetros passados e faz o seguinte:
O código de retorno é um campo numérico de 4 bytes para código de conclusão. Esse campo não pode ser definido como binário e, deveria ser verificado se contém um valor não-zero no retorno da chamada à EZCHART.
Os seguintes códigos de retorno de erro podem ser recebidos de EZCHART:
O controle de tabela é uma estrutura de formato especificado contendo informações de controle necessárias para executar a sessão ICU:
A parte DISPLAY do parâmetro do Controle de Tabela controla o tipo de sessão ICU que é chamado. Existem oito opções de DISPLAY oferecidas pelo ICU; todas são suportadas e transparentes para o VisualAge Generator:
Se DATANAME for igual a um asterisco, você deve passar dados de eixo-Y em uma chamada à EZCHART. Caso contrário, resultados inesperados podem ocorrer.
Controle de dados é uma matriz de itens que indica o número de elementos em cada grupo de tabela. Esse deve ser uma definição de registro separada, definida como BIN 4 bytes, com o valor OCCURS definido para o número de grupos (NG) como especificado na tabela de controle. O recurso ICU requer que dados que são passados estejam na forma de ponto flutuante curto. Você não precisa estar familiarizado com essa forma, mas você deveria estar ciente que alguma perda de precisão pode ocorrer na conversão de partes fracionais de números, devido a truncagem.
Uma definição de registro, com:
Uma definição de registro, com:
Valores de dados ausentes no eixo-X e no eixo-Y: O ICU fornece um meio de indicar valores de dados ausentes nas matrizes de eixo-X e eixo-Y. Se você desejar especificar valores de dados ausentes na sua chamada EZCHART, você deve mover brancos para quaisquer elementos de matriz para os quais não há dados disponíveis. Para fazer isso, você deve sub-estruturar os elementos de matriz como campos caracteres como mostrado no exemplo a seguir:
Nome do Item Nível Ocorrs Tipo Comprim Dec Bytes YLENG 10 1 BIN 9 0 4 YDEC 10 1 BIN 9 0 4 YITEMS 10 xx NUM yy zz yy Y-MISSING 15 1 CHA yy zz yy
No exemplo, xx é o número de itens especificados no registro de Controle de Dados, yy é o valor em YLENG e, zz é o valor em YDEC. Quaisquer valores ausentes podem ser definidos pela seguinte instrução:
MOVE ' ' to Y-MISSING(subscrito);
A rotina EZCHART passa esses valores para o ICU como 10 na potência de 72. O ICU reconhece esse valor como um indicador de um valor de dados ausente. Consulte a Presentation Graphics Feature (PGF) Reference para determinar os efeitos causados sobre os diferentes tipos de gráficos.
Ao usar dados emparelhados, não especifique valores ausentes na matriz de eixo-X. Um erro GDDM ocorrerá.
É um registro contendo uma matriz de chaves para grupos de dados a serem usados na criação de uma tabela. Deve haver o mesmo número de chaves que o de grupos na tabela. O item tem que estar em registro separado e tem que ser definido como CHA com comprimento de chave especificado no Controle de Tabela e OCCURS como número de grupos especificados no Controle de Tabela.
É um registro contendo uma matriz de cadeias de caracteres que tem relação com rótulos através do eixo-X de certos tipos de tabelas (barras, setores, etc.) que são usados ao invés de dados do eixo-x na criação da tabela. O item tem que estar em registro separado e tem que ser definido como CHA com comprimento de legenda especificado no Controle de Tabela e OCCURS definido como o número de elementos especificados do Controle de Tabela.
É um registro contendo uma cadeia de caracteres que é usada para criar um cabeçalho na tabela solicitada. Tem que ser um registro definido como CHA (comprimento do cabeçalho especificado no Controle de Tabela).
Ambiente | Considerações de Compatibilidade |
---|---|
VM CMS | Nenhum. |
VM batch | Não suportado. |
CICS para MVS/ESA | Nenhum. |
MVS/TSO | Nenhum. |
MVS batch | Não suportado. |
IMS/VS | Não suportado. |
IMS BMP | Não suportado. |
CICS para VSE | Nenhum. |
VSE batch | Não suportado. |
CICS para OS/2 | Não suportado. |
OS/400 | Não suportado. |
OS/2 (GUI) | Não suportado. |
Windows (GUI) | Não suportado. |
OS/2 (C++) | Não suportado. |
AIX | Não suportado. |
CICS for AIX | Não suportado. |
HP-UX | Não suportado. |
Solaris | Não suportado. |
CICS for Solaris | Não suportado. |
Windows NT | Não suportado. |
CICS para Windows NT | Não suportado. |
Dispositivo de Teste | Nenhum. |
Para emitir uma chamada à EZCHART, você deve primeiro definir os seguintes registros:
Nome Item Nível Occors Tipo Bytes Descrição Return_code 77 1 NUM 4 /* 0=CALL bem-sucedida */
Nome Item Nível Occors Tipo Bytes Descrição LEVEL 10 1 BIN 4 /* Deve ser zero */ DISPLAY 10 1 BIN 4 /* Número de controle de acesso ICU */ HELP 10 1 BIN 4 /* 0=Info da PFkey não exibida */ ISLATE 10 1 BIN 4 /* 0=Usuário pode salvar e restaurar*/ FORM 10 1 CHA 8 /* Nome do gráfico salvo ou '*' */ DATA 10 1 CHA 8 /* Nome dos dados salvos ou '*' */ PAIRING 10 1 BIN 4 /* 1=Dados emparelhados (x e y) */ NGRPS 10 1 BIN 4 /* Número de grupos de dados */ NELEMS 10 1 BIN 4 /* Número de elementos de dados (max)*/ KEYL 10 1 BIN 4 /* Comprimento de chaves passadas */ LABELL 10 1 BIN 4 /* Comprimento de rótulos passados */ HDINGL 10 1 BIN 4 /* Comprimento de cabeçalho */ PRTNM 10 1 CHA 8 /* Nome de destino da impressão local */ PRTDEP 10 1 BIN 4 /* Profundidade de tabela na impressora*/ PRTWID 10 1 BIN 4 /* Largura de tabela na impressora */ PRCOPY 10 1 BIN 4 /* Número de cópias a imprimir */
Nome Item Nível Occors Tipo Bytes Descrição DCNTL 10 ? BIN 4 /* Número de elementos em cada */ /* grupo. */ /* Occurs = valor de */ /* CHART_CTRL_RECD.NGRPS */
Nome Item Nível Occors Tipo Bytes Dec Descrição XLENG 10 1 BIN 4 0 /* Comprimento total de campo */ XDEC 10 1 BIN 4 0 /* Número de casas decimais */ XITEMS 10 ? NUM ? ? /* Matriz de X itens, */ /* Occurs= total de todos DCNTL*/ /* ... + DCNTL(n) */ /* itens em DATA_CT */ /* ... RL_RECD */ /* Bytes = valor de XLENG */ /* Dec = valor de XDEC */
Nome Item Nível Occors Tipo Bytes Dec Descrição YLENG 10 1 BIN 4 0 /* Comprimento total de campo */ YDEC 10 1 BIN 4 0 /* Número de casas decimais */ YITEMS 10 ? NUM ? ? /* Matriz de Y itens, */ /* Occurs= total de todos DCNTL*/ /* ... + DCNTL(n) */ /* itens em DATA_CT */ /* ... RL_RECD */ /* Bytes = valor de YLENG */ /* Dec = valor de YDEC */
Nome Item Nível Occors Tipo Bytes Descrição KEYARR 10 ? CHA ? /* Occurs = valor de */ /* CHART_CTRL_RECD.NGRPS */ /* Bytes = valor de */ /* CHART_CTRL_RECD.KEYL */
Nome Item Nível Occors Tipo Bytes Descrição LABLAR 10 ? CHA ? /* Occurs = valor de */ /* CHART_CTRL_RECD.NELEMS */ /* Bytes = valor de */ /* CHART_CTRL_RECD.LABELL */
Nome Item Nível Occors Tipo Bytes Descrição HEAD 10 1 CHA ? /* Bytes = valor de */ /* CHART_CTRL_RECD.HDINGL */
Inicialize os valores de dados nos registros usado como parâmetros. Em seguida chame EZCHART usando o seguinte:
Call EZCHART RETURN_CODE, CHART_CTRL_RECD, DATA_CTRL_RECD, X_DATA_RECD, Y_DATA_RECD, KEY_ARRAY, LABEL_ARRAY, HEAD_RECD;