z/OS 메인프레임에서 Sql 서버에 액세스하여 IBM 3270 터미널 에뮬레이션 결과를 얻을 수 있는 방법이 있습니까?

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

문제

z/OS 메인프레임(COBOL 프로그램)에서 Microsoft Sql Server에 액세스하여 3270 터미널 에뮬레이션 결과를 얻을 수 있는 방법(아마도 저렴할 수 있음)이 있습니까?
나는 3270이 꽤 오래된 시스템이라는 것을 알고 있지만 은행 CED에서는 여전히 매우 인기가 있습니다.

도움이 되었습니까?

해결책

실제로 무엇을 하려는지에 따라 다릅니다.귀하의 질문에 대해 제가 읽은 내용은 메인프레임 기반 프로세스가 SQL Server 데이터베이스에 액세스하도록 한 다음 그 결과로 아마도 3270 터미널과 관련된 작업을 수행하기를 원한다는 것입니다.

Unix 시스템 서비스를 사용할 수 있다면 다음과 같은 TDS 라이브러리를 컴파일할 수 있습니다. 무료TDS 그런 다음 C 프로그램을 사용하여 결과에 대해 원하는 작업을 수행합니다.더 복잡해지려면 IBM C, SAS C 또는 코드를 컴파일하여 기본 z/OS 환경에서 연결을 실행할 수 있습니다. 디그누스 C/C++.저는 Dignus를 추천할 수 있으며 이를 사용하여 z/OS에서 다른 언어와 상호 작용하는 코드를 작성했습니다.Dignus 헤더와 런타임 라이브러리에는 (메모리에서) 이식을 단순화하는 데 도움이 되는 일부 FreeBSD 계보가 있습니다.

이 접근 방식을 사용하면 작업을 수행하기 위해 시스템의 다른 부분에서 호출할 수 있는 로드 모듈을 얻을 수 있고, 시스템의 다른 부분과 코드를 연결할 수도 있고, 작업을 제출하고 출력을 얻을 수도 있습니다.

Java를 사용하려면 다음과 같은 것을 사용할 수 있습니다. jTDS 필요한 작업을 수행하기 위해 Java 코드를 작성합니다.저는 z/OS에서 Java를 사용해 본 적이 없기 때문에 구체적인 조언을 드릴 수는 없습니다. 하지만 다른 플랫폼에서 jTDS를 사용해 본 결과는 만족스럽습니다.

업데이트:

C 함수를 로드 모듈의 진입점으로 내보낸 다음 이를 Cobol에서 호출할 수 있습니다.C/C++ 구현은 Cobol 데이터 구조를 처리해야 합니다.그것들은 잘 정의되고 예측 가능하므로 문제가 되지 않습니다.필요한 유연성에 따라 쿼리를 C 코드로 컴파일하고 미리 정의된 쿼리를 실행하고 결과를 검색하기 위한 인터페이스가 있는 함수를 가질 수도 있고, 쿼리가 제공된 곳에 더 복잡한 것을 가질 수도 있습니다. Cobol 프로그램에서.

저는 이 접근 방식을 사용하여 Adabas/Natural 개발자에게 API 기능을 제공했으며 잘 작동했습니다.Dignus 컴파일러에는 호출 프로그램에서 C 런타임 환경의 수명을 관리할 수 있도록 호출자가 런타임 라이브러리에 대한 핸들을 제공하는 메커니즘이 있습니다.

C/C++ 개발자의 경우 이는 매우 간단합니다.개발자가 모두 Cobol 개발자라면 상황이 좀 더 까다로울 수 있습니다.

게이트웨이 접근 방식도 가능하고 주변에 게이트웨이 제품도 분명 있겠지만 추천할 수는 없습니다.추천하지 않을 형편없는 것들을 본 적이 있지만 그렇다고 해서 어딘가에 좋은 것이 없다는 뜻은 아닙니다.

완전성을 기하기 위해 Cobol에서 TDS 프로토콜을 구현할 가능성에 대해 언급하겠습니다.잔인하고 일반적인 처벌처럼 들리지만.

다른 팁

3270 터미널 에뮬레이션이있는 경우 어떤 터미널을 사용하고 있습니까? PC?

흥미로운 해킹 중 하나는 Cisco 라우터를 사용하여 3270에서 바닐라 TCP 변환으로 수행 한 다음 SQL 서버 절차에 대한 간단한 TCP 프록시를 작성하는 것입니다.

따라서 3270 에뮬레이터가 IBM 메인 프레임에 연결됩니다. 메인 프레임의 SQL Server 데이터베이스에서 데이터를 얻으려면 SQL Server DB의 데이터를 읽는 메인 프레임에서 실행되는 프로그램을 작성해야합니다. 이를 위해서는 메인 프레임에서 드라이버 소프트웨어를 실행해야합니다. 이런 종류의 물건을 만드는 제 3자를 찾을 수는 있지만 상당히 비쌀 것입니다.

메인 프레임 시스템의 데이터를 외부 데이터 소스와 결합 해야하는 보고서 또는 무언가를 구성 해야하는 경우 메인 프레임에서 데이터를 가져 와서 다른 곳에서 통합을 수행하는 것이 더 쉬울 수 있습니다.

