다양한 CCSID (0, 37, 819, 1200, 1252 등)가있는 IFS에 많은 파일이 있으며 간단한 RPGLE [1] 프로그램을 작성하여 사용자가 이러한 파일의 내용을보십시오.IFS에서 파일의 CCSID를 프로그래밍 방식으로 어떻게 결정합니까?
시스템 (V6R1) CCSID (DSPSYSVAL QCCSID)는 65535 [2]이고 작업에는 37의 기본 CCSID가 있습니다. 예를 들어 CCSID 819 (ASCII)를 표시하려고하면 쓰레기 - 기호 색상 등이 포함되어 있습니다.
QtqIconvOpen API를 통해 하나의 CCSID에서 다른 CCSID로 데이터를 변환하는 것에 익숙합니다. 따라서 파일에 기본 CCSID와 다른 CCSID가 있으면이를 변환 할 수 있습니다. 몇 년 전에 코드를 작성 했으므로 제대로 작동합니다.
제 문제점은 프로그램 적으로 IFS 파일의 CCSID를 알아내는 것입니다. 내가 찾은 유일한 관련 정보를 Jamesover (How to determine the CCSID used in CPYFRMIMPF command?)의 Stackoverflow에서 "ls -S"를 QSHELL에서 실행하여 CCSID와 파일 이름을 보여주는 파일 목록을 얻을 수 있다고 지적한 유일한 관련 정보가 있습니다.
따라서 이론적으로 나는 ls -S filename
을 실행할 수 있으며 출력을 구문 분석하여 CCSID를 얻은 다음 필요한 경우 해당 CCSID를 사용하여 데이터 변환을 수행 할 수 있습니다. 그건 못생긴 해킹이야. 가능한 한 IBM API를 사용하는 편이 낫다.
누군가가 ls -S filename
의 목록을 분석하는 것보다 더 좋은 해킹이나 API를 알고 있습니까?
[1] 실제 데이터를 읽으려면 C API의 open()
, read()
및 close()
을 사용합니다.
[2] 나는 65535가 좋지 않은 선택이지만 그것에 관해 할 수있는 것이 아무것도 없다고 알고 있습니다.
정확히 내가 찾고 있었던 것, 감사합니다. –