You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Progress是否支持将预处理器变量作为.i文件参数并转发?

Progress预处理器参数使用与转发问题解答

1. Progress支持使用预处理器变量作为.i文件的命名输入参数

你给出的示例代码完全可行。Progress预处理器会按解析顺序处理这些定义:

  • 首先&GLOBAL-DEFINE MYDATATYPE INTEGER将MYDATATYPE定义为全局预处理器变量,值为INTEGER
  • 在包含myinclude.i时,{&MYDATATYPE}会被替换为INTEGER,传递给&DATATYPE参数
  • 最终myinclude.i里的代码会被预处理器展开为DEF VAR data AS INTEGER NO-UNDO.

同样,&SCOPED-DEFINE也能实现相同效果,只要该定义的作用域覆盖到包含.i文件的语句即可(比如在当前程序的某个块内定义,包含语句在该块范围内就能访问)。

2. 可以在包含文件内将参数转发给另一个包含文件

只需在当前包含文件里,把收到的预处理器参数原样(或经过处理后)传递给下一个包含文件即可。举个扩展示例:

myprocedure.p

&GLOBAL-DEFINE MYDATATYPE INTEGER

{myinclude.i &DATATYPE={&MYDATATYPE} }

myinclude.i

DEF VAR data AS &DATATYPE NO-UNDO.
// 将收到的&DATATYPE参数转发给myinclude2.i的&TYPE参数
{myinclude2.i &TYPE={&DATATYPE} }

myinclude2.i

DEF VAR secondaryData AS &TYPE NO-UNDO.

预处理器会依次解析这些层级,最终secondaryData的类型也会被设置为INTEGER,实现参数的转发传递。

内容的提问来源于stack exchange,提问作者W0lfw00ds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 22:04:58