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

时间:2015-02-05 03:12:28

标签: mumps

我正在与基于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结合起来? 如果是这样我做错了什么?

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

最终解决了。

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

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

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