本文是為了讓大家對於不同指令用法能很快的有初步概念
若是需要更深入的介紹,可以到「技術百科」→「ACL技術百科」中查詢,裡面附有圖文範例喔
BETWEEN( )
BETWEEN( )會依照最大與最小值之間是否有我們所希望的特定值,傳回 Ture 或 False
我們可以使用BETWEEN( )來測試值域,像是存貨是否有介於20,000到60,000間。
另外你也可以用它來測試日期的範圍或字母的範圍。
指令的格式
BETWEEN(value, minimum_value, maximum_value)
或
BETWEEN(value, maximum_value, minimum_value)
BETWEEN( )中的三個參數一定要是相同的型態:數字、日期或字母。
如果輸入的值 ( value ) 是「介於」或「等於」最大值 ( minimum_value ) 與最小值 ( minimum_value ) 之間
那麼BETWEEN( )會回傳T ( true ),若是沒有,則回傳F ( false )。
當數字欄位中存有不同的精準度 ( 小數點以下 ) 的數字,ACL就會採用最高的那個精準度來執行BETWEEN( )
當這三個參數為日期時,其格式可以相互不同,因為ACL會依照這個日期是以何種格式存於欄位中來做判斷。
字母比較會因大小寫而不同。
ACL有一個「字母比較 ( Exact Character Comparison )」選項來管理ACL比較字母字串的方式。
如果 SET EXACT 選項是 OFF (關閉),「A」會被認為等於「ABC」和「ABXYZ」。
如果 SET EXACT 選項是 ON (開啟),「A」則不會被認為等於「ABC」。
而 SET EXACT 預設值是 OFF。
範例
BETWEEN(5,4,7) = T
BETWEEN(5,5,7) = T
BETWEEN(5,6,7) = F
BETWEEN("abc","A","B") = F
BETWEEN("ABC","A","B") = T
BETWEEN("BCD","ABC","BB") = F
BETWEEN('20011031','20010930','20011130') = T
BIT( )
BIT( )會回傳一個位元字串,它代表在目前紀錄中,一個特定位元組的位置。
我們使用BIT( )來測試在位元組中單獨的位元。在某種程度上,BIT( )有點像BYTE( )。
指令的格式
BIT(byte_location)
BIT( )會把在目前紀錄中,位元組位置(byte_location)的位元組轉換成八個字元長度的字串,並以1與0表示。
範例
我們將位元組8、9、17的位元值指派給變數b8、b9、b17
ASSIGN b8 = BIT(8)
ASSIGN b9 = BIT(9)
ASSIGN b17 = BIT(17)
接著你就會得到:
b8 = 00110001 ,如果第八個位元組為 “1”
b9 = 01000001 ,如果第九個位元組為 “A”
b17 = 01100001 ,如果第十七個位元組為 “a”
假設位元組位置17包含8個為一組的關鍵指標。
我們可以用以下的方式,擷取所有第三個位元被設定為1(表示「不要空運」)的顧客紀錄。
SUBSTR(BIT(17), 3, 1) = "1"
在這個例子中,SUBSTR( )被用來查看第三個位元。
BLANKS( )
BLANKS( )串造一個全為空白的特定長度字元字串。
我們使用BLANKS( )清空一個欄位、初始化一個變數、或藉由增加幾個空白讓一個欄位變大。
指令的格式
BLANKS(number_of_blanks)
BLANKS( )傳回一個有特定長度的空白字串。這個字串長度一定要用數字表示。
範例
BLANKS(5) = " "
BLANKS(10) = " "
在接下來的例子中,我們將空白加入一個字元字串。
"abc" + BLANKS(5) = "abc "
BYTE( )
BYTE( )傳回一個在紀錄中,特定位置的位元組 ASCII 字元直譯。
若使用BYTE( ),我們不必定義出目標欄位,就可以檢驗一個紀錄中的位置的內容。
如果你使用這個功能於EBCDIC資料,這個回傳值也會是EBCDIC。
不過要用它和一個字元比較就可能會遇到困難。
指令的格式
BYTE(byte_location)
BYTE( )指令允許存取輸入資料的個別位元組。
位元組位置 ( byte_location ) 表示紀錄中 ( 從1開始算起 ) 的位置。
這個指令在位元組位置存取位元組,並以單一字元字串的方式回傳值。
範例
給定以下的紀錄內容:
10072DOE JOHN 123188
....|....1....|....2....|....3....|....4....|
則
BYTE(4) = "7"
BYTE(25) = "H"
BYTE(30) = " "
| 2 |
| |
|