ILE RPG MOVEL免费格式免费RPG

时间:2015-10-01 13:53:39

标签: ibm-midrange rpgle rpg

有谁能告诉我这条线是如何在免费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

5 个答案:

答案 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/