Existe alguma maneira para acessar o SQL Server a partir de z de mainframe / OS e ter o resultado na IBM 3270 emulação de terminal?

StackOverflow https://stackoverflow.com/questions/2220191

Pergunta

Existe alguma maneira (possivelmente barato) para acessar o Microsoft SQL Server a partir z de mainframe / OS (programas COBOL) e ter o resultado em 3270 emulação de terminal?
Estou ciente de que 3270 é um sistema muito antigo, mas no banco CED, ainda é muito popular.

Foi útil?

Solução

Depende do que você está realmente tentando fazer. Minha leitura de sua pergunta é que você quer ter um mainframe baseado acesso processo de um banco de dados SQL Server, e em seguida, fazer alguma coisa com o resultado, provavelmente envolvendo a 3270 terminal.

Se você pode usar Unix System Services, você pode compilar uma biblioteca TDS como FreeTDS e, em seguida, usar um programa C para fazer o que quiser com o resultado. Se você quiser obter mais complexo, você pode executar a ligação do ambiente z / OS nativo por compilar o código com a IBM C, SAS C ou Dignus C / C ++ . Posso recomendar Dignus e eu tê-lo usado para construir o código que interage com outros idiomas no z / OS. O cabeçalhos e tempo de execução biblioteca Dignus tem (de memória) algumas linhagem FreeBSD que ajuda a simplificar a portabilidade.

Usando essa abordagem, você pode obter um módulo de carga que você pode chamar de alguma outra parte do seu sistema para fazer o trabalho, você pode vincular o código com outras partes de seu sistema, ou você pode simplesmente enviar um trabalho e obter o saída.

Se você quiser usar Java, você pode usar algo como jTDS e escrever código Java para fazer o que você precisa. Eu não usei Java no z / OS, por isso não pode oferecer aconselhamento específico lá, mas eu tenho usado jTDS em outras plataformas e tenho sido feliz com o resultado.

Update:

Você pode exportar uma função C como ponto de entrada para um módulo de carga e, em seguida, chamar isso de Cobol. necessidades de implementação do C / C ++ para lidar com estruturas de dados COBOL; eles são bem definido e previsível de modo que não é um problema. Dependendo de como flexível você precisa de coisas para ser, você poderia compilar a consulta no código C e só tem uma função que executa uma consulta predefinida e tinha uma interface para recuperar o resultado, ou você poderia ter algo mais complexo onde a consulta foi fornecido a partir do programa Cobol.

Eu tenho usado essa abordagem para fornecer funções de API para desenvolvedores Adabas / Natural e funcionou bem. O compilador Dignus tem um mecanismo para chamadas para fornecer um identificador para uma biblioteca de tempo de execução para que você possa gerenciar a vida útil do ambiente C tempo de execução do programa de chamada.

Para desenvolvedor um C / C ++, que deve ser bastante simples. Se seus desenvolvedores são todos os desenvolvedores em Cobol, as coisas poderiam ser um pouco mais complicado.

A abordagem gateway é possível, e eu tenho certeza que existem produtos de gateway de volta, mas eu não posso recomendar um. Eu vi aqueles ruins que eu não recomendo, mas isso não significa que não é um bom lugar.

Para completar, eu vou mencionar a possibilidade de implementar o protocolo TDS em Cobol. Soa como castigo cruel e habitual, no entanto.

Outras dicas

Se você tem 3270 emulação de terminal, o que terminais você está usando? do PC?

Um truque interessante é usar um roteador Cisco para fazer na mosca 3270 para conversão de baunilha TCP, e em seguida, escrever um proxy TCP simples para seus procedimentos SQL Server

Não como tal - 3270 emuladores são conectar a um mainframe IBM. A fim de obter os dados de um banco de dados SQL Server em um mainframe, você teria que escrever um programa em execução no mainframe que lê os dados do DB servidor SQL. Isso exigiria que você tenha o software do driver em execução no mainframe. Você pode ser capaz de encontrar um terceiro que faz este tipo de coisa, mas é provável que seja muito caro.

Se você precisa para montar um relatório ou algo que combina dados de um sistema de mainframe com fontes de dados externas pode ser mais fácil de obter os dados do mainframe e fazer a integração em outros lugares -. Talvez algum tipo de data mart

Uma alternativa seria a dados THD extrato que você quer a partir do banco de dados SQL Server e enviá-lo para o mainframe como um arquivo simples para o processamento de lá.

Aqui é uma possibilidade se você estiver escrevendo programas COBOL que estão em execução no CICS.

