VSCodeでFFRPGをシュッと始める　デバッグ実行編

# 前置き:raised_hand:
- 以下記事が前段となっております。デバッガーが起動した状態で本記事をご確認ください。
    - [VSCodeでFFRPGをシュッと始める　デバッガー起動設定編](https://qiita.com/KOINULIB/items/1c630546db39dfad8189)
- 今回はデバッガーが起動されている状態で、FFRPG（ILERPG）のプログラムのデバッグ実行をしたいと思います

# 環境前提（上記記事と同じ）
## IBM i 前提
- IBM i 7.5 TR3
- [デバッガー起動に必要な前提PTF](https://codefori.github.io/docs/developing/debug/)
    - 5770SS1 のホスト デバッガー:
        - SI83666,SI81035
- IBM i上にJava8があること（Java11でも可）
    - `/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit`
## VSCode前提
- IBM i Development Packがインストールされていること
    - 内包されている拡張機能のバージョン
        - Code for IBM i：v2.10.2 (pre-release)
## Code for IBMi設定前提
- 事前に接続するIBM i の設定が完了していること
    - [IBM i接続設定はこちらをご参照ください](https://qiita.com/KOINULIB/items/b7259d93ec772effdef7)


# デバッグ前準備②サンプルのPGM
- add10.rpgle
    - CALL時のパラメーターに10を足してDSPLYする謎のPGM
    ```
    **free
    
    ctl-opt dftactgrp(*no) main(main);
    //---------------------
    // main処理 add10
    // CALL PGM(コンパイルするLIB/ADD10) PARM((S (*CHAR 1)) (900 (*DEC 9 0))) 
    // サンプルコード
    //---------------------
    
    dcl-proc main;
        dcl-pi *N;
            #kubun char(1);
            #number packed(9:0);
        end-pi;
        
        if #kubun = 'S';
            dsply  subpro(#number);
        else;
            dsply '区分NG';
        endif;
        
    end-proc;
    
    dcl-proc subpro;
        dcl-pi *n varchar(52);
            number packed(9:0);
        end-pi;
    
        dcl-s dsplay_message  char(52); 
    
        number = number + 10;
        dsplay_message = '返却結果：' + %char(number);
    
        return dsplay_message;
    end-proc;
    ```
# 1. IFS上にサンプルPGMソース（add10.rpgle)を作成　または　アップロードをする
- Code for IBM iの機能で直接ソース作成(IFSの任意のフォルダを右クリック＞New Fileをクリック)＆編集をしてもOK
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/077bde2a-4524-7bc7-6bf8-bcc0bee612e9.png)

- SFTP拡張機能で、ローカルPCのフォルダからIFSへ自動Uploadするように設定する場合は以下記事をご参照ください
    - [VSCodeでFFRPGをシュッと始める　環境構築／ソースをIFSへPush編](https://qiita.com/KOINULIB/items/b7259d93ec772effdef7)

# 2. サンプルソースをコンパイルする
- コンパイルについても以下記事にございますので、ご参照ください
    - [VSCodeでFFRPGをシュッと始める　いざ、コンパイル編](https://qiita.com/KOINULIB/items/21c4940059b43b0e5e9d) 
- 今回はKOINULIBにコンパイルした、という前提で進みます

# 3. デバッガーを開始する
- OBJECT BROWSERでコンパイル先のライブラリー一覧を表示し、add10.rpgleのPGMオブジェクトを選択
- 右クリックして、`Start Debugging` ＞ `Debug as Batch`を押下
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/dfb54b6e-5174-0634-d47c-5bd2004470ef.png)
- CALLコマンドを入力
    - `CALL PGM(KOINULIB/ADD10) PARM((S (*CHAR 1)) (900 (*DEC 9 0))) `
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/f2d08ccf-b1ad-997d-db05-b8d6d085d9c2.png)
    - ※コマンド入力前にパスワード入力を求められるかも…
- デバッガーが開始される:raised_hands:
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/c218ecb2-ded1-b9d8-b067-ab5faf0c64ee.png)

# 4. デバッグしてみよう
- 任意のステップにカーソルを合わせてダブルクリックして、ブレークポイントを設定
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/faab394b-21ea-8e25-1567-fce86e02543d.png)
- 一番左の続行（F5でも可）を押下
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/9c0cdd78-ff9f-523c-2816-d233587a4159.png)
    - 当たり前だけど、ブレークポイントで停止される～！変数も確認できる～！VSCodeでデバッグできるのはなんだかIBM i の新たな開発の幕開けという感じ…
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658740/32a9b83c-311a-318b-1e7f-1fae4da78bba.png)


# おわりに
- 次はDB操作をするPGMでのデバッグ記事投稿がしたいのですが、躓き中です
    - 環境のせいなのか、ソースのせいなのか、設定なのか悩み中…
- Code for IBM i はコミュニティでのディスカッションが盛んで、更新頻度も高く、乗り越える日は近いと思います
- 乗り越え次第記事化いたしますので、お楽しみに…！