대안은 SQL Server 데이터베이스에서 원하는 THD 데이터를 추출하여 처리를위한 플랫 파일로 메인 프레임에 업로드하는 것입니다.

CICS에서 실행중인 COBOL 프로그램을 작성하는 경우 다음은 가능성이 있습니다.

먼저 웹 서비스 래퍼로 SQL Server 데이터베이스 저장 프로 시저를 랩핑하십시오. 예를 들어 Devx.com 기사 28577을 참조하십시오.

그런 다음 CICS 웹 서비스 호출을 사용하여 새 SQL Server 호스팅 웹 서비스에 전화하십시오.

마지막으로 표준 CICS BMS 명령을 사용하여 데이터를 사용자에게 제시합니다.

CICS 웹 서비스를위한 응용 개발

JDBC 드라이버가 MS-SQL 서버에 액세스하도록하십시오. 그런 다음 서브 클래스를하고 COBOL 프로그램에서 사용하여 Java에서 사용하는 것처럼 데이터베이스에 액세스 할 수 있습니다.

결과를 얻으면 일반 BMS 기능을 통해 발표 할 수 있습니다.

더러운 해킹이나 멋진 네트워킹 트릭이 필요하지 않습니다. IBM Enterprise Cobol을 사용하면 Java 클래스를 만들어 Java Space에서와 같이 사용할 수 있습니다.

당신은 과거에 내가 한 일을 할 수 있습니다. MS-SQL 테이블/보기를 DB2로만 선택하게하는 DB2에 MS-SQL COBOL 프로그램/기능을 작성했습니다. 메인 프레임에서만 TCP/IP 연결을 수락하는 네트워크 서버에서 실행중인 서비스를 작성하고 MS-SQL 테이블에 액세스하는 데 사용되는 사용자 ID/PW로 전달 된 자격 증명을 사용했습니다. 그런 다음 테이블/뷰에 대한 선택을 발행하고 총 행 수로 필드 이름 목록을 먼저 전달합니다. 그런 다음 탭이 드리밍 된 필드로서 메인 프레임으로 다시 전달됩니다. COBOL 프로그램은 테이블에 필드 이름을 저장하여 각 MS-SQL 필드를 DB2로 변환하는 데 사용할 루틴을 결정하는 데 사용됩니다. DB2 관점에서 필드를 반환하는 함수처럼 보입니다. 우리는이 달리기 중 약 30 개가 있습니다. COBOL 프로그램의 현장 전환의 초기 정의를 만드는 데 도움이되는 MS-SQL 설명 절차를 만들어야했습니다. 또한 설명 데이터를 읽고 Linkage 및 Procedure Division 명령을 작성하기 위해 COBOL 프로그램을 만들어야했습니다. 각 MS-SQL 테이블/뷰에 대한 하나의 COBOL 프로그램. 다음은 샘플 기능 정의입니다. 기능을 만듭니다
tcl.balancing_recon (Varchar (4000))
보고
테이블(
scompany char (6),
Pnoteno Varchar (14),
Punit Char (3),
12 월 1 월 (11,2),
FASB_4110 12 월 (11,2),
FASB_4111 12 월 (11,2),
userAmount1 12 월 (11,2),
userAmount2 12 월 (11,2),
userfield1 varchar (14)
)
언어 코볼
실패 후에도 계속하십시오
결정 론적이지 않습니다
SQL 데이터를 읽습니다
외부 이름 DB2TCL02
콜리드 DB2TCL02
매개 변수 스타일 SQL
널 입력을 호출했습니다
외부 행동이 없습니다
평행을 허용하지 않습니다
스크래치 패드 8000
Asutime Limit 100
거주지를 유지하십시오
프로그램 유형 서브
WLM 환경 DB2TWLM
보안 DB2
dbinfo
; 저지르다;
function tcl.balancing_recon에서 공개적으로 실행;

기능을 호출하려면 : * From을 선택하십시오
테이블 (tcl.balancing_recon ( ''
))) x;

따옴표 사이에 MS-SQL 필터 명령을 넣습니다.

MS-SQL 데이터를 업데이트하라는 요청을받지 않았으므로 아직 장애물을 뛰어 넘지 않았습니다. DB2에는 시작 작업이 실행되는 ID/PW 및 서버를 추적하는 데이터베이스도 있습니다. 서버에 과부하가 걸리면 다른 선택을 다른 서버로 푸시 할 수 있습니다. 큰 테이블의 경우에도 응답이 빠릅니다. 타임 아웃은 60 교착 상태와 동일합니다. 전송은 주로 IP 기반입니다. DB2는 데이터를 외부 테이블 참조로 동시에 본다.

Dirty Hacks가 진행됨에 따라 필요한 테이블 데이터의 .CSV를 반환하는 간단한 HTTP 또는 TCP 서버를 작성하는 것에 대해 생각 했습니까?

이는 클라이언트가 데이터베이스 클라이언트 라이브러리가 아닌 데이터에 액세스하기 위해 간단한 HTTP/TCP 클라이언트 만 필요하다는 것을 의미합니다.

회사에서는 SQL Server에 연결하는 데 Java를 사용합니다.

그리고 CL Call이 Java 프로그램 :)

아주 간단하게 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top