有谁能告诉我这条线是如何在免费RPG中编码的?
set PATH=${PATH}:${matlabroot}/bin/glnxa64/:${matlabroot}/bin
set LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${matlabroot}/bin/glnxa64/:${matlabroot}/sys/os/glnxa64/
${FC} ${matlabroot}/extern/examples/eng_mat/fengdemo.F -I${matlabroot}/extern/include/ -L${matlabroot}/bin/glnxa64/ -leng -lmx -cpp -o FEngDemo
答案 0 :(得分:5)
您可以使用功能强大的EVAL。 (免费中的评估是隐含的)
TESTFIELD =测试;
记住EVAL,清除该字段,然后移动新值。
答案 1 :(得分:2)
给定的陈述显然意味着建议以下RPGIV语法:
C MOVEL TEST TESTFELD
据我所知,通过更新的自由格式规则迭代,[IBM i 7.2 ILE RPG]编译器不再需要/free
规范/free and /end-free are ignored,因此可以出现fixed-form语句完全如图所示;即,无需找到备用的OpCode或定义新的代码块来替换当前上下文中提供的MOVEL。
在对编译器进行增强之前,只需在固定格式的代码行之前使用/ end-free编译器指令,然后使用/ free编译器指令遵循该固定格式的代码行以重新建立自由格式;再次,没有理由用自由格式重写声明:
/end-free
C MOVEL TEST TESTFELD
/free
请注意,作为MOVEL替代的任何单个分配可能需要比一个Op-Code单独影响更强大的功能。这是因为MOVEL采用隐式转换,而其他操作代码可能不会提供旧的固定格式操作码的完整支持功能[甚至可能不是相同的结果]。文档表明MOVEL (Move Left)
有许多可能的替代品奇怪的是,%SUBST不是上述替换之一,但对于具有固定长度字符串变量的最简单方案,%SUBST中的接收变量(如 user2338816 所示)很可能全部这是必需的。请参阅%SUBST built-in function as result
将固定格式的opCode保持内联的另一种方法是将工作移动到一个过程中,即使使用相同的opCode,也可以执行相同的代码。如果转换代码,这可能是一个必要的选择,同时打算消除内联到转换代码的所有固定格式规范;在程序中使用固定格式的opCode可能并不理想,但为了确保从复杂的opCode获得绝对相同的效果,这通常是最安全的,而不是试图编码所有细微差别。虽然可以说是另一种选择,因为/ COPY或/ INCLUDE并不比固定格式更漂亮[显然或者至少看似不合适,符合自由格式计算规范],这些编译器指令都不可能最好只留下旧的opCode内联。
答案 2 :(得分:2)
要扩展上面的一些答案,你可以:
%SUBST(TESTFIELD:1:%len(TEST))= TEST;
如果他们都是两个字符字段。或者如果TEST是数字
%SUBST(TESTFIELD:1:%len(%char(TEST)))= TEST;
答案 3 :(得分:1)
使用此表格:
%SUBST(TESTFELD: 1: len ) = TEST ;
设置" len"变量到您想要用TEST替换的值的长度,或者只是硬编码长度。
答案 4 :(得分:1)
请参阅The Essential Guid To Free-Format RPG by Bryan Meyers。
本文介绍了将Move,MoveL和MoveA操作码转换为自由格式所涉及的问题。
通过编译器的增强功能,删除/免费使用C-Spec语句的要求并不具有侵扰性。
我的推荐:
保留旧的现有MOVE操作码,但新代码应以自由格式编写。
最后的想法:
看看" UPGRPGSRC - 升级和现代化RPG源到RPGLE / Free"可从http://www.projex.com/获取FREEEE。他们还为IBMi提供了其他有用的工具。
请注意,在发布此答案时,ProjeX网站已关闭。 https://web.archive.org/web/20160320171335/http://www.projex.com/