我編寫了下面的代碼,它將提取目錄名和文件名,我將在該提取的文本上使用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