将对象从一个库移动到另一个库

Move Object (MOVOBJ) 命令在库之间移动对象。

将对象从一个库移动到另一个库很有用,因为您使对象暂时不可用,这使您可以将对象的过时版本替换为新版本。 例如,可以创建新的主文件以临时放置在包含旧主文件的库之外的库中。 由于旧主文件中的数据通常会复制到新的主文件,因此在创建新的主文件之前,无法删除旧的主文件。 然后,可以删除旧主文件,并且可以将新的主文件移动到包含旧主文件的库中。

仅当您对该对象具有对象管理权限,对要从中移动该对象的库具有删除和执行权限,以及对要将该对象移动到的库具有添加和读取权限时,才能移动该对象。

可以将对象从临时库 QTEMP 中移出,但不能将对象移入 QTEMP 中。 此外,除非输出队列为空,否则不能将其移动。

移动日志和日志接收器仅限于将这些对象类型移回最初创建它们的库中。 如果已通过 Reclaim Storage (RCLSTG) 命令将日志对象放入 QRCL 中,那么必须将它们移回其原始库以使其可操作。

以下是无法移动的对象列表:

  • 权限列表 (*AUTL)
  • 服务等级描述(*COSD)
  • 集群资源组 (*CRG)
  • 配置列表(*CFGL)
  • 连接列表(*CNNL)
  • 控制器描述 (*CTLD)
  • 数据字典 (*DTADCT)
  • 设备描述 (*DEVD)
  • 显示站消息队列 (*MSGQ)
  • 文档 (*DOC)
  • 编辑描述 (*EDTD)
  • 出口注册 (*EXITRG)
  • 文件夹 (*FLR)
  • 双字节字符集 (DBCS) 字体表 (*IGCTBL)
  • 映像目录 (*IMGCLG)
  • 因特网包交换描述 (*IPXD)
  • 作业调度 (*JOBSCD)
  • 库 (*LIB)
  • 线路描述 (*LIND)
  • 方式描述(*MODD)
  • NetBIOS 描述 (*NTBD)
  • 网络接口描述 (*NWID)
  • 网络服务器配置 (*NWSCFG)
  • 结构化查询语言 (SQL) 包 (*SQLPKG)
  • 结构化查询语言 (SQL) XML 模式存储库 (*SQLXSR)
  • System/36 机器描述 (*S36)
  • 系统历史记录日志 (QHST)
  • 系统操作员消息队列(QSYSOPR)
  • 时区描述 (*TIMZON)
  • 用户定义的 SQL 类型 (*SQLUDT)
  • 用户概要文件 (*USRPRF)

在以下示例中,会将 QGPL 中的文件 (在创建时放置该文件) 移动到订单项库 DISTLIB ,以便将其与其他订单项文件分组在一起。

将对象从一个库移动到另一个库的示例

要移动对象,必须指定目标库 (TOLIB) 以及对象类型 (OBJTYPE):


MOVOBJ  OBJ(QGPL/ORDFILL)  OBJTYPE(*FILE)  TOLIB(DISTLIB)

移动对象时,应注意不要移动其他对象所依赖的对象。 例如, CL 过程可能依赖于该过程中使用的命令的命令定义,这些命令在运行时与在模块创建时位于同一库中。 在编译时和运行时,如果指定了 *LIBL ,那么可在指定的库或库列表中的库中找到命令定义。 如果指定了库名,那么命令定义在运行时必须与在编译时在同一库中。 如果指定了 *LIBL ,那么只要将命令定义移至库列表中的库,就可以在编译时和程序运行时之间移动这些命令定义。 类似地,您编写的任何应用程序都可能依赖于特定库中的特定对象。

引用另一个对象的对象可能依赖于该对象的位置 (即使可以对该对象的位置指定 *LIBL)。 因此,如果移动对象,那么应该在其他对象中更改对该对象的任何引用。 以下列出了引用其他对象的对象的示例:

  • 子系统描述指的是作业队列,类,消息队列和程序。
  • 命令定义指的是包含 REXX 过程的程序,消息文件,帮助面板组和源文件。
  • 设备文件引用输出队列。
  • 设备描述引用转换表。
  • 作业描述指的是作业队列和输出队列。
  • 数据库文件是指其他数据库文件。
  • 逻辑文件是指物理文件或格式选择。
  • 用户概要文件指的是程序,菜单,作业描述,消息队列和输出队列。
  • CL 程序是指显示文件,数据区和其他程序。
  • 显示文件是指数据库文件。
  • 打印机文件引用输出队列。
注: 从系统库 QSYS 中移动对象时应小心。 这些对象是系统有效执行所必需的,并且系统必须能够找到这些对象。 对于通用库 QGPL 中的某些对象也是如此,尤其是对于作业和输出队列。

Move Object (MOVOBJ) 命令一次仅移动一个对象。