BITON (設定開啟位元)
| 代碼 | 因素1 | 因素2 | 結果欄位 | 指示器 | ||
|---|---|---|---|---|---|---|
| BITON | 位元數 | 字元欄位 | ||||
BITON 作業會在結果欄位中,將因數 2 中所識別的位元設為開啟 (設為 1)。 因數 2 中未識別的位元保持不變。 因此,當使用 BITON 來格式化字元時,您應該同時使用 BITON 和 BITOFF: BITON 指定要設定的位元 (= 1) , BITOFF 指定要設定的位元 (= 0)。 除非您明確地開啟或關閉字元中的所有位元,否則您可能無法取得想要的字元。
如果您要將特定位元型樣指派給字元欄位,請搭配使用 MOVE (移動) 作業與因數 2 中的十六進位文字。
因數 2 可以包含:
- 位元數 0-7: 每個作業可以設定 1 到 8 位元。 它們由數字 0 到 7 識別。 (0 是最左邊的位元。) 以單引號括住位元數。 例如,若要在上設定位元 0、2 及 5 ,請在因數 2 中輸入 '025'。
- 欄位名稱: 您可以在因數 2 中指定單位置字元欄位、表格元素或陣列元素的名稱。 欄位、表格元素或陣列元素中開啟的位元在結果欄位中設定為開啟; 關閉的位元不受影響。
- 十六進位文字或已命名常數: 您可以指定 1 位元組十六進位文字。 在因數 2 中開啟的位元會在結果欄位中設為開啟; 關閉的位元不會影響結果。
- 具名常數: 字元具名常數最長為 8 個位置,其中包含要設定的位元數。
在結果欄位中,指定一個單位置字元欄位。 如果陣列中的每一個元素都是單位置字元欄位,則它可以是陣列元素。
如需相關資訊,請參閱 位元作業。
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D FieldA S 1A INZ(X'00')
D FieldB S 1A INZ(X'00')
D FieldC S 1A INZ(X'FF')
D FieldD S 1A INZ(X'C0')
D FieldE S 1A INZ(X'C0')
D FieldF S 1A INZ(X'81')
D FieldG S 1A INZ(X'4F')
D FieldH S 1A INZ(X'08')
D FieldI S 1A INZ(X'CE')
D FieldJ S 1A INZ(X'80')
D FieldK S 1A INZ(X'80')
D BITNC C CONST('0246')
D HEXNC C CONST(X'0F')
D HEXNC2 C CONST(X'F0')
C*0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* Set on bits 0,4,5,6,7 in FieldA. Leave bits 1,2,3 unchanged.
* Factor 2 = 10001111
* FieldA = 00000000 (before)
* FieldA = 10001111 (after)
C BITON '04567' FieldA
* Set on bit 3 in FieldB. Leave bits 0,1,2,4,5,6,7 unchanged.
* Factor 2 = 00010000
* FieldB = 00000000 (before)
* FieldB = 00010000 (after)
C BITON '3' FieldB
* Set on bit 3 in FieldC. Leave bits 0,1,2,4,5,6,7 unchanged.
* Setting on bit 3, which is already on, results in bit 3 remaining on.
* Factor 2 = 00010000
* FieldC = 11111111 (before)
* FieldC = 11111111 (after)
C BITON '3' FieldC
* Set on bit 3 in FieldD. Leave bits 0,1,2,4,5,6,7 unchanged.
* Factor 2 = 00010000
* FieldD = 11000000 (before)
* FieldD = 11010000 (after)
C BITON '3' FieldD
* Set on bits 0 and 1 in FieldF. Leave bits 2,3,4,5,6,7 unchanged.
* (Setting on bit 0, which is already on, results in bit 0 remaining on.)
* Factor 2 = 11000000
* FieldF = 10000001 (before)
* FieldF = 11000001 (after)
C BITON FieldE FieldF
* X'C1' is equivalent to literal '017', bit pattern 11000001.
* Set on bits 0,1,7 in FieldH. Leave bits 2,3,4,5,6 unchanged.
* Factor 2 = 11000001
* FieldH = 00001000 (before)
* FieldH = 11001001 (after)
C BITON X'C1' FieldH
* HEXNC is equivalent to literal '4567', bit pattern 00001111.
* Set on bits 4,5,6,7 in FieldJ. Leave bits 0,1,2,3 unchanged.
* Factor 2 = 00001111
* FieldJ = 10000000 (before)
* FieldJ = 10001111 (after)
C BITON HEXNC FieldJ
C RETURN