示例: 将参数传递到 ILE C++ 程序的 CL 程序

CL 程序 CLPROG1 将参数 vdhij 传递到 ILE C++ 程序 MYPROG1
注: 要在运行 ILE 程序时将参数传递给该程序,请使用 CL Call (CALL) 命令的 PARM 选项。
这些参数在 CL 程序 CLPROG1中以 null 结束。 它们通过引用传递。 MYPROG1 的所有传入自变量都是指针。
图 1。 将自变量传递至 ILE C++ 程序的 CL 程序的示例。
/* CLPROG1
 PGM        PARM(&V &D &H &I &J)
      DCL        VAR(&V) TYPE(*CHAR) LEN(10)
      DCL        VAR(&VOUT) TYPE(*CHAR) LEN(11)
      DCL        VAR(&D) TYPE(*DEC)  LEN(10 1)
      DCL        VAR(&H) TYPE(*CHAR) LEN(10)
      DCL        VAR(&HOUT) TYPE(*CHAR) LEN(11)
      DCL        VAR(&I) TYPE(*CHAR) LEN(10)
      DCL        VAR(&IOUT) TYPE(*CHAR) LEN(11)
      DCL        VAR(&J) TYPE(*LGL)  LEN(1)
      DCL        VAR(&JOUT) TYPE(*LGL)  LEN(2)
      DCL        VAR(&NULL) TYPE(*CHAR) LEN(1)  VALUE(X'00')
      /* ADD NULL TERMINATOR FOR THE C++ PROGRAM  */
      CHGVAR     VAR(&VOUT) VALUE(&V *TCAT &NULL)
      CHGVAR     VAR(&HOUT) VALUE(&V *TCAT &NULL)
      CHGVAR     VAR(&IOUT) VALUE(&V *TCAT &NULL)
      CHGVAR     VAR(&JOUT) VALUE(&V *TCAT &NULL)
      CALL       PGM(MYPROG1) PARM(&VOUT &D &HOUT &IOUT &JOUT)
 ENDPGM
CL 程序 CLPROG1 从 CL 命令提示符 MYCMD1 接收其输入值,该命令提示符提示用户输入期望的值。 MYCMD1 的源代码为:
图 2。 通用 CL 命令提示符的示例。
 CMD        PROMPT('ENTER VALUES')
 PARM       KWD(V) TYPE(*CHAR) LEN(10) +
              PROMPT('1ST VALUE')
 PARM       KWD(D) TYPE(*DEC) LEN(10 2) +
              PROMPT('2ND VALUE')
 PARM       KWD(H) TYPE(*CHAR) LEN(10) +
              PROMPT('3RD VALUE')
 PARM       KWD(I) TYPE(*CHAR) LEN(1) +
              PROMPT('4TH VALUE')
 PARM       KWD(J) TYPE(*LGL) LEN(10 2) +
              PROMPT('5TH VALUE')
CL 程序 CLPROG1 从命令提示符 MYCMD1接收到用户输入后,它将输入值传递到 C++ 程序 MYPROG1。 此程序的源代码包含在 myprog1.cpp中:
图 3。 按引用接收自变量 (指针) 的 C++ 程序的示例。
// myprog1.cpp

#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <bcd.h>

// Arguments are received by reference from CL program CLPROG1
// Incoming arguments are all pointers

int main(int argc, char *argv[])
{
  char               *v;
  char               *h;
  char               *i;
  char               *j;
  _DecimalT <10, 1>  d;

  v =  argv[1];
  d = *((_DecimalT <10,1> *) argv[2]);
  h =  argv[3];
  i =  argv[4];
  j =  argv[5];
  cout << "  v= " << v
       << "  d= " << d
       << "  h= " << h
       << "  i= " << i
       << "  j= " << j
       << endl;
}
如果 CL 程序 CLPROG1 将以下参数传递到 C++ 程序 MYPROG1:
'123.4', 123.4, 'Hi', LO, and '1'
程序 MYPROG1 的输出为:
v= 123.4     HI        LO        1  d= 123.4  h= HI        LO        1
i= LO     1  j= 1
Press ENTER to end terminal session.