字串格式 (DATA LIST 指令)
字串 (英數) 變數可以包含任何數字、字母或字元,包括特殊字元及內嵌空白。 作為字串變數值輸入的數字無法在計算中使用,除非您將它們轉換為數值格式 (請參閱 RECODE)。 在 DATA LIST上,如果資料採用標準字元格式,則以 A 格式定義字串變數,如果資料採用十六進位格式,則以 AHEX 格式定義。
- 對於固定格式資料,字串變數的寬度隱含在直欄位置規格中,或由類似 FORTRAN 格式的 W 指定。 對於 freefield 資料,必須在 FORTRAN 類似格式上指定寬度。
AHEX格式僅適用於固定格式資料。 由於每一個由兩個十六進位字元組成的集合代表一個標準字元,因此寬度規格必須是偶數。AHEX格式變數的輸出格式是A格式,具有指定寬度的一半。- 如果資料中的字串超過其指定的寬度,則會截斷字串並顯示警告訊息。 如果資料中的字串較短,則會以空白向右填補,且不會顯示警告訊息。
- 對於固定格式資料,會將指定或隱含直欄中的所有字元 (包括前導、尾端及內嵌空白和標點符號) 讀取為字串值。
- 對於沒有指定定界字元的可用欄位資料,如果字串包含空白或逗點,則資料中的字串值必須以引號括住。 否則,會將空白或逗點視為值之間的定界字元。 如需相關資訊,請參閱主題 指令規格中的字串值 。
範例
DATA LIST FILE="/data/wins.txt" FREE /POSTPOS NWINS * POSNAME (A24).
- POSNAME 指定為 24 位元組字串。 POSNAME 之前的星號表示以預設格式讀取 POSTPOS 和 NWINS 。 如果未指定星號,程式會將
A24格式套用至 POSNAME ,然後發出錯誤訊息,指出變數超過指定的格式。
範例
DATA LIST FILE="/data/wins.txt" FREE /POSTPOS * NWINS (A5) POSWINS.
- POSTPOS 和 POSWINS 都會接收預設數值格式
F8.2. - NWINS 會接收指定的
A5格式。
字碼頁、 UTF-8及 UTF-16 檔案中的字串寬度
所有編碼的「直欄」及數字的寬度規格都相同。 每一個數字代表單一直欄。 例如,直欄規格 VAR1 1-4 (F) 或寬度規格 VAR1 (F4) 定義的寬度足以容納 4 位數的數字。
不過,對於字串變數,不同編碼的行和寬度規格可能不同。
- 對於字碼頁和 UTF-8 檔案,英文字母的直欄和寬度規格代表位元組。
- 在字碼頁檔案中,拉丁文 (羅馬) 字元各為一個位元組。 這包括具有變音符號的字元,例如重音符號。 例如,回復及簡歷在字碼頁檔案中都有 6 個位元組 (或直欄) 的寬度。 不過,亞洲字元每一個字元需要兩個位元組。
- 在 UTF-8 檔案中,沒有變音符號的拉丁文字元各為一個位元組,但具有變音符號的字元則需要兩個位元組。 例如,回復需要 6 個位元組的寬度,而簡歷需要 8 個位元組的寬度。
- 來自希臘文、斯拉夫語、Coptic、亞美尼亞文、希伯來文、阿拉伯文、Syriac 及 Tana 英文字母的字元在 UTF-8 檔案中各需要兩個位元組。
- 亞洲英文字母的字元在 UTF-8 檔案中每一個字元需要 3 個以上位元組。
- 對於 UTF-16 檔案,直欄和寬度規格代表字元。 因此,每一個字元都需要一個直欄代表所有英文字母。
如需 Unicode 編碼的相關資訊,請跳至 http://www.unicode.org。