The mrd_move(3mrd) function is an interface to the SCSI Move Medium command. For the robot specified by robot_name, the routine will attempt to move the cartridge in the element specified by the source address and type to that specified by the destination address and type. Element addresses are zero based. On subsystems that support inverting a cartridge during a move, the cartridge_side argument can be used to indicate that the cartridge should be inverted. The robot will be opened and the arguments to the function verified that they are appropriate. Element addresses and types will be checked that they are within the valid range of elements on the robot. The cartridge_side argument will be verified that it is either the value one (1) or two (2). All pointer arguments, except cartridge_name, are checked to verify they are not NULL pointers. The cartridge_name argument can be used to perform cartridge volume tag verification before the move. If the cartridge volume tag at the source doesn't match that specified by this argument, then mrd_move(3mrd) will fail with the status MRD_STATUS_CART_ INVALID. If the cartridge_name argument is a NULL pointer, an empty string or used on a robot without vision support this argument is silently ignored and the volume tag check will not be made. On the TL820 family of libraries, the tape will be moved to the pass-through read station if the source is a Port. If this move fails the status will be appropriate to that of a failed Move Medium. Likely error codes are documented in the Return Values section. After the volume tag check, the destination address is checked in the same way the source was. The same error codes are returned if the destination address is out of range. With the range checks completed the Move Medium command is issued. If successful MRD_ STATUS_SUCCESS is returned. If the command failed, the SCSI error will be mapped to the appropriate MRD_STATUS message. The DLT libraries (TL820 and TL810 families) require the host issue a SCSI Unload command before a cartridge may be removed from the drive. The function mrd_move(3mrd), does not offer this feature. Thus, the calling program must do this itself. On Digital UNIX this may done with the MTOFFL opcode of the MTIOCTOP I/O control.