7.TcplinkマクロでISPF・SDSFのFINDから関連データを取得する

By okada - Posted: 2017/02/15 Last updated: 2017/02/15 - Leave a Comment
印刷用ページの表示 印刷用ページの表示
前回は、検索コマンドの結果から対象データの存在有無に応じて動作を制御する方法をご説明しましたが、
今回は検索コマンドの結果から関連するデータ(取得したいデータ等)を得る方法です

以下の画面にてご説明します
11

データセットの中に日付(yyyy/mm/dd)とデータセット名の一覧(DATASET・・)が複数行ある場合、DATASET1の2番目の日付を取得する場合を考えます

Tcplinkマクロでは、データの取得は”edit copy”という命令を用いますが、取得する開始点(左上)、行数又は終了点(右下)を明示指定する必要があります。

画面全体をクリップボードにコピーしたい場合、edit copy (1,1) (24,80)といった具合です

Tcplinkでは変数が使えないため、edit copyコマンドの引数をマクロの中で複数準備する必要があることが想像できます。と同時にマクロ内でカーソル位置を判定させるために、カーソルの場所を求める処理(DATASET1の2件目が見つかった場所)が必要と考えてきました

<マクロ記述例>
 :
DATASET1の2件目の検索処理
カーソルがある場所の特定
(場所に応じて、以下1行目から24行目までの処理のいづれかの処理を行う)
 :
カーソルが1行目にあった場合の処理
 :
カーソルが2行目にあった場合の処理
 :
カーソルが3行目にあった場合の処理
 :
 :
 :
カーソルが24行目にあった場合の処理
 :
以後の処理

ISPF・SDSFの画面制御コマンドと組み合わせ、取得データを特定の場所に移動させる

ISPF・SDSFの画面スクロールコマンドはカーソルが存在する場所までスクロールするという仕様を持っています。この仕様はASPENには無かったと記憶しています。

以下、画面と合わせて説明します

はじめにDATASET1の検索をします
12

FINDコマンドを連続実行(PF5等)し、2番目のDATASET1を見つけました
この時点でカーソルは4行目のDATASET1の先頭を示しています。
13

ここでPF8キーで”下スクロール”します
14

下スクロールした結果、カーソルがある4行目が画面の一番上に来ました。
14

取得したい日付が特定の場所に持ってくることができました
あとは特定の場所をedit copyするだけです。画面の場合命令文は edit copy (3,8) (3,17)になります
15

ここでは、下スクロールで説明しましたが、同様に横スクロール(PF10,PF11)でも対応が可能です。
但し、横スクロールの場合、レコードの終わりは画面右端で固定されます。取得したいデータを得る方法は各自確認が必要です。

Posted in Tcplinkマクロ活用 • • Top Of Page