IBM i (旧AS400）の自己学習メモ０７　SEU(Source Entry Utility)チートシート

# 自己学習メモインデックス

[IBM i (旧AS400）の自己学習メモ　インデックス](https://qiita.com/You_name_is_YU/items/3964849e7803c8eaf767)

# チートシート作成の背景

CLやRPGの勉強を少しずつ進めるにあたって自分がつまづいた点として

- ソースコードの新規作成方法がわからなかった
    - CRTCLPGMとかで出来るんじゃないの？と勘違いした
    - STRSEUコマンドをいきなり使うにしても、どこのライブラリのどこのファイルに作ったらいいのか分からなかった
    - CLプログラムを作るのに、Source Typeで「CL」と名前がついているTypeがいっぱいあってよく分からない
- ソースコードの新規作成方法がわかったあとSEUの使い方が分からなくて１行しかプログラムが書けない
    - 行の追加方法がわからない
    - 正しい列位置にコーディングするのに、いちいち桁位置を数えたりした
    - ちょっとつまづくととりあえずF3押して保存せずに最初からやり直したりした

というような、経験者から見ると初歩的だと思われるような内容でつまづいてしまいました。
人生で初めてviやvimを触った時の感覚に若干似ていましたが、ただのEditorとしての機能を全然使いこなせず、勉強するのを諦めたくなる気持ちになりました。

少しずつCLプログラミングから入っていき、SEUの使い方とかわかってきたので、チートシートを作成して、今後RPGプログラミングにチャレンジしていくときに、見返せるようにしようと思います。
**※随時更新していく予定**

# SEUのチートシート

## SEU==> の活用

### トップに移動／ボトムに移動

|コマンド|挙動|
|:--|:--|
|T|トップに移動|
|B|ボトムに移動|

![AS400-6.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/89c3813b-e3ac-43fb-beab-4f5fc12a0c54.gif)

### コード内の文字列を検索

|コマンド|挙動|
|:--|:--|
|F (検索文字列)|検索文字列を検索<br>次にヒットした場所へ移動するにはF16キーを押下|
|F (検索文字列) A|検索文字列を検索し、ヒットした件数も表示|

![AS400-7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/8301d25d-710d-ade7-492d-59d49f0e2240.gif)

## 行コマンド（行番号が採番されているエリアで利用するコマンド）

### 指定行番号を先頭に表示

|コマンド|挙動|
|:--|:--|
|9999|行番号を４桁で入力してEnterで指定した行番号を先頭に表示|
|Del|行番号の１桁目をDeleteしてEnterするとその行番号を先頭に表示<br>これ４桁びっちり使っているソースコードだとうまくいかないので、純粋に行番号を４桁で入力するのがいいかもしれないです。|

![AS400-8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/11351df6-5573-08c9-4767-e2e4737f1d9d.gif)

### 行を追加

|コマンド|挙動|
|:--|:--|
|I|直後に１行追加|
|I(n)|指定した行数追加|

![AS400-9.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/054a817a-634c-8861-d41a-77eaa11d83fe.gif)

### コピー＆ペーストと行の削除

|コマンド|挙動|
|:--|:--|
|C|１行コピー|
|A|直後の行にペースト|
|B|直前の行にペースト|
|D|1行削除|

![AS400-10.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/d1a4a1af-3b62-0323-4300-cf0c0bddb344.gif)

|コマンド|挙動|
|:--|:--|
|RP|１行をコピーして直後の行にペースト挿入する。|

![AS400-14.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/8c617adf-725d-606d-9408-1e864be9c367.gif)


|コマンド|挙動|
|:--|:--|
|CC ~ CC|CCからCCで囲った複数行をまとめてコピー|
|DD ~ DD|DDからDDで囲った複数行をまとめて削除|

![as400.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/4c7045a6-11e8-7437-88c4-0c87c54bf1f6.gif)


## 保存して終了（F3）

SEUを保存して終了する場合、F3キーを押下して、`Change/create member`に`Y`を指定して終了する。
保存したく無い場合は`N`を指定すれば良い。

![AS400-13.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/19ce6061-9e47-1a02-71c5-dc6bc615a014.gif)

## 保存して終了（SEU=> file）

通常、SEUを保存して終了する場合、F3キーを押下して、`Change/create member`に`Y`を指定して終了する必要があるが、それを一度にまとめてやってくれる方法が、SEU=>に`file`と指定する方法。

![AS400-12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/462af53e-d718-046c-5647-060ea2fd7ca3.gif)

## 保存しないで終了（SEU=> cancel）

F3キーを押下して、`Change/create member`に`N`を指定して終了すると、保存しないでSEUを終了することができますが、SEU=>に`cancel`と指定すると、簡単に保存しないで終了することができます。

![as400.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/92d80eb2-7f2d-3bc7-e7ee-2b4155e5463f.gif)

## PGM/ENDPGMや他のコマンドの自動保管（F4）

PGMやENDPGM、DCLコマンドなどの開始桁位置を整えたり、パラメータの指定などを簡単に行うために`F4`キーを利用する。
F4キーを押下すると、そのコマンドのパラメータを指定する画面が表示されるので、その画面に適切な値を指定するか、何も指定しなくてもいいコマンドの場合は、何も指定せずにそのままEnterキーを押下することで、フォーマットされたり、コードが自動保管されたりする。

![AS400-15.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/1806d02c-5c66-8403-b2e1-50237212e04e.gif)

## CDATA：コンパイル時配列を使う場合のリテラル定義

CDATAによるコンパイル時配列初期化処理を行う場合、初期値としてセットする値のリストを定義します。
RPGプログラムの最後に、１桁目から定義するのですが、SEUの画面を開くと、デフォルトで6桁目（仕様書のCやFなどを記載する桁）が表示された状態となっている。

そんな時に使うのがShift + F8（F20）キーです。

![as400.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/36e0e29c-2216-7337-cb6a-7930e5a895ab.gif)