【问题标题】:Using String.format with RPGLE将 String.format 与 RPGLE 一起使用
【发布时间】:2016-03-16 00:54:36
【问题描述】:

我想将 RPGLE 与带有可变长度参数或数组的 String.format 接口,我还想传递数字和字符串,所以我将使用像 "hello %s, you are %d years old" 这样的格式。有人可以给我一些关于如何在 RPGLE 中制作原型的建议吗?


更新

似乎有些人对这个问题感到困惑。为了清楚起见,我想在 RPGLE 中制作以下原型。请注意,该方法的第二个参数是varargs 参数,因此可以提供任意数量的参数! RPGLE 肯定不支持这个,但它支持*nopass 所以这对实现我需要的结果很有帮助。

  String format = "|%1$-10s|%2$-10s|%3$-20s|\n";
  System.out.format(format, "FirstName", "Init.", "LastName");

  or

  String.format(format, "FirstName", "Init.", "LastName");

我对如何在 RPGLE 中格式化字符串不感兴趣,我想制作一个 java 方法的原型。

【问题讨论】:

  • 您误解了我们的问题。我们知道您要使用的 Java API 接受可变参数。我们要说的是:退后一步,看看你想要完成的事情的大局。为什么必须使用 THAT Java API?为什么不能 (1) 将更多工作转移到 RPG,或者 (2) 将更多工作转移到 Java?显然你不喜欢或不愿意考虑(1),那你为什么不做(2)呢?
  • 我使用 RPGLE 中的 sprintf() C 库函数来做同样的事情。为什么需要 Java 来做这件事?

标签: java ibm-midrange rpgle rpg


【解决方案1】:

如何使用消息进行格式化...它们非常强大,并且文本是外部化的(并且可以识别 CCSID)。

您可以使用QMHRTVM API 来检索格式化的消息。

当您使用 RPG 代码时,调用本机功能总是比 Java 更快。

【讨论】:

  • 我需要将字符串传递给 java 应用程序。
  • 从API获取文本后可以创建字符串。
【解决方案2】:

您想使用 Java 有什么特别的原因吗?启动 JVM 的开销对许多应用程序来说都是致命的。 RPG 本身可以使用串联轻松做到这一点。

/free
 resultString = 'hello ' + %trim(name) + ', you are ' + 
                %trim(%char(years)) + ' years old';
/end-free

【讨论】:

  • 是的,因为我需要将它传递给 PDF 创建程序,它需要比 RPG 更强大的格式化程序
  • @jax:您需要哪些“更强大”的格式化功能?如果你可以在 RPG 中制作完整的字符串,它会简化传递给 Java 的参数(你可以只传递完成的字符串而不是可变数量的数据)。
  • java PDF 类将为我进行格式化。我只需要一种方法来传递带有可变参数的格式化字符串以获得灵活性。
  • @jax:你在太多方面使用了“格式”这个词。需要明确的是,formatted 字符串已经应用了格式。这就是为什么我称它为 finished 字符串。你没有给我们一个你不能将 finished 字符串传递给 Java 的理由。或者,您需要 RPG 为您做什么?如果您对 RPG 格式如此不满意,为什么不能用 Java 完成整个事情呢?我要说的主要问题实际上是你还没有告诉我们足够多的关于这里的上下文。
  • 虽然可以使用 RPG 作为控制器来调用所有 Java,但您为什么要这样做?调用 Java 的能力增加了调用 PDF 库或 POE 库的能力。 RPG中没有的东西。告诉我们您正在调用哪个 PDF 库,也许是一些示例代码。我们只是不明白您要做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 2013-08-30
  • 2017-05-30
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
相关资源
最近更新 更多