$ ! START
$ set verify
$ copy sys$input z1.for
      PROGRAM Z1
      INTEGER*4 STAT,L,I
      CHARACTER*80 S
      INTEGER*4 CLI$GET_VALUE
      LOGICAL*4 ODD
      ODD(I)=(I.AND.1).EQ.1
      STAT=CLI$GET_VALUE('P1',S,L)
      IF(ODD(STAT)) THEN
        WRITE(*,*) S(1:L)
      ELSE
        WRITE(*,*) '<none>'
      ENDIF
      END
$
$ fortran z1
$ link z1
$ copy sys$input z1.cld
define verb z1
   image "sys$disk:[]z1.exe"
   parameter p1
$
$ set command z1
$ z1 hello
$ z1
$ copy sys$input z2.for
      PROGRAM Z2
      INTEGER*4 STAT,L,I
      CHARACTER*80 S
      INTEGER*4 CLI$DCL_PARSE,CLI$GET_VALUE
      EXTERNAL Z2CLD
      LOGICAL*4 ODD
      ODD(I)=(I.AND.1).EQ.1
      STAT=LIB$GET_FOREIGN(S,,L,)
      STAT=CLI$DCL_PARSE('Z1 '//S(1:L),Z2CLD,,,)
      STAT=CLI$GET_VALUE('P1',S,L)
      IF(ODD(STAT)) THEN
        WRITE(*,*) S(1:L)
      ELSE
        WRITE(*,*) '<none>'
      ENDIF
      END
$
$ fortran z2
$ copy sys$input z2cld.cld
module z2cld

define verb z1
   parameter p1
$
$ set command/object z2cld
$ link z2+z2cld
$ z2:==$sys$disk:[]z2.exe
$ z2 hello
$ z2
$ set noverify
$ exit
$ ! END
