路径名 (*PNAME)

路径名 是可用于在集成文件系统中查找对象的字符串。

该字符串可以由一个或多个元素组成,每个元素以斜杠 (/) 分隔。 每个元素通常是一个目录或等价元素,但最后一个元素除外,后者可以是一个目录,另一个对象 (例如文件) 或要查找的一个或多个对象的通用表示。

注: 某些 CL 命令还允许通过自动将反斜杠 (\) 转换为斜杠 (/) 来使用反斜杠 (\) 作为分隔符。 但是,某些其他 CL 命令对待反斜杠 (\) 的方式与对待任何其他字符的方式不同。 因此,应谨慎使用反斜杠 (\) 分隔符。

当/和 \ 字符用作分隔符时,不能在路径名的各个组成部分中使用/和 \ 字符和空值。 可以或不能将名称更改为大写,这取决于包含该对象的文件系统是否区分大小写以及是否正在创建或搜索该对象。 如果参数定义为 CASE(*MONO) (缺省值) ,那么命令分析器会将未括在单引号中的任何值更改为大写。

路径名开头的分隔符 (例如,/) 表示路径从最顶端的目录开始,即根 (/) 目录。 如果路径名未以分隔符开头,那么假定路径从输入命令的用户的当前目录开始。

路径名必须以当前对作业有效的 CCSID 表示。 如果作业的 CCSID 是 65535 ,那么路径名必须以作业的缺省 CCSID 表示。 程序中的硬编码路径名以 CCSID 37 编码。 因此,在传递到命令之前,应将路径名转换为作业 CCSID。 CL 命令上路径名字符串的最大长度为 5000 个字符。

对 QSYS.LIB 文件系统,组件名称的格式必须为 name.object-type; 例如:


'/QSYS.LIB/PAY.LIB/TAX.FILE'

如果对象位于独立 ASP QSYS.LIB 文件系统,名称的格式必须为:


'/asp-name/QSYS.LIB/PAY.LIB/TAX.FILE'

其中 asp-name 是独立 ASP 的名称。

如果路径名包含特殊字符,那么在命令行上输入路径名时必须用单引号 (') 括起。 当在屏幕上输入路径名时,这些标记是可选的。 如果路径名包含任何括在引号内的字符串或特殊字符,那么必须包含括起来的 "标记"。 以下是使用特殊字符的规则:

  • 在路径名开头后跟分隔符 (例如/) 的波浪号 (~) 字符表示路径从输入命令的用户的主目录开始。
  • 后跟用户名的波浪号 (~) 字符以及路径名开头的分隔符 (例如/) 表示路径从用户名所标识的用户的主目录开始。
  • 在某些命令中,可以在路径名的最后一个组件中使用星号 (*) 或问号 (?) 来搜索名称模式。 * 指示系统搜索在 * 字符位置中具有任意数目的字符的名称。 ? 指示系统搜索在? 的位置具有单个字符的名称 字符。
  • 为避免与 IBM i 特殊值混淆,路径名不能以单个星号 (*) 字符开头。 要在路径名开头执行模式匹配,请使用两个星号 (**)。
    注: 这仅适用于在星号之前没有其他字符的相对路径名。
  • 路径名必须括在单引号 (') 和引号 (") 中 如果在组件名称中使用了下列任何字符:
    • 星号(*)
      注: 为避免与 IBM i 特殊值混淆,请勿以单个星号 (*) 字符开头路径名。
    • 问号(?)
    • 单引号 (')
    • 引号(")
    • 波浪号 (~) ,如果用作路径名的第一个组件名称中的第一个字符 (如果在任何其他位置使用,那么波浪号将解释为仅另一个字符)
    注: 不建议使用先前字符作为路径名的第一个组件名称中的第一个字符,因为命令字符串中字符的含义可能会混淆,并且更有可能错误地输入命令字符串。
  • 请勿在路径名中使用冒号 (:)。 它在系统内具有特殊的含义。
  • 对命令和关联用户屏幕的处理支持无法将十六进制 40 以下的代码点识别为可在命令字符串或屏幕上使用的字符。 如果使用这些代码点,那么必须以十六进制表示法输入这些代码点,例如以下示例:
    
    crtdir dir(X'02')
    

    因此,建议不要在路径名中使用十六进制 40 以下的代码点。 此限制仅适用于命令和关联的显示,而不适用于 API。 此外,路径名中不允许值十六进制 00。