connectionService()

vgLib.connectionService() 시스템 함수에는 2개의 이점이 있습니다.
  • 런타임 시 데이터베이스에서 프로그램을 연결하거나 프로그램의 연결을 끊는 데 사용할 수 있습니다.
  • 선택적으로 데이터베이스 제품 이름 및 릴리스 레벨을 수신합니다. 런타임 처리가 데이터베이스의 특성에 종속되도록 case, if 또는 while 명령문에서 수신하는 정보를 사용할 수 있습니다.

vgLib.connectionService()를 사용하여 새 연결을 작성하는 경우 vgVar.sqlIsolationLevel 시스템 변수를 설정하여 격리 레벨을 지정하십시오. VisualAge® Generator 호환성 모드에서 실행 중이고 vgVar.sqlIsolationLevel이 0인 경우, 새 연결의 격리 레벨이 repeatableRead입니다. 그렇지 않으면 새 연결이 serializableTransaction을 사용합니다. 자세한 정보는 sqlLib connect() 함수를 참조하십시오.

vgLib.connectionService()는 VisualAge Generator 및 EGL 5.0에서 마이그레이션된 프로그램에서만 사용됩니다. EGL 환경 설정 EGL preference VisualAge Generator compatibility가 선택되었거나(생성 시) VAGCompatibility 빌드 디스크립터 옵션이 YES로 설정된 경우 이 함수가 지원됩니다(개발 시).

새 프로그램의 경우 다음 시스템 함수를 대신 사용하십시오.
  • sqlLib.connect()
  • sqlLib.disconnect()
  • sqlLib.disconnectAll()
  • sqlLib.queryCurrentDatabase()
  • sqlLib.setCurrentDatabase()

vgLib.connectionService()는 값을 리턴하지 않습니다.

구문

  vgLib.connectionService(
    userID CHAR(8) in,
    password CHAR(8) in,
    serverName CHAR(18) in
    [, product CHAR(8) inOut,
       release CHAR(8) inOut
    [, connectionOption STRING in
    ]])
userID
데이터베이스에 액세스하는 데 사용되는 사용자 ID입니다. 인수가 필요하지만, COBOL 생성에 대해 무시됩니다. 이 주제의 "호환성" 절을 참조하십시오.
password
데이터베이스에 액세스하는 데 사용되는 비밀번호입니다. 인수가 필요하지만, COBOL 생성에 대해 무시됩니다.

이 비밀번호는 문자열 리터럴을 함수에 전달하는 경우 자동으로 암호화됩니다. 자세한 정보는 EGL 프로그래머의 안내서에서 "비밀번호 암호화"를 참조하십시오. 또한 이 주제의 "호환성" 절을 참조하십시오.

serverName
연결을 지정하고 해당 연결을 사용하여 값을 인수 productrelease에 지정합니다(해당 인수가 vgLib.connectionService()의 호출에 포함된 경우).
인수 serverName은 필수입니다. 다음과 같은 값이 유효합니다.
blanks(컨텐츠 없음)
연결이 제 자리에 있는 경우 vgLib.connectionService()가 해당 연결을 유지보수합니다. 연결이 제 자리에 없는 경우 결과(값 지정 이외에)가 실행 단위의 시작 시 유효한 연결 상태를 리턴해야 합니다. 자세한 정보는 EGL 생성 안내서를 참조하십시오.
RESET
COBOL에 관련하여, RESET은 변경 커미트, 커서 닫기, 잠금 해제, 현재 데이터베이스에서 연결 끊기 및 실행 단위 시작 시 유효한 연결 상태에 리턴을 수행합니다. 그래도 이 경우 RESET을 지정하려면 vgLib.connectionService()를 호출하기 전에 sysLib.commit() 또는 sysLib.rollback()을 호출하십시오.

Java™ 프로그램에 관련하여, RESET은 기본 데이터베이스에 연결됩니다. 그러나 기본 데이터베이스가 사용 가능하지 않은 경우 연결 상태가 변경되지 않습니다.

기본 데이터베이스에 대한 자세한 정보는 EGL 생성 안내서를 참조하십시오.

databaseName
데이터베이스를 식별합니다.
코드가 COBOL 프로그램으로 실행 중인 경우 다음 명령문이 적용됩니다.
  • databaseName의 값이 SYSIBM.LOCATIONS 테이블의 위치 열에 있는 값이어야 하는데, 이는 DB2® UDB 하위 시스템에 있습니다(CICS®에서 이 하위 시스템은 CICS 영역에 첨부됨)
  • 데이터베이스를 지정하면 모든 커서가 닫히고 잠금이 해제되며 기존 연결이 종료되고 요청된 데이터베이스에 연결됩니다. 그래도 databaseName의 값을 지정하려면 vgLib.connectionService()를 호출하기 전에 sysLib.commit() 또는 sysLib.rollback()을 호출하십시오.
