从rpgle程序返回字符串

Ana*_*age 0 rpgle ibm-midrange

我想从rpgle程序返回字符串.

/free 
return 'this is simple text';
/end-free
Run Code Online (Sandbox Code Playgroud)

可以请给我代码片段.

jma*_*phy 6

程序对象必须通过参数返回值.如果要使用RETURN操作码返回值,则需要使用子过程.子过程可以包含在程序对象或服务程序对象中.如果要与多个程序共享子过程,则应使用服务程序.这是您如何定义在服务程序中使用的子过程:

dcl-proc MyProcedure Export;
  dcl-pi *n Varchar(25);
  end-pi;

  return 'this is simple text';
end-proc;  
Run Code Online (Sandbox Code Playgroud)

如果您只是在程序中定义子过程,则需要省略Export关键字.

要调用子过程,您可以使用以下内容:

dcl-s string     Varchar(25);

string = MyProcedure();
Run Code Online (Sandbox Code Playgroud)

从程序返回值

如果你真的想从程序返回一个值,你必须使用如下参数:

ctl-opt DftActGrp(*No) ActGrp(*Caller)
        Main(MyProgram);

dcl-proc MyProgram;
  dcl-pi *n;
    string        Varchar(25);
  end-pi;

  string = 'this is a simple string';
  return;
end-proc;
Run Code Online (Sandbox Code Playgroud)

要调用该程序,您可以使用以下内容:

dcl-s string      Varchar(25);

dcl-pr MyProgram ExtPgm('MYPROGRAM');
  str          Varchar(25);
end-pr;

MyProgram(string);
Run Code Online (Sandbox Code Playgroud)