我编写了下面的代码,它将提取目录名和文件名,我将在该提取的文本上使用purge命令。如何在DCL输出中编辑文本 - OpenVMS脚本
$ sear VAXMANAGERS_ROOT:[PROC]TEMP.LIS LOG/out=VAXMANAGERS_ROOT:[DEV]FVLIM.TXT
$ OPEN IN VAXMANAGERS_ROOT:[DEV]FVLIM.TXT
$ LOOP:
$ READ/END_OF_FILE=ENDIT IN ABCD
$ GOTO LOOP
$ ENDIT:
$ close in
$ ERROR=F$EXTRACT(0,59,ABCD)
$ sh sym ERROR
$ purge/keep=1 'ERROR'
输出如下:
ERROR = "$1$DKC102:[PROD_LIVE.LOG]DP2017_TMP2.LIS;27392 "
问题这里是---每次目录长度变化(长度可以是59或40或一些其它值,但目录和文件名长度在我的系统中不会超过59个字符)。所以在上面的输出中,系统也获取该文件编号的版本号。所以我无法清除文件以及版本号。
%PURGE-E-PURGEVER, version numbers not permitted
任何建议 - 如何从输出中消除版本号?
我不能使用目录的确切长度,如目录长度每次变化.... :(
使用['f $ parse'](http://h41379.www4.hpe.com/doc/83final/9996/9996pro_111.html)提取文件规范的相应部分。或'f $ element'来获取分号前的部分。 (一个版本可以用分号或点分隔,Sneaky)或者'f $ locate'来获得用于'f $ extract'的分号的位置。 – HABO
嗨Habo ..请告诉我如何在这种情况下使用F $ ELEMENT或F $ PARSE ... –
它看起来像'f $ element(0,“;”,ABCD)'应该返回分号。我现在并不需要有一个真正的VMS系统。 IIRC,'写入Sys $输出'f $ element(0,“;”,ABCD)''会显示结果。 – HABO