CONVERT
CONVERT動詞會將 ASCII 字元字串轉譯為 EBCDIC,或將 EBCDIC 字元字串轉譯為 ASCII。 要轉換的字串稱為來源字串。 轉換的字串稱為目標字串。
下列結構描述 CONVERT 動詞動詞) 使用的動詞控制區塊 (VCB。
語法
struct convert {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char direction;
unsigned char char_set;
unsigned short len;
unsigned char FAR * source;
unsigned char FAR * target;
};
成員
opcode
提供的 參數。 識別作業程式碼的動詞,SV_CONVERT。
opext
保留字段。
reserv2
保留字段。
primary_rc
傳回的參數。 指定 APPC 在動詞完成時所設定的主要傳回碼。 有效的傳回碼會隨著發出的 APPC 動詞而有所不同。 如需此動詞的有效錯誤碼,請參閱傳回碼。
secondary_rc
傳回的參數。 指定 APPC 在動詞完成時所設定的次要傳回碼。 有效的傳回碼會隨著發出的 APPC 動詞而有所不同。 如需此動詞的有效錯誤碼,請參閱傳回碼。
direction
提供的 參數。 指定轉換的方向。 若要從 ASCII 轉換為 EBCDIC,請使用 SV_ASCII_TO_EBCDIC。 若要從 EBCDIC 轉換為 ASCII,請使用 SV_EBCDIC_TO_ASCII。
char_set
提供的 參數。 指定要用於轉換來源字串的字元集。 允許的值包括類型 SV_A (類型 A 字元集) 、SV_AE (類型 AE 字元集) ,以及SV_G (使用者定義類型 G 字元集) 。
len
提供的 參數。 指定要轉換的字元數。
這個長度加上來源或目標緩衝區開頭的位移不得超過區段界限。
source
提供的 參數。 指定要轉換之字元字串的緩衝區位址。
目標
提供的 參數。 指定要包含已轉換字元字串之緩衝區的位址。
這個緩衝區可以重迭或與 來源 參數所指向的緩衝區重迭或重迭。 在此情況下,轉換的資料字串會覆寫來源資料字串。
傳回碼
SV_OK
主要傳回碼;成功執行動詞。
SV_PARAMETER_CHECK
主要傳回碼;動詞因為參數錯誤而未執行。
SV_CONVERSION_ERROR
次要傳回碼;在轉換資料表中找不到來源字串中的一或多個字元。 這些字元已轉換成 null (0x00) 。 仍會執行動詞。
SV_INVALID_CHARACTER_SET
次要傳回碼; char_set 參數包含不正確值。
SV_INVALID_DATA_SEGMENT
次要傳回碼;包含來源或目標字串的資料緩衝區不符合一個區段,或目標區段不是讀取/寫入區段。
SV_INVALID_DIRECTION
次要傳回碼;方向包含不正確值。
SV_INVALID_FIRST_CHARACTER
次要傳回碼;類型的第一個字元 A 來源字串無效。
SV_TABLE_ERROR
次要傳回碼;發生下列其中一項:
環境變數 CSVTBLG 未指定包含使用者寫入類型 G 轉換資料表的檔案。
資料表的格式不正確。
找不到 CSVTBLG 變數指定的檔案。
SV_COMM_SUBSYSTEM_NOT_LOADED
主要傳回碼;處理動詞時,無法載入或終止必要的元件。 因此,無法進行通訊。 請連絡系統管理員以採取更正動作。SV_INVALID_VERB
主要傳回碼; opcode 參數不符合任何動詞的作業程式碼。 未執行動詞。SV_INVALID_VERB_SEGMENT
主要傳回碼;延伸超過資料區段結尾的 VCB。SV_UNEXPECTED_DOS_ERROR
主要傳回碼;發生下列其中一個條件:處理動詞時,Microsoft Windows 系統發生錯誤。 作業系統傳回碼是透過次要傳回碼傳回。 如果問題持續發生,請連絡系統管理員以採取更正動作。
CSV 是從發出 Windows SendMessage 函式呼叫的另一個應用程式叫用的訊息迴圈發出,而不是較常見的 Windows PostMessage 函式呼叫。 無法進行動詞處理。
當 SendMessage叫用您的應用程式時,就會發出 CSV。 您可以使用InSendMessage Windows API 函式呼叫,判斷是否已使用SendMessage叫用您的應用程式。
備註
類型 A 字元集包含:
大寫字母。
數位 0 到 9。
特殊字元 $、#、@和空格。
系統提供的類型 A 轉換資料表支援此字元集。
來源字串的第一個字元必須是大寫字母或特殊字元 $、#或 @。 只有尾端位置才允許空格。 當方向為 ASCII 到 EBCDIC 時,小寫 ASCII 字母會轉譯成大寫 EBCDIC 字母。
AE 字元集類型包含:
大寫字母。
小寫字母。
數位 0 到 9。
特殊字元 $、#、@、句號和空格。
系統提供的 AE 轉換資料表支援此字元集。
來源字串的第一個字元可以是字元集中的任何字元,但空格除外。 只有尾端位置才允許空格。
在轉換期間,內嵌的空白 (包括第一個位置的空白,) 會轉換成0x00。 雖然這類轉換將會完成,但CONVERSION_ERROR會以次要傳回碼的形式傳回,表示 CSV 程式庫已完成所提供資料的無法復原轉換。
針對 Windows,COMTBLG 的描述應該指向 \SnaBase\Parameters\Client下的 Windows 登錄。
類型 G 轉換資料表的資料必須是 ASCII 檔案 32 行長。 每一行都必須包含 32 個十六進位數位,代表 16 個字元,並以歸位字元和換行字元終止。 前 16 行 (256 個字元) 指定 ASCII 字元轉換的 EBCDIC 字元;其餘 16 行會指定 EBCDIC 字元要轉換的 ASCII 字元。
A 到 F 的十六進位數位可以是大寫或小寫。 不過,您可能想要將這些數位設為大寫,以確保與 IBM ES for OS/2 1.0 版相容。
注意
您可以使用 GET_CP_CONVERT_TABLE ,在記憶體中建置 G 使用者寫入的轉換資料表類型,然後將資料表儲存在檔案中。