Procedure Division.
FRAGMENT HELLO;
Initialize Program-pass-fields
Program-other-fields
Program-flags.
copy MYINC6.
Perform until Loop-done
Dsplay " "
FRAGMENT NOTTHERE;
Display "Enter a name or Q to quit:"
Move Spaces to Input-name
Accept Input-name
IF Input-name = Spaces
Move "Q" to Input-name
End-IF
Move 1 to Char-count
Inspect Input-name Tallying Char-count For Leading Spaces
Move Input-name(Char-count: 30 - Char-count) to Temp-name
If function upper-case (Temp-name) = "Q"
or Temp-name = Spaces
Set Loop-done to true
Else
Call 'PrintApp' using Program-pass-fields
End-if
End-perform.
FRAGMENT BYE;
Goback.
*************************************************** *BYE ***************************************************
************************************************** *HELLO ***************************************************
(oln,ofn,iln,ifn)
<?xml version="1.0" standalone="yes"?> <BUILD> <PACKAGE> <FILEREFERENCETABLE> <FILECOUNT>3</FILECOUNT> <FILE> <FILENUMBER>1</FILENUMBER> <FILENAME> MEL.A001.DATA.COBOL(DEMODATA) </FILENAME> </FILE> <FILE> <FILENUMBER>2</FILENUMBER> <FILENAME> MEL.A001.DATA.FRAGMENT(HELLO) </FILENAME> </FILE> <FILE> <FILENUMBER>3</FILENUMBER> <FILENAME> MEL.A001.DATA.FRAGMENT(BYE) </FILENAME> </FILE> </FILEREFERENCETABLE> <MESSAGE> <MSGNUMBER>DEMO9999E</MSGNUMBER> <MSGLINE>55</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> DD:FRAGMNT(NOTTHERE) not found </MSGTEXT> </MESSAGE> <OUTFILEREFERENCETABLE> <OUTFILECOUNT> 1 </OUTFILECOUNT> <OUTFILE> <OUTFILENUMBER> 1 </OUTFILENUMBER> <OUTFILENAME> SYS09225.T113157.RA000.MEL1.TEMPFILE.H01 </OUTFILENAME> </OUTFILE> </OUTFILEREFERENCETABLE> <STATEMENTTABLE> (1,1,1,1);(2,1,2,1);(3,1,3,1);(4,1,4,1);(5,1,5,1);(6,1,6,1); (7,1,7,1);(8,1,8,1);(9,1,9,1);(10,1,10,1);(11,1,11,1);(12,1,12,1); (13,1,13,1);(14,1,14,1);(15,1,15,1);(16,1,16,1);(17,1,17,1);(18,1,18,1); (19,1,19,1);(20,1,20,1);(21,1,21,1);(22,1,22,1);(23,1,23,1);(24,1,24,1); (25,1,25,1);(26,1,26,1);(27,1,27,1);(28,1,28,1);(29,1,29,1);(30,1,30,1); (31,1,31,1);(32,1,32,1);(33,1,33,1);(34,1,34,1);(35,1,35,1);(36,1,36,1); (37,1,37,1);(38,1,38,1);(39,1,39,1);(40,1,40,1);(41,1,41,1);(42,1,42,1); (43,1,43,1);(44,1,44,1);(45,1,45,1);(46,1,46,1);(47,1,47,1);(48,1,1,2); (49,1,2,2);(50,1,3,2);(51,1,49,1);(52,1,50,1);(53,1,51,1);(54,1,52,1); (55,1,53,1);(56,1,54,1);(57,1,55,1);(58,1,56,1);(59,1,57,1);(60,1,58,1); (61,1,59,1);(62,1,60,1);(63,1,61,1);(64,1,62,1);(65,1,63,1);(66,1,64,1); (67,1,65,1);(68,1,66,1);(69,1,67,1);(70,1,68,1);(71,1,69,1);(72,1,70,1); (73,1,71,1);(74,1,72,1);(75,1,73,1);(76,1,1,3);(77,1,2,3);(78,1,3,3); (79,1,75,1);(80,1,76,1);(81,1,77,1);(82,1,78,1);(83,1,79,1); </STATEMENTTABLE> </PACKAGE> </BUILD>
このセクションの最後に表示されているコード・サンプルは、コンパイラーの出力 XML ファイルを示しています。このコンパイラー XML ファイルは、該当するコンパイル・オプションが使用されると、コンパイラーによって生成されます。 これらのコンパイラー・オプションは、構文検査、ビルド、または依存関係の表示操作が実行されるときに、自動的に挿入されます。 コンパイラー XML ファイルのフォーマットは、プリプロセッサー XML ファイルのフォーマットとはやや異なります。ユーザー作成のプリプロセッサーおよびビルダーは、プリプロセッサー XML ファイル・フォーマットに従う必要があります。
コンパイラー XML ファイルは、コンパイル・エラーがあることを示します。つまり、"DSPLAY" は無効でした。 次の verb、期間、またはプロシージャー名の定義にスキップします。 このエラーは、入力ファイル 1 SYS09225.T113157.RA000.MEL1.TEMPFILE.H01 の 56 行目に関連します。 コンパイラーは、コンパイラーに送られたファイルに対するエラーしか報告しません。 コンパイラーは、MEL.A001.DATA.COBOL(DEMODATA) を認識しません。 コンパイラーは、入力ファイル番号 1 SYS09225.T113157.RA000.MEL1.TEMPFILE.H01 を認識します。 命名規則から、およびプリプロセッサーおよびコンパイラーを呼び出すために使用された JCL プロシージャーから、SYS09225.T113157.RA000.MEL1.TEMPFILE.H01 は、ジョブが完了したら削除される一時ファイルであるということを判別できます。
oln = 56 ofn = 1STATEMENTTABLE から、iln、および ifn を探す必要があります。ここで、順序付きクワッドは (56,1,iln,ifn) です。 このことから、以下のことを判別することができます。
iln = 54 ifn = 1つまり、コンパイラーがエラーを、ファイル SYS09225.T113157.RA000.MEL1.TEMPFILE.H01 の 56 行目で報告したということです。 この行は、MEL.A001.DATA.COBOL(DEMODATA) の 54 行目に対応します。 コンパイラー・エラーは、ファイル MEL.A001.DATA.COBOL(DEMODATA) の 54 行目に対して報告される必要があります。
<?xml version="1.0" standalone="yes"?> <!-- ************************************************************************************ --> <BUILD> <PACKAGE> <FILEREFERENCETABLE> <FILECOUNT>2</FILECOUNT> <FILE> <FILENUMBER>1</FILENUMBER> <FILENAME>SYS09225.T113157.RA000.MEL1.TEMPFILE.H01</FILENAME> </FILE> <FILE> <FILENUMBER>2</FILENUMBER> <FILENAME>MEL.A001.COPYLIB1.COPYLIB(MYINC6)</FILENAME> </FILE> </FILEREFERENCETABLE> <MESSAGE> <MSGNUMBER>IGYPS2112-E</MSGNUMBER> <MSGLINE>55</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> 「PERFORM」ステートメントには、一致する範囲終了符号がありませんでした。範囲終了符号は、82 行目にあると想定されました。実行結果が正しくない可能性があります。 </MSGTEXT> </MESSAGE> <MESSAGE> <MSGNUMBER>IGYPS2072-S</MSGNUMBER> <MSGLINE>56</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> 「DSPLAY」が無効でした。次の verb、期間、またはプロシージャー名の定義にスキップします。 </MSGTEXT> </MESSAGE> <MESSAGE> <MSGNUMBER>IGYPS0002-E</MSGNUMBER> <MSGLINE>57</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> 「*」、「D」、「/」または「-」以外の文字が、列 7 で見つかりました。ブランクが想定されました。 </MSGTEXT> </MESSAGE> <MESSAGE> <MSGNUMBER>IGYPS2008-E</MSGNUMBER> <MSGLINE>57</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> プロシージャー名「T」の前に期間が必要でした。期間は、「T」の前に想定されました。 </MSGTEXT> </MESSAGE> <MESSAGE> <MSGNUMBER>IGYPS2145-E</MSGNUMBER> <MSGLINE>57</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> 期間が必要でした。期間は、「NOTTHERE」の前に想定されました。 </MSGTEXT> </MESSAGE> <MESSAGE> <MSGNUMBER>IGYPS2015-I</MSGNUMBER> <MSGLINE>57</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> パラグラフまたはセクション「NOTTHERE」に先行するパラグラフまたはセクションに、ステートメントが含まれていませんでした。 </MSGTEXT> </MESSAGE> <MESSAGE> <MSGNUMBER>IGYPS2145-E</MSGNUMBER> <MSGLINE>58</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> 期間が必要でした。期間は、「DISPLAY」の前に想定されました。 </MSGTEXT> </MESSAGE> <MESSAGE> <MSGNUMBER>IGYPS2113-E</MSGNUMBER> <MSGLINE>75</MSGLINE> <MSGFILE>1</MSGFILE> <MSGTEXT> この明示範囲終了符号「END-PERFORM」は、一致する verb なしで検出されました。この範囲終了符号は破棄されました。 </MSGTEXT> </MESSAGE> </PACKAGE> </BUILD>