V3.0以前のPowerCOBOLで作成したプロジェクトを変換する場合、以下のような留意事項があります。
シート名またはリソース名が他のシート名やリソース名と重なっている場合
プロジェクトを開くことはできません。
その内容のエラーメッセージが表示された場合、以前のPowerCOBOLを使用して、シート名およびリソース名をプロジェクト内で一意になるよう、名前を変更してから、最新のバージョンのPowerCOBOLで開きなおしてください。
ターゲットフォルダまたは作業用フォルダと同じ名前のファイルを使用している場合
リソースに指定したリソースファイルなどのファイル名が、ターゲットフォルダや作業用フォルダの名前と同じ場合、移行後にビルドすると、これらのフォルダが作成できないため、ビルドに失敗します。この場合、ファイル名を別の名前に変更してください。
V4.0以降のPowerCOBOLでコントロール名として許されない名前を、アイテム名として使用している場合
メニューアイテムの属性の参照
メニューアイテムの以下の属性名とPOW-ONを比較している場合、変換後、正しく動作しません。
この場合、手続きを以下のように「= POW-ON」から「NOT = POW-FALSE」へ修正してください。
変換前 :IF POW-ENABLE OF MENU1 = POW-ON THEN 変換直後:IF "Enabled" OF MENU1 OF CfMenu1 = POW-ON THEN 修正後 :IF "Enabled" OF MENU1 OF CfMenu1 NOT = POW-FALSE THEN
メニューアイテムのPOW-TEXT属性と他のアイテムのPOW-TEXTN属性との転記または比較をしている場合
変換後、ビルドエラーとなります。
この場合、手続きを以下のように「= POW-TEXTN」を「"Caption"」に修正してください。
変換前 :MOVE POW-TEXT OF MENU1 TO POW-TEXTN OF Label1 変換直後:MOVE "Caption" OF MENU1 OF CfMenu1 TO POW-TEXTN OF Label1 修正後 :MOVE "Caption" OF MENU1 OF CfMenu1 TO "Caption" OF Label1
メニューアイテムで複数のセパレータ項目が連続している場合
グループアイテムが配列化されている場合
グループアイテムの変換方法の指定で、グループボックスコントロールに変換するように指定している場合、配列化されているグループアイテムであっても、単独のグループボックスコントロールとして変換されます。
最初の要素以外のアイテム名は、自動的に生成されますので、必要に応じて手続きを変更または追加してください。
フレームコントロールに変換する場合は、そのまま使用することができます。
フォームが正しく再描画されない場合
この場合、適切な位置で、Refreshメソッドを呼び出して、強制的に再描画を行ってください。Refreshメソッドについては、『リファレンス』を参照してください。
フォームが正しく再描画されない現象は、COBOLプログラム実行中に、NetCOBOLのランタイムシステムが制御権を放棄しなくなったために発生します。詳細は、『ソフトウェア説明書 NetCOBOL』を参照してください。
フォームのPROCEDUREに複数の共通内部プログラムが記述されている場合
フォームのPROCEDUREに複数の共通内部プログラムが記述されている場合、個々の共通内部プログラムは、プログラムの見出し部と終わり見出しをキーワードにして分割され、フォームの手続きとして作成されます。したがって、プログラムの見出し部と終わり見出しが正しく記述されていない場合、共通内部プログラムが正しく移行できない場合があります。この場合、以前のPowerCOBOLを使用して、プログラム見出しと終わり見出しを正しく対応づけてから、最新のPowerCOBOLで開きなおしてください。
また、プログラムの終わり見出しと、次のプログラムの見出し部とのあいだに記述された注記行などは、フォームのPROCEDUREにそのまま残ります。必要に応じて移動してください。
CloseChildイベントを使用している場合
V3.0以前のプロジェクトでのシートのCLOSECHILDイベントは、V4.0以降、フォームのCloseChildイベントとして移行されます。しかし、V4.0以降、CloseChildイベントにはパラメタが追加されています。したがって、プロジェクトを移行後、そのフォーム内のどれかのイベント手続きでOpenFormメソッドまたはCallFormメソッドを呼び出し、さらに、フォーム識別IDを使って、閉じられたフォームを判別する場合には、CloseChildイベントの連絡節(LINKAGE SECTION)に引数を追加する必要があります。
変換前 : ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. …
変換直後: ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. …
追加後 : ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. LINKAGE SECTION. 01 POW-COOKIE PIC S9(9) COMP-5. PROCEDURE DIVISION USING POW-COOKIE. …
OpenFormメソッドおよびCallFormメソッドのフォーム識別IDの使用方法については、「8.3 複数ウィンドウをもつアプリケーションを作成する」を参照してください。また、メソッドおよびイベントの引数については『リファレンス』を参照してください。
表アイテムのイベント手続きの中で、表アイテムのイベントが再度発生するような手続きが記述されている場合、V3.0以前は、表アイテムのイベントは発生しませんでした。V4.0以降、これらのイベントが発生するようになりました。
たとえば、表アイテムのRETURNイベントの中で、SELECTCELLメソッドにより選択中のセルのフォーカスを移動していた場合、そのセルが自動で編集状態に設定されていれば、V4.0以降では、EDITイベントが発生してしまいます。このとき、EDITイベントに、直前の入力が完了しているかをチェックするような手続きが記述されていた場合、RETURNイベントで情報を設定する前にSELECTCELLメソッドでセルを移動してしまうと、EDITイベントの処理が正しく動きません。
したがって、このような場合は、イベントが発生する手続きの位置を変更するなどして対応してください。例を以下に示します。
変換前 : [表アイテムのRETURNイベント] CALL SELECTCELL OF TABLE1 USING W-NEXT-ROW W-NEXT-COLUMN MOVE "入力完了" TO W-CHECK [表アイテムのEDITイベント] IF W-CHECK NOT = "入力完了" THEN CALL DISPLAYMESSAGE OF SHEET1 USING "データが未入力です。" CALL SELECTCELL OF TABLE1 USING W-ROW W-COLUMN END-IF
変換直後: [表(Table)コントロールのReturnイベント] CALL SELECTCELL OF TABLE1 USING W-NEXT-ROW W-NEXT-COLUMN MOVE "入力完了" TO W-CHECK [表(Table)コントロールのEditイベント] IF W-CHECK NOT = "入力完了" THEN CALL DISPLAYMESSAGE OF SHEET1 USING "データが未入力です。" CALL SELECTCELL OF TABLE1 USING W-ROW W-COLUMN END-IF
修正後 : [表(Table)コントロールのReturnイベント] MOVE "入力完了" TO W-CHECK CALL SELECTCELL OF TABLE1 USING W-NEXT-ROW W-NEXT-COLUMN [表(Table)コントロールのEditイベント] 修正する必要はありません。
エラーチェックの強化
V3.0以前のPowerCOBOLでは、アイテム属性のインデックスに不正な値を設定してもエラーにならない場合がありました。
しかし、V4.0以降、エラーチェックが強化されたことにより、実行中にエラーメッセージが表示される場合があります。
たとえば、表コントロールの行数が10の場合、以下の文を実行するとエラーが発生します。
MOVE "ABC" TO "Text" OF "TableCells"(11 1) OF CmTable1
COBOLのプログラムからPowerCOBOLのシートを開いている場合
V3.0以前のPowerCOBOLで作成したシートを、POWEROPENSHEETメソッドを使ってCOBOLのプログラムから開く場合、COBOLの実行可能プログラム作成時に"F5BBRUNS.LIB"をリンクしていました。しかし、V4.0以降、リンクするファイルの名前が"F5DDFCB4.LIB"に変わりました。POWEROPENSHEETメソッドを使用しているCOBOLプログラムについては、リンクするファイル名を変更し、ビルドしなおす必要があります。