코드가 Java 프로그램으로 실행 중인 경우 다음 명령문이 적용됩니다.
  • vgj.jdbc.database.server 특성을 검색하여 실제 데이터베이스 이름을 찾는데, 여기서 servervgLib.connectionService() 호출에 지정된 서버의 이름입니다. 이 특성이 정의되지 않으면, vgLib.connectionService() 호출에 지정된 서버 이름이 그대로 사용됩니다.
  • 데이터베이스 이름의 형식이 J2EE 연결에 대해 비J2EE 연결과 다릅니다.
    • J2EE 환경에 대해 프로그램을 생성한 경우 데이터 소스가 JNDI 레지스트리에서 바인드되는 이름을 사용하십시오(예: jdbc/MyDB). 이는 J2EE 빌드 디스크립터 옵션이 YES로 설정된 경우 발생합니다.
    • 비J2EE JDBC 환경에 대해 프로그램을 생성한 경우 연결 URL을 사용하십시오(예: jdbc:db2:MyDB). 이는 J2EE 옵션이 NO로 설정된 경우 발생합니다.
product
데이터베이스 제품 이름을 수신합니다. 인수는 CHAR(8) 변수여야 합니다.

코드가 특정한 데이터베이스에 연결될 때 수신되는 문자열을 판별하려면 데이터베이스 또는 드라이버의 제품 문서를 검토하십시오. 또는 테스트 환경에서 코드를 실행하고 수신된 값을 파일에 쓰십시오.

release
데이터베이스 릴리스 레벨을 수신합니다. 인수는 CHAR(8) 변수여야 합니다.

코드가 특정한 데이터베이스에 연결될 때 수신되는 문자열을 판별하려면 데이터베이스 또는 드라이버의 제품 문서를 검토하십시오. 또는 테스트 환경에서 코드를 실행하고 수신된 값을 파일에 쓰십시오.

connectionOption
이 매개변수는 COBOL에 대해 프로그램을 생성 중인 경우 무시됩니다. 다음 값이 유효합니다.
D1A
옵션 이름의 11단계 커미트만 지원됨을 표시하고 A는 연결 끊기가 자동임을 표시합니다. 이 옵션의 특성은 다음과 같습니다.
  • 한 번에 하나의 데이터베이스에만 연결할 수 있습니다.
  • 커미트 또는 롤백이 기존 연결을 종료합니다.
D1C
옵션 이름의 11단계 커미트만 지원됨을 표시하고 C는 연결 끊기가 커미트에서 발생함을 표시합니다(HOLD와 함께 열린 커서가 없으면). 이 옵션의 특성은 다음과 같습니다.
  • 한 번에 하나의 데이터베이스에만 연결할 수 있습니다.
  • 커미트 또는 롤백이 기존 연결을 종료합니다.
D1E
기본값입니다. 옵션 이름의 11단계 커미트만 지원됨을 표시하고 E는 연결 끊기가 명시적이어야 함을 표시합니다. 이 경우 커미트 또는 롤백이 기존 연결에 영향을 미치지 않습니다.
Java 프로그램을 생성 중인 경우 다음 명령문이 적용됩니다.
  • 데이터베이스에 대한 연결이 커서를 닫지 않고 잠금을 해제하지 않거나 기존 연결을 종료하지 않습니다. 그러나 실행 단위가 이미 동일한 데이터베이스에 연결된 경우 DISC를 지정한 다음 D1E를 지정한 것과 같습니다.
  • 여러 연결을 사용하여 여러 데이터베이스에서 읽을 수 있지만, 1단계 커미트만 사용 가능하므로 작업 단위에서 하나의 데이터베이스만 업데이트할 수 있습니다.
DISC
지정된 데이터베이스에서 연결을 끊으십시오. 데이터베이스에서 연결을 끊으면 롤백 및 잠금 해제가 발생하지만 해당 데이터베이스에만 적용됩니다.
DCURRENT
현재 연결된 데이터베이스에서 연결을 끊으십시오. 데이터베이스에서 연결을 끊으면 롤백 및 잠금 해제가 발생하지만 해당 데이터베이스에만 적용됩니다.
DALL
모든 연결된 데이터베이스에서 연결을 끊으십시오. 모든 데이터베이스에서 연결을 끊으면 해당 데이터베이스에서 롤백이 발생하지만 다른 복구 가능한 자원에서는 아닙니다.
SET
연결을 현재로 설정하십시오. (기본적으로 실행 단위에서 가장 최근에 작성된 연결이 현재 연결입니다.)

다음 값이 VisualAge Generator와의 호환성을 위해 용인되지만, D1E와 동등합니다(R, D2A, D2C, D2E).

오류 고려사항

vgLib.connectionService()는 sqlLib 및 sysVar 둘 다에서 sqlData 시스템 변수를 설정합니다.
  • sqlData.sqlerrd[]
  • sqlData.sqlca
  • sqlData.sqlcode
  • sqlData.sqlerrmc(COBOL 코드에서만 사용 가능)
  • sqlData.sqlwarn[]

예제

다음 예제는 vgLib.connectionService() 함수를 사용하는 방법에 대해 보여줍니다.

  vgLib.connectionService(myUserid, myPassword, 
    myServerName, myProduct, myRelease, "D1E");

호환성

표 1. connectionService()의 호환성 고려사항
플랫폼 문제
Java 생성 Tomcat J2EE 서버는 vgLib.connectionService() 함수에서 userIDpassword를 무시하고 해당 서버 구성에서 값을 사용합니다.