メニューボタン
IBMi海外記事2018.04.26

RDi V9.6での大きな変更点を探る。パート1、キー動作

Susan Gantner 著

RDiのバージョン9.6には、多くの新機能があります。ほとんどの新機能がデフォルトで有効化されているため、RDiをアップグレード済みであれば、間違いなく、それらの機能強化のいくつかにお気付きだと思われます。万一、それらの機能がお気に召さない場合は、どこを見たらよいか分かっていれば、ほとんどの機能を無効化して以前の通りの動作に戻すことができます。

この記事シリーズでは、いくつかの新機能について、およびそれらを有効化/無効化する方法について説明します。今回の「パート1」では、2つのキーの新たな動作について、そしてそれらを有効化/無効化する方法について説明します。

ここで取り上げる機能強化の多くは、RPG IV(RDi流に呼べばILE RPG)に関連があるものです。追加された新機能が非常に多かったことから、ベースの[ILE RPG]設定ページがかなり長くなってしまったため、新たな設定ページが追加されることになりました。新たな[キーの動作]設定ページには、V9.6での一部の新機能が収められただけでなく、以前はベースの[ILE RPG]設定ページにあった一部の設定オプションがこのページへ移動されてきています。その設定ページの図を以下に示します。一部の新機能を赤枠で囲んでおきましたので、すでに良いヒントとなっていると思われます。下の図では、キー動作のデフォルト設定が示されています。筆者が使用している設定ではありません。

技術情報01

上図でお分かりのように、2つのキーの新たな動作というのは、EnterキーとTabキーの新たな動作に関するものであり、どちらもデフォルトで有効化されています。

Enterキーの動作:

フリーフォームRPGコード内でのみ、Enterキーは、デフォルトで現行カーソル位置の行を分割するようになっています。以前のAlt-Sショートカットとほぼ同じような動作です。Alt-Sによる動作と異なる点は、Enterキーの場合、すぐ上の設定オプションが有効化されているかによって、下の行でのその後のコードの位置が異なる点です。新たな動作では、本当は2行目のここにカーソルを置きたいと思う位置、すなわち、1行目の最初の非空白文字の下で少しインデントされた位置にずっと近くなると私は思います。使用されるインデントの量は、[フォーマッター]設定ページの[インデントするスペース数]で設定されます。ちなみに、[フォーマッター]設定ページは、任意のフリーフォームRPGコードをフォーマット(または再フォーマット)するオプションのサポートに合わせて、V9.5で追加されました。

個人的には、Enterキーの新たなデフォルトの動作が非常にお気に入りです。慣れるのにあまり時間はかかりませんでした。もっとも、時折忘れてしまっていて、うっかりEnterキーで行を分割してしまうことはまだあります。改行しようとしてEnterキーを押したものの、行の終わりでなかったために行が分割されてしまうわけです。一方で、この新たな動作は、間違いなく、WordやPagesなど、他のほとんどのエディターでの動作のしかたとよく似ています。

覚えおくべきことは、この新たな動作はどこででも機能するわけではないという点です。それはILE RPGの設定であることを思い出してください。したがって、たとえば、CLが常にフリーフォーマットであったとしても、CLでそのような動作になるとは思わないでください。RPGでも、フリーフォーマット命令行でのみそのような動作になります。変換されていない一部の古いD仕様や、(ぞっとしますが)一部の古い固定フォーマット ロジックなど、まだフリーフォーマットでないコードで作業している場合も同様です。

現時点では、この新たなEnterキー サポートは、フリーフォームのソースに組み込まれても、組み込みSQLステートメント内では機能しないようです。これがバグなのかどうか、あるいは「設計通りに機能している」とみなされるものなのかどうかは分かりません。どちらにしても、うまくいけば今後、有効化されるかもしれません。

Tabキーの動作:

Tabキーの新たなデフォルトの動作は、スペースを挿入し、結果として、コードを右へ移動することです。Shift+Tabはスペースを削除して、左への移動となります。設定ページから見て取れるように、Tabキーを1回押したときに挿入されるスペースの数は、[フォーマッター]設定ページの[インデントするスペース数]で設定されます。Enterキーでの行分割との場合と同じです。

新たなEnterキーでの分割と同様に、Tabキーの場合もフリーフォームRPGソースでのみ機能します。たいていの場合、カーソルの位置によってその動作は変わってきます。たとえば、Dcl-sステートメントでフィールド名の直後にカーソルを置いてTabキーを押した場合、フィールド名(カーソルの左側)はその場所に残りますが、データ型および他のキーワード(カーソルの右側)は、設定されている数のスペース分だけ右へ移動します。Dcl-sの上またはDcl-sの直前にカーソルを置いた場合は、ステートメント全体が右に移動します。しかし、左端マージン(シーケンス番号の直後)とDcl-sの先頭との間にカーソルが位置している場合は、1回、Tabキーを押すと、その行の最初の非空白文字へカーソルを移動するだけです。すなわち、コードは移動されません。その時点でもう1回、Tabキーを押すと、もちろん、コードは右に移動されます。

興味深いことに、Shift+Tab(左へ移動)の動作は、Tab(右へ移動)の動作と完全に対称的というわけではないようです。上述のように、とある行にあるコードの途中にカーソルを置いたときに、Tabキーを押すと、そのコードだけをカーソルの右側へ移動することになります。けれども、Shift+Tabキーを押した場合は、カーソル位置に関係なく、常にコード行全体を左へ移動するようです。

もうひとつ興味深い違いがあります。**Freeメンバー内でない(つまり、コードを8~80桁の範囲内で記述する必要がある)場合に、Shift+Tabでは、80桁目より右側へコードが移動されることはありません。しかし、Tabでは、80桁目に当たっても、コードを右へ移動するのを止めません。おそらく、Tabについての非対称性のいくつかは、今後、変更されるでしょう。

これまでのところ、説明してきたキー動作では、コードを選択していない状態でTabまたはShift+Tabを使用しています。しかし、この新たなTabキー サポートは、コード ブロックが選択されているときには、さらに便利です。たとえば、コード ブロックをマウスでドラッグするか、またはコード ブロックの先頭の行でAlt-Lを使用し、最後の行でもう一度Alt-Lを使用して10行のコードを選択した場合、Tabキーはそのコード ブロック内のすべての行を右へ移動します。これは、入れ子の論理でもうひとつレベルを追加しようとしているときに、既存のコードの一部を右へ(または、Shift+Tabで左へ)移動して、新たなインデント レベルを設定したいという場合に便利です。以前は、上述のAlt+Lを使用するやり方でコード ブロックを選択して、Alt+F8(右へ移動)またはAlt+F9(左へ移動)を使用することによってこの操作を行っていました。新たなTabキー サポートは、覚えやすいからというだけではなく、コード ブロックを選択する方法に関係なく機能する点で、より素晴らしいと言えます。

これで、これらの2つのキーの新たな動作がどう機能するかお分かりいただけたと思います。ただし、以前の動作で使用したいのであれば、いつでも、設定ページでこれらの機能の1つまたは両方を無効にすることができることを覚えておいてください。また、設定ページでは、Tabによって挿入されるスペースの数を設定できることも忘れないでください。

次回の記事では、たとえば、新たなホバー情報や各種の新たな注釈機能など、V9.6での他の一部の機能について見てゆく予定です。また、今回と同様に、デフォルトでどの機能が有効化されているかについても説明します(注意: すべてが有効化されているわけではありません)。また、それらを有効化または無効化する方法についても説明します(注意: すべてが無効化できるわけではありません)。

あわせて読みたい記事

PAGE TOP