M - 这个简单的 for 循环有什么问题

M - Whats wrong with this simple for loop

我正在连接一个基于 fis-gtm 的腮腺炎系统,我需要一些关于我本地 Linux 安装(CENTOS 7 上的 fis-gtm V6.2)的测试数据。

所以我阅读了手册并想出了:--

set nword(1)="one"
set nword(2)="two"
set nword(3)="three"
set nword(4)="four"
set nword(5)="five"
set nword(6)="six"
set nword(7)="seven"
set nword(8)="eight"
set nword(9)="nine"
set nword(10)="ten"
set rn=^runcount+1
FOR i=1:1:10  DO    
. FOR j=1:1:10  DO    
.. set val="run:"_nword(rn)_" transaction:"_nword(i)_" update:"_nword(j)
.. w val,!

这看起来很简单 -- 但我无法让它接受内部 DO 循环。

无论我尝试什么,我都会得到:-

GTM>. FOR j=1:1:10  DO
%GTM-E-CMD, Command expected but not found
    . FOR j=1:1:10  DO
    ^-----

在放弃并下载 perl 绑定之前,我基本上在这上面浪费了整个上午。

是否可以将嵌套的 DO 与简单的 FOR 结合起来? 如果是这样,我做错了什么?

奇怪——“.”如果您定义例程并编译但不直接执行,则类型嵌套选项有效!

最终解决了。

我对腮腺炎一无所知,但这是我在网上找到的一个片段。也许会有帮助。

NESTLOOP
     ;.../loops/nested
     ;set up the 2D array with random values
     NEW A,I,J,K,FLAG,TRIGGER
     SET K=15 ;Magic - just to give us a size to work with
     SET TRIGGER=20 ;Magic - the max value, and the end value
     FOR I=1:1:K FOR J=1:1:K SET A(I,J)=$RANDOM(TRIGGER)+1
     ;Now, search through the array, halting when the value of TRIGGER is found
     SET FLAG=0
     SET (I,J)=0
     FOR I=1:1:K Q:FLAG  W ! FOR J=1:1:K WRITE A(I,J),$SELECT(J'=K:", ",1:"") SET FLAG=(A(I,J)=TRIGGER) Q:FLAG
     KILL A,I,J,K,FLAG,TRIGGER
     QUIT

FOR 迭代参数后不应有两个空格,只能有一个。

FOR i=1:1:10 DO
. FOR...