2

是什么!和:在 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

4

1 回答 1

3

正如瑞安文森特在评论中回答的那样:

!字符只是您可以在“变量名”中使用的另一个字符。因此,i您可以使用!. 请参阅文档并搜索符号。

用于“名称”的:末尾,表示它是“标签”。参见: 12.子程序和函数。试图理解“显示的优化代码”将是“有趣的”,但也是可能的。– 瑞安文森特 4 月 18 日 19:55

于 2015-04-28T16:52:37.367 回答