我正在上 IBM iSeries 和 Rational Developer 的入门课程,我在为实验室编译我的一个 RPGLE 程序时遇到了困难……不幸的是,实验室只是我们应该编译的代码的演练,没有太多解释,所以我完全不知道我在做什么......
当我编译我的程序 MARKSRPG.RPGLE 时,我的大部分错误都是“未定义名称或指示符”......我不知道这是什么意思,我无法继续查看我是否编写了代码到目前为止工作。
(更新:我已经对建议进行了更正,现在我得到了不同的错误。“左右手边的类型在 EVAL 操作中不匹配”和“操作数与操作员。)
该程序分为两个文件:MARKSRPG.RPGLE 和 MARKSDSP.DSPF。这是两者的代码,但我的错误只显示在 MARKSRPG.RPGLE
MARKSDSP:
A R RECORD1
A 1 33'Marks Calculator'
A 2 2USER
A 1 2SYSNAME
A 1 72DATE
A 4 24'Test 1:'
A 5 24'Test 2:'
A 6 24'Test 3:'
A 7 24'Labs:'
A 8 24'Exam:'
A TEST1 3 0B 4 32RANGE(0 100)
A TEST2 3 0B 5 32RANGE(0 100)
A TEST3 3 0B 6 32RANGE(0 100)
A LABS 3 0B 7 32RANGE(0 30)
A EXAM 3 0B 8 32RANGE(0 100)
A FIELD T B 2 71
A R RECORD2 CA03(03 'Exit')
A OVERLAY
A 10 23'Tests:'
A 11 18'Final Mark:'
A 12 17'Final Grade:'
A TESTOVRLL 3 0O 10 30
A NUMGRADE 3 0O 11 30
A GRADE 2X O 12 30
A 13 17'F3 - Exit'
MARKSRPG:
FMARKSDSP CF E WORKSTN
DLETGRADE S 1A
DTESTOVRLL S 3A
/FREE
EXFMT RECORD1;
DOW NOT(*IN03);
EXSR GETGRADE;
WRITE RECORD1;
EXFMT RECORD2;
IF *IN03= *OFF;
EXSR CLEARMARKS;
EXFMT RECORD1;
ENDIF;
ENDDO;
*INLR = *ON;
RETURN;
BEGSR GETGRADE;
LETGRADE = 'F';
TESTOVRLL = (TEST1 + TEST2 + TEST3)/3;
NUMGRADE = (TESTOVRLL/100*.30) + LABS +(EXAM/100*.35);
ENDSR;
BEGSR CLEARMARKS;
TEST1 = 0;
TEST2 = 0;
TEST3 = 0;
LABS = 0;
EXAM = 0;
TESTOVRLL = 0;
ENDSR;
/END-FREE
如果您知道任何有用的学习 RPGLE 和 CLLE 的资源,我将不胜感激,任何额外的见解和帮助也会很棒!
谢谢。