IBM i 7.6 プログラム資料説明書を読む　その6 LPP#2

[前回の続きです。](https://qiita.com/gomAnomalocaris/items/9eb365783d85d03023fb) こちらで最終回です(^^

## CICSトランザクションサーバー for i(5770-DFH)のサポート終了

首記ライセンスプログラムはIBM i 7.6でサポートがありません。代替製品等はありません。

## PowerHA SystemMirror for i (5770HAS)

### PowerHA SystemMirror for i のライセンスオプションの統合
首記ライセンスプログラムの各機能はIBM i 7.5 以降で単一のオプションに統合されました。
IBM i 7.4 以前からリリースアップする場合、5770HAS オプション 1 がインストールされていない場合、リリースアップ前または後に5770HAS オプション 1 を手動インストールが必要です。

### MFA使用時のPowerHA SystemMirror for i クラスター機能

MFA設定済みのユーザープロフィールを管理ドメインで同期できます。ただし、*TOTP または *REGFAC 認証方式を持つユーザーが IBM iクラスターやPowerHA操作を実行しようとするとほとんどの操作が失敗します。
また管理ドメインの管理リソースの操作を *TOTP または *REGFAC 認証方式を持つユーザーが実行した場合、リソースのステータスが不整合になる可能性があります。QCST_AD_CREATE (新規作成されたリソースを管理ドメインに自動的に追加する) や QCST_AD_DELETE (管理ドメイン全体のリソースを自動的に削除する) などの PowerHA ポリシーに関連する操作も作成または削除操作を実行するユーザーが *TOTP または *REGFAC 認証方式を持つ場合、失敗する可能性があります。

### 非推奨のPowerHA API

以下の PowerHA API は非推奨となり、将来のリリースで削除予定です。
• PowerHA バージョンの変更 (QhaChangeHAVersion) API
• ASP コピー情報の取得 (QYASRTVINF) API
• HA 構成の説明の取得 (QhaRetrieveConfigurationDesc) API
• HA ステータスの取得 (QhaRetrieveStatus) API
• HA ポリシーの取得 (QhaRetrievePolicy) API

## IBM Development Kit for Java (5770-JV1)

JV1オプション19 Java 11 (64-bit)はIBM i 7.6ではサポートされません。

## Performance Tools for i (5770-PT1)のサポート終了

以下の２つの機能はIBM i 7.6ではサポートされません。
・Performance Graphics (Option 9)　Navigator for i が代替機能を提供します。
・Performance Advisor (Option 10) 代替機能無しのようです

## IBM Content Manager OnDemand for i (5770-RD1)

CMoDですね。
### CRTINSTONDコマンドのCCSID (DBFCCSID) パラメーターのデフォルト値が、ロケールから UTF-8 に変更

上記変更に伴い（UTF-8フィールドにインデックスを格納する場合、一部の文字は UTF-8 フィールドに格納されると複数バイトを使用することに注意。ラテン文字の小文字と大文字 [a-z] [A-Z]、およびアラビア数字 [0-9] は 1 バイトのみ使用。記号付き文字とDBCS 文字は 2 バイト、3 バイト、または 4 バイトを使用する場合があります。詳細は下記を参照

UTF-8 (Unicode) support in Content Manager OnDemand for i
www.ibm.com/support/pages/node/7017512

### CMoD JOB名の変更

ジョブ名 (JOBNAME)パラメーターを *DFT に設定してバッチにコマンドを実行依頼する際に使用されるデフォルトのジョブ名の一部が変更されました。デフォルトのジョブ名が変更されたコマンドはCRTINSTOND、MRGSPLFOND、STRASMOND、STRDSMOND、STRMONONDです。
詳細は下記を参照

What default job names are used when submitting Content Manager OnDemand for i commands to batch?
www.ibm.com/support/pages/node/7168199

### STRMONONDコマンドの変更

STRMONONDコマンドでディレクトリー・モニター（タイプ *DIR、*DIR2、および *DIR3）の場合、デフォルトのチェック間隔 (CHKITV) パラメーター値が 90 秒から 30 秒に短縮されました。
JOBパラメーターは非推奨で将来のリリースでは削除予定です。代わりに、新しいジョブ名JOBNAMEパラメーターを推奨。

## IBM Facsimile Support for i (5798-FAX) は販売終了

上記はIBM i 7.6で販売終了となりましたが、コマンド・インターフェースは後継製品で使用される可能性があるためIBM i OSにはそのまま残されます。

うーむこの書き方は・・(^^;

## IBM Rational Development Studio for i (5770-WDS) の変更点

## ILE RPGの変更点

### サブプロシージャ内でグローバル定数パラメータを変更できない

IBM i 7.6以降TGTRLS(*CURRENT)では、コンパイラーはサブプロシージャ内でグローバル定数パラメータを変更する演算を許可しません。以下のシナリオで、定数グローバルパラメータが指定された場合、診断メッセージが発行されるようになりました。（7.5以前はパラメーター変更可能、以下のいくつかのケースで診断メッセージは出力されない）

• DATA-INTOの第1オペランド：メッセージRNF7191が発行されるようになりました。(「DATA-INTOの第1オペランドは変更できません。」)
• DEALLOCの第1オペランド：メッセージRNF7261が発行されるようになりました。(「指定された演算では結果フィールド・オペランドが無効です。」)
• EVAL-CORRの第1オペランド：メッセージRNF7353が発行されるようになりました。 （「EVALCORR のターゲットオペランドが無効です。」）
• ON-EXIT の第 1 オペランド：メッセージ RNF5438 が出力されるようになりました。（「ON-EXIT 命令コードのオペランドが無効です。」）
• XML-INTO の第 1 オペランド：メッセージ RNF5354 が出力されるようになりました。（「XML-INTO の第 1 オペランドは変更できません。」）
• 自由形式ステートメントにおける DSPLY の結果フィールド：メッセージ RNF7261 が出力されるようになりました。（「指定された命令では結果フィールドオペランドが無効です。」）
ターゲットリリース V7R4M0 および V7R5M0 では、環境変数　IBM_RPG_CHK_ALL_CONST_IN_SUBPROC に値 'Y' を追加することで、サブプロシージャー内でグローバル定数パラメーターが変更されたときにコンパイラーが診断メッセージを出力するように設定できます。

### INZ(*EXTDFT) の初期値の CCSID の処理が適正化

IBM i 7.5までは外部記述のデータ構造またはサブフィールドが INZ(*EXTDFT) で定義されている場合、CRTBNDRG または CRTRPGMOD のターゲット CCSID (TGTCCSID パラメーター) が外部記述ファイルの初期化データの CCSID と異なると、初期化値が正しく処理されないことがありました。7.6以降ではTGTRLS(*CURRENT) の場合、コンパイラーは初期化値の CCSID を正しく処理します。
これにより、7.6環境ではサブフィールドの初期値で新たなコンパイル時エラーが発生する可能性があります。

• データ構造が CCSID(*EXACT) で定義されており、初期化データをサブフィールドの CCSID に変換できない場合、メッセージ RNF0673「一部の文字をソースファイルの CCSID から必要な CCSID に変換できませんでした。」が出力されます。

• データ構造がCCSID(*EXACT)で定義されており、CCSID(1208)のサブフィールドの初期化値がサブフィールドのバイト数よりも長い場合、RNF3496「初期化値が最大リテラル長を超えています。」が出力されます。

*TGTRLSやOSバージョンがIBM i 7.4、7.5の場合、環境変数QIBM_RPG_CORRECT_INZ_EXTDFT_CHARに値「Y」を追加することで、コンパイラーが上記のようなケースで初期化データのCCSIDを正しく処理可能になります。

### LIKEFILE で定義されたファイルの CCSID 変換

IBM i 7.5までは、LIKEFILE キーワードを使用してファイル定義した場合、入出力操作の結果データ構造内のフィールドの CCSID が入出力バッファー内のフィールドの CCSID と異なる場合、CCSID 変換は行われませんでした。

上記CCSID の不一致は、以下の場合に発生する可能性があります。
• データベース・ファイルがキーワード DATA(*NOCVT) で定義され、データ構造がキーワード CCSID(*EXACT) で定義されていない。この場合、入出力バッファー内のフィールドの CCSID はファイル内のフィールドと同じになりますが、データ構造内の英数字サブフィールドにはジョブの CCSID が設定されます。

• データベース・ファイルが DATA(*CVT) で定義され、データ構造がキーワード CCSID(*EXACT) で定義されている。この場合、入出力バッファー内の英数字サブフィールドにはジョブの CCSID が設定されますが、データ構造内のサブフィールドにはファイル内のフィールドと同じ CCSID が設定されます。
DATA キーワードには、OPENOPT(*NOCVTDATA) または OPENOPT(*CVTDATA) キーワードによって設定されたデフォルトが設定されている場合があることに注意してください。
IBM i 7.6 ベース以降、TGTRLS(*CURRENT) の場合、コンパイラーはデフォルトで、LIKEFILE キーワードで定義されたファイルに対して、データ構造と入出力バッファー間の必要な CCSID 変換を実行します。
CCSID 変換が行われないという元の問題を回避するために変更を加え、データ構造と入出力バッファー間の必要な CCSID 変換をコンパイラーに省略させたい場合は、プログラムのコンパイル時に、値 'N' を指定した環境変数 QIBM_RPG_HANDLE_CCSID_LIKEFILE を追加してください。
TGTRLSやOSバージョンがIBM i 7.2 から IBM i 7.5 の場合、同じ環境変数 QIBM_RPG_HANDLE_CCSID_LIKEFILE を値 'Y' で追加して、コンパイラーがデータ構造と I/O バッファー間で必要な CCSID 変換ができます。

### LIKEREC(*ALL) または EXTNAME(*ALL) で定義されたデータ構造を持つ入出力の CCSID 変換

IBM i 7.5まではデータベース・ファイルの入出力バッファー内の英数字データの CCSID と結果データ構造のサブフィールドの CCSID が一致しない場合、データ構造が *ALL で定義されていると、RPG コンパイラーは必要な CCSID 変換を実行するコードを生成しませんでした。

この不一致は、以下の場合に発生する可能性があります。
• データベース・ファイルがキーワード DATA(*NOCVT) で定義され、データ構造がキーワード CCSID(*EXACT) で定義されていない。この場合、入出力バッファー内のフィールドの CCSID はファイル内のフィールドと同じになりますが、データ構造内の英数字サブフィールドの CCSID はジョブの CCSID になります。
• データベース・ファイルが DATA(*CVT) で定義され、データ構造がキーワード CCSID(*EXACT) で定義されています。この場合、入出力バッファー内の英数字サブフィールドにはジョブのCCSIDが割り当てられますが、データ構造内のサブフィールドにはファイル内のフィールドと同じCCSIDが割り当てられます。
DATAキーワードには、OPENOPT(*NOCVTDATA)またはOPENOPT(*CVTDATA)キーワードによって設定されたデフォルトが適用される場合があることに注意してください。
TGTRLS(*CURRENT)の場合、IBM i 7.6ベースリリース以降、コンパイラーはデータ構造と入出力バッファー間で必要なCCSID変換をデフォルトで実行します。

### %TRIM のオペランドの CCSID が異なる場合のコンパイラ診断メッセージ

IBM i 7.5までは、%TRIM、%TRIML、または %TRIMR の第 2 オペランドの CCSID が第 1 オペランドと異なる場合、コンパイラは診断メッセージ RNF0374 (%TRIMx の 2 番目のパラメーターが無効です) を発行できませんでした。

IBM i 7.6以降の TGTRLS(*CURRENT) では、%TRIM 組み込み関数の CCSID が異なる場合、コンパイラはデフォルトで診断メッセージ RNF0374 を発行するようになりました。
CCSID が異なる場合でも %TRIM 演算が実際には正しく動作するようにプログラムを変更し、このエラーでコンパイラが RNF0374 を発行しないようにしたい場合は、プログラムのコンパイル時に環境変数 QIBM_RPG_CHK_TRIM_CCSIDS に値 'N' を追加してください。
TGTRLSやIBM i OSバージョンが V7R4M0、V7R5M0 の場合、同じ環境変数 QIBM_RPG_CHK_TRIM_CCSIDS を値 'Y' で追加して、コンパイラーが診断メッセージを出力できます。

### %LOOKUP と IN 演算子（Object 型配列の場合）

IBM i 7.5までは、%LOOKUP を Object 型配列で使用すると、%LOOKUP は常にゼロを返し、検索引数が配列内に見つからないことを示していました。同様に、IN 演算子を Object 型の配列または %LIST で使用すると、常に *OFF を返していました。
リリース 7.6 ベース以降の TGTRLS(*CURRENT) では、%LOOKUP は検索引数に一致する要素のインデックスを返し、IN 演算子は、IN 演算子の第 2 オペランドの配列要素が検索引数に一致する場合、*ON を返します。
TGTRLSやIBM i OSバージョンがV7R4M0、V7R5M0 の場合、環境変数 QIBM_RPG_CORRECT_OBJECT_LOOKUP を値 'Y' で追加して、コンパイラーがオブジェクト配列を正しく処理できます。

### %SCAN で、検索引数の長さ 0 を正しく返す

IBM i 7.5までは、%SCAN の検索引数の長さが 0 の場合、%SCAN 操作は実行時にステータスコード 100 で失敗していました。
IBM i 7.6以降の TGTRLS(*CURRENT) では、実行時に長さ 0 の検索引数が許可されます。
コンパイラーが実行時に %SCAN の検索引数の長さを 0 のままにしないようにするには、プログラムのコンパイル時に環境変数 QIBM_RPG_ALLOW_SCAN_ZERO_LEN に値 'N' を追加します。
TGTRLSやIBM i OSバージョンがV7R4M0、V7R5M0 では、同じ環境変数 QIBM_RPG_ALLOW_SCAN_ZERO_LEN に値 'Y' を追加することで、コンパイラーが実行時に %SCAN の検索引数の長さを 0 のままにできます。

## ADTSコマンドの変更　IBM Rational Development Studio for i (5770-WDS) オプション 21

SEU、PDM、対話式ソースデバッガー (ISDB) はIBM i 7.6でも全く変更されず、7.5以前と同様な機能が提供されます。以下のコマンド、メニューからの実行は従来通り利用可能です。

• STRPDM
• STRSEU とSTRISDB
• 対話型ソースデバッガの終了 (ENDISDB)
• WRKMBRPDM
• WRKOBJPDM
• CHGPDMDFT
• FNDSTRPDM
• FNDSTRPDM2
• WRKLIBPDM

以下のコマンド、メニューからの実行機能は7.6で削除されます。
• STRRLU
• STRSDA
• STRAPF
• MRGFORMD
• STRCGU
• CPYIGCSRT
• MRGFORMD

以下のコマンドは利用可能ですが、IBM i 7.6 ではサポートはありません。
• STRDFU
• CRTDFUDSPF

補足しますと、IBM i 7.6（テスト版ですが）では下記のようにSTRDFUコマンドは実行できますが、その後の表示メニュー上でオプション2,3,4がなくなっています。1はあるのでIBM i 7.5までに作成したDFU定義はそのまま実行出来ます。（が、既存DFU定義の変更などはできない）。また5(CHGDTAコマンド).もあるのでDFU定義を保管せず都度DFUでファイル名指定しDFU更新することはできます。CHGDTAコマンドを直接実行も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011394/7c119aea-053a-4025-8fca-b70aa2571164.png)

以下のコマンドは7.6でも利用可能ですがサポートはありません。また、これらのコマンドを呼び出すPDMのメニュー・オプションが削除されています。
• CMPPFM
• MRGSRC

[SDA, RLUについてはRDiの代替機能](https://qiita.com/gomAnomalocaris/items/dcad76a525667fadd8d3)が使えそうです。