上一頁|下一頁

CVPBYTES=、CVPENGINE= 和 CVPMULTIPLIER= 選項

指定轉碼 SAS 檔案所需之字元變數的特性。

有效期限: LIBNAME 陳述式
類別: 資料存取
PROC OPTIONS GROUP= 作業環境文件中 Windows、UNIX 和 Z/OS 下的 LIBNAME 陳述式。
請參閱: LIBNAME、SAS/ACCESS

語法

LIBNAME libref <CVPBYTES=bytes> <CVPENGINE=engine> <CVPMULTIPLIER=multiplier
>
'SAS data-library';

選用的引數

CVPBYTES=bytes

指定在處理需要轉碼的 SAS 資料檔案時擴充字元變數長度的位元組數。CVP 引擎會擴充長度,因此不會發生字元資料截斷。在目前長度上加上指定的值,即可增加字元變數的長度。您可以指定 0 到 32766 內的值。

例如,下列 LIBNAME 陳述式指定 CVPBYTES= 選項,以隱含地指派 CVP 引擎。
libname expand 'SAS data-library' cvpbytes=5;
會增加 5 個位元組,以增加字元變數的長度。長度為 10 的字元變數會增加為 15,而長度為 100 的字元變數會增加為 105。
預設 如果您指定 CVPBYTES=,則 SAS 會自動使用 CVP 引擎,以根據您的指定來擴充字元變數的長度。如果您明確地指派 CVP 引擎,但未指定 CVPBYTES= 或 CVPMULTIPLIER=,則 SAS 會使用 CVPMULTIPLIER=1.5 來增加字元變數的長度。
限制 CVP 引擎支援 SAS 資料檔案,不支援 SAS 檢視、目錄、項目存放區等。
CVP 引擎只適用於輸入 (讀取) 處理。
針對含有 CVP 引擎之混合引擎的資料館串連,只會處理 SAS 資料檔案。例如,如果您執行 COPY 程序,則只會複製 SAS 資料檔案。
需求 您指定的位元組數必須足以容納任何擴充。否則,還是會進行截斷,而在 SAS 日誌中產生錯誤訊息。
互動 您不可以同時指定 CVPBYTES= 和 CVPMULTIPLIER=。 請指定這兩個選項的其中一個。
請參閱 使用 CVP 引擎避免字元資料截斷

CVPENGINE=engine

指定要使用的引擎,以處理需要轉碼的 SAS 資料檔案。 CVP 引擎會擴充字元變數的長度以進行轉碼,因此不會發生字元資料截斷。然後,指定的引擎會執行實際檔案處理。

別名 CVPENG
預設 SAS 使用預設 SAS 引擎。
請參閱 使用 CVP 引擎避免字元資料截斷

CVPMULTIPLIER=multiplier

指定乘數值,以在處理需要轉碼的 SAS 資料檔案時擴充字元變數的長度。CVP 引擎會擴充長度,因此不會發生字元資料截斷。將目前長度乘上指定的值即可增加字元變數的長度。您可以指定 1 到 5 內的乘數值。

例如,下列 LIBNAME 陳述式指定 CVPMULTIPLIER= 選項,以隱含地指派 CVP 引擎。
libname expand 'SAS data-library' cvpmultiplier=2.5;
會將長度乘上 2.5 ,以增加字元變數的長度。長度為 10 的字元變數會增加為 25,而長度為 100 的字元變數會增加為 250。
別名 CVPMULT
預設 如果您指定 CVPMULTIPLIER=,則 SAS 會自動使用 CVP 引擎,以根據您的指定來擴充字元變數的長度。如果您明確地指定 CVP 引擎,但未指定 CVPMULTIPLIER= 或 CVPBYTES=,則 SAS 會使用 CVPMULTIPLIER=1.5 來增加長度。
限制 CVP 引擎支援 SAS 資料檔案,不支援 SAS 檢視、目錄、項目存放區等。
CVP 引擎只適用於輸入 (讀取) 處理。
針對含有 CVP 引擎之混合引擎的資料館串連,只會處理 SAS 資料檔案。例如,如果您執行 COPY 程序,則只會複製 SAS 資料檔案。
需求 您指定的位元組數必須足以容納任何擴充。否則,還是會進行截斷,而在 SAS 日誌中產生錯誤。
互動 您不可以同時指定 CVPMULTIPLIER= 和 CVPBYTES=。 請指定這兩個選項的其中一個。
請參閱 使用 CVP 引擎避免字元資料截斷

範例: 使用 CVP (字元變數填補) 引擎

下列範例說明如何使用 CVP 引擎來避免字元資料截斷。此範例使用 SAS 資料集 MYFILES.WLATIN2 (內含 Wlatin2 編碼的部分國家字元)。
libname myfiles 'C:\Documents and Settings\sasdxw\My Documents\myfiles';
data myfiles.wlatin2 (encoding=wlatin2); 
var1='41'x; 
var2='8a'x; 
var3='9c'x; 
var4='b3'x; 
; 
proc print data=myfiles.wlatin2; 
run; 
SAS 系統
以下是 MYFILES.WLATIN2 的 PROC CONTENTS 輸出,而此輸出顯示編碼為 Wlatin2,且每個字元變數的長度是 1 個位元組:
MYFILES.WLATIN2 的 PROC CONTENTS 輸出
 The SAS System 1