Em primeiro lugar, envolva seu banco de dados SQL Server procedimento armazenado com um invólucro de serviço web. Olhada devx.com artigo 28577 para um exemplo.

Depois disso, ligue para o seu novo SQL Server serviço web hospedado usando uma chamada de serviço web CICS.

Comandos Última uso padrão CICS BMS para apresentar os dados para o usuário.

Desenvolvimento appliation para CICS Web Services

Apenas obter o driver JDBC para acessar o servidor MS-SQL. Você pode então subclasse-lo e usá-lo em seu programa Cobol e acesso a banco de dados, assim como se você estivesse usando-lo de Java.

Depois de conseguir seus resultados, você pode apresentá-los através de funções da BMS regulares.

Não há hacks sujos ou truques rede extravagantes necessários. Com IBM Enterprise Cobol, você realmente pode apenas criar uma classe Java e usá-lo como faria no espaço Java.

Você pode ser capaz de fazer algo que eu fiz no passado. Eu escrevi DB2 para programas / funções que tornam a tabela de MS-SQL / Ver Selecione apenas para DB2 MS-SQL COBOL. Ela envolveu a criação de um serviço executado em um servidor de rede que iria aceitar conexões TCP / IP somente a partir do mainframe e usar as credenciais passadas como o ID do usuário / PW usado para acessar a tabela de MS-SQL. Seria, então, emitir um seleto contra a tabela / exibição e passar listar os nomes dos campos de volta pela primeira vez com o número total de linhas. Seria, então, passar cada linha, como guia delimitado campos, de volta para o mainframe. O programa COBOL iria salvar os nomes dos campos em uma tabela a ser usada para determinar qual rotina de usar para traduzir cada campo MS-SQL para DB2. Do ponto de vista DB2, parece que uma função que retorna campos. Temos cerca de 30 destes em execução. Tive que criar um MS-SQL descrevem procedimento para ajudar a criar o define iniciais dos transations de campo para o programa COBOL. Também teve que criar um programa de COBOL para ler os dados descrever e criar os comandos de divisão de ligação e de procedimento. Um programa COBOL para cada MS-SQL tabela / exibição. Aqui está uma definição função de exemplo. CREATE FUNCTION
TCL.BALANCING_RECON (VARCHAR (4000))
RETORNOS
TABELA (
SCOMPANY CHAR (6),
PNOTENO VARCHAR (14),
Punit CHAR (3),
LATEFEES DEC (11,2),
FASB_4110 DEC (11,2),
FASB_4111 DEC (11,2),
USERAMOUNT1 DEC (11,2),
USERAMOUNT2 DEC (11,2),
USERFIELD1 VARCHAR (14)
)
Linguagem COBOL
CONTINUAR após falha
NÃO DETERMINÍSTICO
Lê dados SQL
Exterior Nome DB2TCL02
Collid DB2TCL02
PARAMETER STYLE SQL
CHAMADO ON NULL ENTRADA
NÃO ACÇÃO EXTERNA
DISALLOW PARALELO
ScratchPad 8000
ASUTIME limite de 100
Residirem SIM
TIPO DE PROGRAMA SUB
WLM AMBIENTE DB2TWLM
SEGURANÇA DB2
DBINFO
; COMMIT;
GRANT EXECUTE na função TCL.BALANCING_RECON TO PUBLIC;

Para chamar a função: * SELECT FROM
TABELA (TCL.BALANCING_RECON ( ''
)) Como X;

Você iria colocar todos os comandos de filtro MS-SQL entre as aspas.

Eu não foram convidados a atualizar quaisquer dados MS-SQL para que eu não tenho jumpped esse obstáculo ainda. Há também um banco de dados DB2 que mantém o controle do ID PW e servidor / que tem a tarefa de corrida começou. Isto é assim que se o servidor torna-se sobrecarregado, diferentes seleciona pode ser empurrado para diferentes servidores. Resposta é rápida, mesmo para grandes tabelas. Tempo de espera é o mesmo que o tempo limite de 60 bloqueio. O transporte é baseada em IP primarly. DB2 simly vê os dados como uma referência de tabela externa.

Como hacks sujas ir, você já pensou sobre a criação de um servidor TCP que retorna um arquivo .csv dos dados da tabela que você precisa simples HTTP ou?

Isso significa que seu cliente só precisa de um cliente TCP simples HTTP / Para acessar os dados, em vez de uma biblioteca de cliente de banco de dados.

Na minha empresa, usamos Java para se conectar ao SQL Server.

E a CL chamar este programa Java:)

Muito simples ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top