具有偏移量說明的靜態 ASSIGN

2021-07-29 11:12:10 字數 1562 閱讀 9476

assign [+] to .
在assign語句中,偏移量的說明有下列特殊特徵:1.和 可以是變數

2.系統不檢查所選部分是否位於字段 內部。偏移量 和長度 的 部分被分配給字段符號

。寫位址時,可以超出 的限制,但不能超出所定義的記憶體區。

3.如果沒有指定長度,系統自動輸入欄位的長度。如果大於零,總是指向超出限制的區域。

4.如果小於的長度,可以為指定乙個星號(*)來阻止參照限制之外的區域。

例子:

field-symbols .

data: begin of line,

string1(10) value '0123456789',

string2(10) value 'qwertfghij',

end of line.

write / line-string1+5.

assign line-string1+5 to .

write / .

assign line-string1+5(*) to .

write / .

結果:

該示例中,可以看到write語句和assign語句中的偏移量說明的區別。對於write,在line-string端部截短了輸出。

如果指定偏移量大於9,將導致語法檢查時出錯。在第乙個assign語句中,將line-string中以偏移量5開頭長度為10的記憶體

區域分配給字段符號。因為程式中明確定義了line-string1後面的記憶體區,所以這將導致「56789abcde」的輸出結果。

在第二個assign語句中,避免了line-string1 邊界後面的記憶體分配。

再來看乙個例子:

field-symbols .

data: begin of line,

a value '1', b value '2', c value '3', d value '4',

e value '5', f value '6', g value '7', h value '8',

end of line,

off type i,

len type i value 2.

do 2 times.

off = sy-index * 3.

assign line-a+off(len) to .

= 'xx'.

enddo.

do 8 times.

off = sy-index - 1.

assign line-a+off(1) to .

write .

enddo.

輸出結果如下:

關於偏移量的理解

偏移量是個很神奇的東西,好多學科,好多方面都包含有他的知識。今天主要是想和大家分享一下自己關於偏移量的理解,以新手向為主的理解,那麼當然是言簡意賅,然後作為拋磚引玉之用吧,希望能有各路大神來補充說明。產生靈感的 主要來自於 呢?今天接觸了一些關於雙向迴圈鍊錶的東西,用老師的話講叫做 火車皮拉貨 在l...

指標偏移量的理解

今天刷題的時候碰到如下的一道題 int main array 19 2019 unsigned long offset unsigned long short array 2019 unsigned long array unsigned char array 19 cout offset 以上程式...

JS 獲取元素的偏移量

curele.parentnode document.parentnode null offsetparent 父級參照物 在同乙個平面中,最外層的元素是裡面所有元素的父級參照物 和html層級結構沒有必然的聯絡 一般來說乙個頁面中所有的父級參照物都是body body的父級參照物是null 使用p...