The CONTENTS Procedure
Data Set Name MYFILES.WLATIN2 Observations 1
Member Type DATA Variables 4
Engine V9 Indexes 0
Created Thursday, November 07, 2003 02:02:36 Observation Length 4
Last Modified Thursday, November 07, 2003 02:02:36 Deleted Observations 0
Protection Compressed NO
Data Set Type Sorted NO
Label
Data Representation WINDOWS_32
Encoding wlatin2 Central Europe (Windows)
Engine/Host Dependent Information
Data Set Page Size 4096
Number of Data Set Pages 1
First Data Page 1
Max Obs per Page 987
Obs in First Data Page 1
Number of Data Set Repairs 0
File Name C:\Documents and Settings\xxxxxx\My
Documents\myfiles\wlatin2.sas7bdat
Release Created 9.0100A0
Host Created XP_PRO
Alphabetic List of Variables and Attributes
# Variable Type Len
1 Var1 Char 1
2 Var2 Char 1
3 Var3 Char 1
4 Var4 Char 1
使用工作階段編碼 Wlatin2 執行下列程式碼。
options msglevel=i; 
libname myfiles 'SAS data-library';
data myfiles.utf8 (encoding="utf-8");
set myfiles.wlatin2;
run; 
DATA 步驟要求一個名為 MYFILES.UTF8 的新資料集,並要求以 UTF-8 編碼方式將資料讀入新資料集中,這表示必須將資料從 Wlatin2 轉碼為 UTF-8。要求會導致因轉碼而進行字元資料截斷的錯誤。新資料集 MYFILES.UTF8 會建立但未包含任何資料。
含有轉碼錯誤的 SAS 日誌
 1 options msglevel=i;
2 libname myfiles 'C:\Documents and Settings\xxxxxx\My Documents\myfiles';
NOTE: Libref MYFILES was successfully assigned as follows:
Engine: V9
Physical Name: C:\Documents and Settings\xxxxxx\My Documents\myfiles
3 data myfiles.utf8 (encoding="utf-8");
4 set myfiles.wlatin2;
5 run;
INFO: Data file MYFILES.UTF8.DATA is in a format native to another 
host or the file encoding does not match the session encoding. 
Cross Environment Data Access will be used, which may require additional 
CPU resources and reduce performance.
ERROR: Some character data was lost during transcoding in the data set MYFILES.UTF8.
NOTE: The data step has been abnormally terminated.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 1 observations read from the data set MYFILES.WLATIN2.
WARNING: The data set MYFILES.UTF8 may be incomplete. When this step was stopped there were 0
observations and 4 variables.
使用工作階段編碼 Wlatin2 重新執行下列程式碼。
options msglevel=i;
libname myfiles 'SAS data-library';
libname expand cvp 'SAS data-library' cvpbytes=2; 
data myfiles.utf8 (encoding="utf-8"); 
set expand.wlatin2;
run;
在此範例中,會使用 CVP 引擎,透過在每個長度增加兩個位元組來擴充字元變數的長度。從 Wlatin2 轉碼為 UTF-8,將資料讀入 UTF-8 編碼的新檔案。因為擴充了字元變數的長度,所以不會進行資料截斷,並會順利建立新資料集:
MYFILES.UTF8 的 SAS 日誌輸出
 12 options msglevel=i;
13 libname myfiles 'C:\Documents and Settings\xxxxxx\My Documents\myfiles';
NOTE: Directory for library MYFILES contains files of mixed engine types.
NOTE: Libref MYFILES was successfully assigned as follows:
Engine: V9
Physical Name: C:\Documents and Settings\xxxxxx\My Documents\myfiles
14 libname expand cvp 'C:\Documents and Settings\xxxxxx\My Documents\myfiles' cvpbytes=2;
WARNING: Libname EXPAND refers to the same physical library as MYFILES.
NOTE: Libref EXPAND was successfully assigned as follows:
Engine: CVP
Physical Name: C:\Documents and Settings\xxxxxx\My Documents\myfiles
15 data myfiles.utf8 (encoding="utf-8");
16 set expand.wlatin2;
17 run;
INFO: Data file MYFILES.UTF8.DATA is in a format native to another 
host or the file encoding does not match the session encoding. 
Cross Environment Data Access will be used, which may require additional 
CPU resources and reduce performance.
NOTE: There were 1 observations read from the data set EXPAND.WLATIN2.
NOTE: The data set MYFILES.UTF8 has 1 observations and 4 variables.
最後,以下是 MYFILES.UTF8 的 PROC CONTENTS 輸出,而輸出顯示編碼為 UTF-8,而且每個字元變數的長度是 3:
MYFILES.UTF8 的 PROC CONTENTS 輸出
 The SAS System 1
The CONTENTS Procedure
Data Set Name MYFILES.UTF8 Observations 1
Member Type DATA Variables 4
Engine V9 Indexes 0
Created Thursday, November 07, 2003 02:40:34 Observation Length 12
Last Modified Thursday, November 07, 2003 02:40:34 Deleted Observations 0
Protection Compressed NO
Data Set Type Sorted NO
Label
Data Representation WINDOWS_32
Encoding utf-8 Unicode (UTF-8)
Engine/Host Dependent Information
Data Set Page Size 4096
Number of Data Set Pages 1
First Data Page 1
Max Obs per Page 335
Obs in First Data Page 1
Number of Data Set Repairs 0
File Name C:\Documents and Settings\xxxxxx\My Documents\myfiles\utf8.sas7bdat
Release Created 9.0100A0
Host Created XP_PRO
Alphabetic List of Variables and Attributes
# Variable Type Len
1 Var1 Char 3
2 Var2 Char 3
3 Var3 Char 3
4 Var4 Char 3
上一頁|下一頁|頁面頂端