PF-Scroll-Panel (値 10)

パネル領域をスクロールします。

領域は、パネル内の特定の領域です。指定した領域を、行単位で上下に、列単位で左右にスクロールできます。

PPB-Update-Mask でのビット設定に応じて、次のように特定のデータ項目を指定する必要があります。

ビット 必要なデータ項目
0 text-buffer、PPB-Buffer-Offset、および PPB-Vertical-Stride
1 attribute-buffer、PPB-Buffer-Offset、および PPB-Vertical-Stride
2 PPB-Fill-Character
3 PPB-Fill-Attribute

パラメーター:

attribute-buffer pic x(n)
PPB-Buffer-Offset pic 9(4) comp-x
PPB-Fill-Attribute pic x
PPB-Fill-Character pic x
PPB-Panel-ID pic 9(4) comp-x
PPB-Scroll-Count pic 9(4) comp-x
PPB-Scroll-Direction pic 9(2) comp-x
PPB-Update-Height pic 9(4) comp-x
PPB-Update-Mask pic x
PPB-Update-Start-Col pic 9(4) comp-x
PPB-Update-Start-Row pic 9(4) comp-x
PPB-Update-Width pic 9(4) comp-x
PPB-Vertical-Stride pic 9(4) comp-x
text-buffer pic x(n)

入力パラメーター:

ビット 必要なデータ項目
attribute-buffer PPB-Update-Mask のビット 1 が設定されている場合は、領域を埋める属性バッファーを指定します。
PPB-Buffer-Offset PPB-Update-Mask のビット 0 が設定されている場合は、text-buffer から表示する最初の文字位置を指定します。PPB-Update-Mask のビット 1 が設定されている場合は、attribute-buffer から表示する最初の属性位置を指定します。
PPB-Fill-Attribute PPB-Update-Mask のビット 3 が設定されている場合は、領域を埋める属性を指定します。
PPB-Fill-Character PPB-Update-Mask のビット 2 が設定されている場合は、領域を埋める文字を指定します。
PPB-Panel-ID スクロールされるパネルの識別ハンドル。この値は、PF-Create-Panel 呼び出しで返されます。
PPB-Scroll-Count スクロールする行数。
PPB-Scroll-Direction スクロールの方向。
0
1
2
3
PPB-Update-Height スクロールする領域の高さ。
PPB-Update-Mask Panels パラメーター ブロック」セクションを参照してください。
PPB-Update-Start-Col スクロールで影響を受ける領域の最初の列。
PPB-Update-Start-Row スクロールで影響を受ける領域の最初の行。
PPB-Update-Width スクロールする領域の幅。
PPB-Vertical-Stride PPB-Update-Mask のビット 0 または 1 が設定されている場合は、text-buffer または attribute-buffer の行の長さを指定します。
text-buffer PPB-Update-Mask のビット 0 が設定されている場合は、領域を埋めるテキスト バッファーを指定します。

出力パラメーター:

なし

説明:

パネルでは、テキストおよび属性を別々にスクロールできません。

例:

パネルは 50 文字幅、15 行の高さで定義されています。パネルのハンドルは、ws-save-panel-id に保存されています。

この例では、パネルのテキストおよび属性を 15 行、上スクロールし、空きになっているテキストを、テキスト バッファーおよび属性バッファーからのテキストおよび属性で埋めます。テキストおよび属性バッファーの最初の 15 行は、すでに使用されています (画面に表示されている)。そのため、テキストおよび属性バッファーの 16 行目からスクロールが始まります (テキストおよび属性バッファーの 1 行は 50 文字幅です)。

* Define an update rectangle; that is a block of the panel 
* to scroll. In this case, define the entire panel as the
* rectangle.
       move 50 to ppb-update-width.
       move 15 to ppb-update-height.
* Since the update rectangle is the same size as the panel,
* begin scrolling with line 1, column 1 of the panel (where 
* 0,0 is the top left-hand corner of the panel).
       move 0 to ppb-update-start-row.
       move 0 to ppb-update-start-col.
* The rectangle scrolls up.
       move 0 to ppb-scroll-direction
* Scroll up 15 lines.
       move 15 to ppb-scroll-count.
* The panel is filled with text and attributes from user
* specified buffers. The first 15 lines (each line in the 
* buffer is 50 characters wide) are already displayed. Start
* updating with the 16th line of the buffers. 
* PPB-Buffer-Offset specifies what character of the buffers 
* to begin with (where 1 is the first character). Therefore, 
* start with the 751st character (15 rows times 50 
* characters per row equals 750 characters already on the 
* screen).
       move 751 to ppb-buffer-offset.
* One row of the update rectangle is 50 characters wide.
       move 50 to ppb-vertical-stride.
* Update the vacated portions of the panel using text and
* attribute buffers (set bits 0 and 1 of PPB-Update-Mask) 
* and changes are seen on the screen as the rectangle 
* scrolls in the enabled panel(set bits 4 and 5 of 
* PPB-Update-Mask). x"33" is binary 00110011.
       move x"33" to ppb-update-mask.
* The panel ID was saved in ws-save-panel-id.
       move ws-save-panel-id to ppb-panel-id.
* Scroll the panel. The text buffer is text-buffer and the
* attribute buffer is attribute-buffer.
       move pf-scroll-panel to ppb-function.
       call "PANELS" using panels-parameter-block
       text-buffer
       attribute-buffer
       if ppb-status not = zero
*         (code to abort)