共用方式為


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 使用者寫入的轉換資料表類型,然後將資料表儲存在檔案中。