Share via


GET_CP_CONVERT_TABLE

GET_CP_CONVERT_TABLE動詞會建立並傳回 256 位元組轉換資料表,以將源字碼頁面的字元字串轉譯為目標字碼頁。

下列結構描述動詞控制項區塊 (GET_CP_CONVERT_TABLE動詞動詞所使用的 VCB )

語法

  
struct get_cp_convert_table {  
    unsigned short       opcode;  
    unsigned char        opext;  
    unsigned char        reserv2;  
    unsigned short       primary_rc;  
    unsigned long        secondary_rc;  
    unsigned char        reserv3[8];  
    unsigned short       source_cp;  
    unsigned short       target_cp;  
    unsigned char FAR *  conv_tbl_addr;  
    unsigned char        char_not_fnd;  
    unsigned char        substitute_char;  
};  

成員

opcode
提供的 參數。 識別作業程式碼的動詞,SV_GET_CP_CONVERT_TABLE。

opext
保留字段。

reserv2
保留字段。

primary_rc
傳回的參數。 指定 APPC 在動詞完成時所設定的主要傳回碼。 有效的傳回碼會隨著發出的 APPC 動詞而有所不同。 如需此動詞的有效錯誤碼,請參閱傳回碼。

secondary_rc
傳回的參數。 指定 APPC 在動詞完成時所設定的次要傳回碼。 有效的傳回碼會隨著發出的 APPC 動詞而有所不同。 如需此動詞的有效錯誤碼,請參閱傳回碼。

reserv3
保留字段。

source_cp
提供的 參數。 指定要從中轉換字元的源字碼頁面。 允許的字碼頁 (十進位值) 如下所示:

  • ASCII 437, 850, 860, 863, 865

  • EBCDIC 037、273、277、278、280、284、285、297、500

也允許範圍從 65280 到 65535 的使用者定義字碼頁。

ASCII 字碼頁有時稱為電腦字碼頁;EBCDIC 字碼頁有時稱為主機字碼頁。

target_cp
提供的 參數。 指定要轉換字元的目標字碼頁。 如需允許的字碼頁,請參閱上述 source_cp定義。

conv_tbl_addr
提供的 參數。 指定要包含 256 位元組轉換資料表之緩衝區的位址。 緩衝區必須位於可寫入的區段中,且長度足以包含資料表。

char_not_fnd
提供的 參數。 指定如果源字碼頁面中的字元不存在於目標字碼頁時所要採取的動作:

  • 使用 SV_ROUND_TRIP,在每個源字碼頁字元的轉換資料表中儲存唯一值。

  • 使用 SV_SUBSTITUTE,在轉換資料表中儲存由 substitute_char) 指定的替代字元 (。

substitute_char
提供的 參數。 指定當源字碼頁中的字元在目標字碼頁中沒有對等專案時,要儲存在轉換資料表中的字元。

傳回碼

SV_OK
主要傳回碼;成功執行動詞。

SV_PARAMETER_CHECK
主要傳回碼;動詞因為參數錯誤而未執行。

SV_INVALID_CHAR_NOT_FOUND
次要傳回碼; char_not_fnd 參數包含不正確值。

SV_INVALID_DATA_SEGMENT
次要傳回碼;針對超出區段界限的轉換資料表指定的 256 位元組區域,或區段無法寫入。

SV_INVALID_SOURCE_CODE_PAGE
次要傳回碼;不支援 source_cp 指定的字碼頁。

SV_INVALID_TARGET_CODE_PAGE
次要傳回碼;不支援 target_cp 指定的字碼頁。

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 登錄。 針對 OS/2 作業系統,包含資料表的目錄和檔案必須由環境變數 COMTBLG 指定。 (如果找不到檔案,系統會傳回 SV_TABLE_ERROR 參數 check.) 。

char_not_fnd的 SV_ROUND_TRIP 值只有在您建置第二個轉換資料表,以反向方向在同兩個字碼頁之間轉換時才有用。 如果您在建置這兩個轉換資料表中指定SV_ROUND_TRIP值,則從一個字碼頁轉譯到另一個字碼頁的任何字元都會保持不變。

使用 char_not_fnd的SV_SUBSTITUTE值時,將翻譯的字元字串轉換回原始字碼頁不一定重新建立原始字元字串。

只有在 char_not_fnd 設定為 SV_SUBSTITUTE 時,才使用 substitute_char。

儲存在轉換資料表中的值是與字元相關聯的 ASCII 值。 如果資料表用於從 ASCII 轉換為 EBCDIC,則出現在轉換字串中的字元是與數值 EBCDIC 值相關聯的字元,而不是 ASCII。

例如,如果您在 建立 ASCII 至 EBCDIC 轉換資料表時,提供底線 () 字元 (ASCII 值 F6) ,則轉換字串中顯示的字元將會是 6,與 EBCDIC 中值 F6 相關聯的字元。若要在 ASCII 中使用 \ 字元做為 EBCDIC 轉換資料表中的替代字元,您應該提供值 E1 (EBCDIC) 中與 _ character 相關聯的值,而不是實際字元。

字碼頁是一個資料表,可將特定 ASCII 或 EBCDIC 值與特定字元產生關聯。 如果源字碼頁面中的字元不存在於目標字碼頁中,則翻譯 (目標) 字串與原始 (來源) 字串不同。