在FTP / Append之前检查文件是否在OpenVMS中打开

时间:2016-04-06 12:43:24

标签: ftp openvms

我在SAG Natural工作,创建了工作文件。创建它们之后,如果有多个然后ftp它们我想要追加。 append / ftp将独立于创建它们的作业运行。这会产生在当前正在创建文件时尝试ftp / append文件的问题。

在我继续使用逻辑之前,OpenVMS或FTP中是否有任何语法可以检查文件是否打开/锁定?

2 个答案:

答案 0 :(得分:1)

我不会尝试开放写...因为它可能有效,锁定其他人,并更改修订日期/计数。 相反,只需尝试$ OPEN / READ / SHARE = READ FILE ...

如果它打开,您实际上可以使用文件句柄来读取数据,从而防止其他进程在测试和使用之间(重新)打开它。 但它将使用使用小缓冲区的DCL IO。 以下示例显示了这主要是为了娱乐:APPEND文件... 该示例硬编码输出主要是因为我很懒。 您最好先成功关闭文件,然后使用APPEND / LOG。

享受, 海因

$ output = "tmp.tmp"
$ if p1.eqs."" then exit 16
$ create tmp.tmp
$ old = ""
$loop:
$ file_name = f$search(p1)
$ if file_name .eqs. "" .or. file_name .eqs.old then exit
$ old = file_name ! Handle non-wildcarded input
$ close/nolog file
$ open/read/share=read/erro=locked_or_other_error file 'file_name'
$ append file tmp.tmp ! /log
$ write sys$error "Appended ", file_name
$ close/nolog file
$ goto loop
$locked_or_other_error:
$ write sys$error "Found, but could not open file ", file_name
$ goto loop

答案 1 :(得分:0)

SHOW DEVICE /FILE有帮助吗?如果您的文件是打开的,它应该显示在该命令的输出中。