什么是 !和:用于REXX

时间:2015-04-18 18:54:41

标签: rexx

这是什么!并且:在REXX中执行。 例如,在这段代码中

!all:!!=!;!=space(!);upper !;call !fid;!nt=right(!var('OS'),2)=='NT';!cls=word('CLS VMFCLEAR CLRSCREEN',1+!cms+!tso*2);if arg(1)\==1 then return 0;if wordpos(!,'? ?SAMPLES ?AUTHOR ?FLOW')==0 then return 0;!call=']$H';call '$H' !fn !;!call=;return 1
!cal:if symbol('!CALL')\=="VAR" then !call=;return !call
!env:!env='ENVIRONMENT';if !sys=='MSDOS'|!brexx|!r4|!roo then !env='SYSTEM';if !os2 then !env='OS2'!env;!ebcdic=1=='f0'x;return
!fid:parse upper source !sys !fun !fid . 1 . . !fn !ft !fm .;call !sys;if !dos then do;_=lastpos('\',!fn);!fm=left(!fn,_);!fn=substr(!fn,_+1);parse var !fn !fn '.' !ft;end;return word(0 !fn !ft !fm,1+('0'arg(1)))
!rex:parse upper version !ver !vernum !verdate .;!brexx='BY'==!vernum;!kexx='KEXX'==!ver;!pcrexx='REXX/PERSONAL'==!ver|'REXX/PC'==!ver;!r4='REXX-R4'==!ver;!regina='REXX-REGINA'==left(!ver,11);!roo='REXX-ROO'==!ver;call !env;return
!sys:!cms=!sys=='CMS';!os2=!sys=='OS2';!tso=!sys=='TSO'|!sys=='MVS';!vse=!sys=='VSE';!dos=pos('DOS',!sys)\==0|pos('WIN',!sys)\==0|!sys=='CMD';call !rex;return
!var:call !fid;if !kexx then return space(dosenv(arg(1)));return space(value(arg(1),,!env))

!all:!!=!在做什么? 实际上我在查看这段代码时遇到了很多问题,但我想我们会从那里开始,看看是否会对其余部分有所了解。

原始代码示例位于http://rosettacode.org/wiki/Terminal_control/Coloured_text#REXX

1 个答案:

答案 0 :(得分:2)

正如Ryan Vincent的评论所述:

!字符只是您可以在'变量名称中使用的另一个字符。因此,您可以使用i代替for ! for for循环。请参阅documentation并搜索符号。

“{1}}用于”名称“的末尾,表示它是”标签“。见:12 Subroutines and functions。试图理解所显示的“优化代码”将是“有趣的”,但这是可能的。 - 瑞安文森特4月18日19:55