0001.00 Dn1 S 5s 0 inz(0)
0002.00 DProc1 PR ExtProc('Proc1')
0003.00 /free
0004.00 Dow 1=1;
0005.00 Eval n1=n1+1;
0006.00 Callp Proc1();
0007.00 Enddo;
0008.00 /end-free
0009.00
0010.00 PProc1 B
0011.00 DProc1 PI
0012.00 /free
0013.00 Dsply ('n1='+%char(n1));
0014.00 if n1 = 3;
0015.00 Eval *inlr=*on;
0016.00 Return;
0017.00 endif;
0018.00 /end-free
0019.00 PProc1 E
上面的程序会无限运行下去的.
用debug调试可发现当n1=3时, if语句确实会被执行, 但Return后程序是返回到subprocedure的 PProc1 E语句, 这也就是为何程序不会被结束.
所以程序的出口代码必须要在main procedure中, 并且必须在特定情况下可被执行, 否则程序就是个死循环.
另外, 这个例子也说明了, subprocedure是可以直接访问main procedure中D表定义的变量的.
阅读(1374) | 评论(0) | 转发(0) |