Index: sr_linux/gtm_env_sp.mk
===================================================================
--- sr_linux/gtm_env_sp.mk	(revision 6)
+++ sr_linux/gtm_env_sp.mk	(revision 45)
@@ -16,6 +16,19 @@
 #
 ##########################################################################################
 
+# be careful. if we are going to embed perl (when gtm_perl is set)
+# we change a lot.
+# we also use the compiler that was used when generating perl...
+# XXX this does not belong here. it's a generic stuff for all systems!
+ifdef gtm_perl
+gt_cc_compiler:=$(shell $(gtm_perl) -MConfig -e 'print $$Config{cc}')
+gt_cc_options_common:=-I- $(shell $(gtm_perl) -MExtUtils::Embed -eccopts) -DWANT_GTM_PERL
+gt_cc_option_I=
+ifeq ($(CURRENT_BUILDTYPE), pro)
+   gt_cc_options_common:=$(gt_cc_options_common) $(shell $(gtm_perl) -MConfig -e'print $$Config{optimize}')
+endif
+endif
+
 # GNU assembler options
 gt_as_assembler=as
 # to avoid naming files with .S
@@ -28,10 +41,10 @@
 gt_as_src_suffix=.s
 
 # C compiler options
-gt_cc_compiler=gcc
+gt_cc_compiler?=gcc-2.95
 
 # Do not lookup the source directory before include directories specified by -I.
-gt_cc_option_I=-I-
+gt_cc_option_I?=-I-
 gt_cc_shl_fpic=-fPIC			# generate Position Independent Code.
 
 #	gt_cc_options_common=-c -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64
@@ -41,7 +54,7 @@
 #	   _XOPEN_SOURCE=500 should probably define POSIX 199309 and/or
 #		POSIX 199506 but doesnt so...
 # Linux gcc optimizations cause problems so do without them for now.
-gt_cc_options_common=$(gt_cc_shl_fpic) -c -ansi -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -fsigned-char -Wimplicit -Wmissing-prototypes
+gt_cc_options_common:=$(gt_cc_options_common) $(gt_cc_shl_fpic) -c -ansi -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -fsigned-char -Wimplicit -Wmissing-prototypes
 ifeq ($(strip $(patsubst 2.2.%, 2.2, $(shell uname -r))), 2.2)
 gt_cc_options_common:=$(gt_cc_options_common) -DNeedInAddrPort
 endif
@@ -53,7 +66,13 @@
 gt_cc_option_debug=-g
 gt_cc_shl_options=-c $(gt_cc_shl_fpic)
 
+ifdef gtm_perl
+perllibs=$(shell $(gtm_perl) -MExtUtils::Embed -eldopts)
+else
+perllibs=""
+endif
 
+
 # Linker definitions:
 gt_ld_linker=$(gt_cc_compiler)
 gt_ld_options_common=-Wl,-M 		# to generate link map onto standard output
@@ -61,9 +80,9 @@
 gt_ld_options_dbg=-g
 gt_ld_options_pro=
 ifeq ($(MACHTYPE), "s390")
-gt_ld_syslibs=-lncurses -lm -ldl
+gt_ld_syslibs=$(perllibs) -lncurses -lm -ldl
 else
-gt_ld_syslibs=-lcurses -lm -ldl
+gt_ld_syslibs=$(perllibs) -lcurses -lm -ldl
 endif
 # -lrt for async I/O in mupip recover/rollback
 gt_ld_aio_syslib=-lrt
@@ -93,7 +112,7 @@
 #
 define gt-dep
 	@echo $*.o $*.d : '\' > $@; \
-	echo $(notdir $(filter-out /usr/include% /usr/lib/% /usr/local/include% /usr/local/lib/%, $(filter %.c %.h,$(shell $(gt_cc_compiler) -M $(gt_cc_options) $(gt_cc_dep_option) $<)))) >> $@
+	echo $(notdir $(filter-out /usr/gtm-perl% /usr/include% /usr/lib/% /usr/local/include% /usr/local/lib/%, $(filter %.c %.h,$(shell $(gt_cc_compiler) -M $(gt_cc_options) $(gt_cc_dep_option) $<)))) >> $@
 endef
 define gt-export
 	@echo "VERSION {" >$@
Index: sr_perl/ioperlAV_open.c
===================================================================
--- sr_perl/ioperlAV_open.c	(revision 0)
+++ sr_perl/ioperlAV_open.c	(revision 45)
@@ -0,0 +1,197 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+
+#include "gtm_string.h"
+
+#include "copy.h"
+#include "io.h"
+#include "iombdef.h"
+#include "io_params.h"
+#include "stringpool.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+LITREF unsigned char io_params_size[];
+
+void ioperlAV_prepare_iconv_options(d_perlAV_struct *pav, int len, const char *p)
+{
+  const char *q, *sep, *last;
+  int i;
+
+  last = &p[len - 1];
+  /* disable iconv on error */
+  pav->flags &= ~IOPERLAV_ICONV;
+  if(len < 3) {
+    /* means turn it off */
+    return;
+  }
+  q = p;
+  i = len;
+  sep = 0;
+  while(i--) {
+    if(*q == ',') {
+      if(sep) {
+        /* multiple "," in string */
+        return;
+      }
+      sep = q;
+      if(sep == p || last - sep < 2) {
+        /* zero length internal/external charset */
+        return;
+      }
+    }
+    q++;
+  }
+  if(!sep)
+    return;
+  if(pav->internal_charset) {
+    free(pav->internal_charset);
+  }
+  pav->internal_charset = malloc(sep - p + 1);
+  memcpy(pav->internal_charset, p, sep - p);
+  pav->internal_charset[sep - p] = 0;
+  sep++;
+  if(pav->external_charset) {
+    free(pav->external_charset);
+  }
+  pav->external_charset = malloc(last - sep + 2);
+  memcpy(pav->external_charset, sep, last - sep + 1);
+  pav->external_charset[last - sep + 1] = 0;
+  pav->flags |= IOPERLAV_ICONV; 
+}
+
+void ioperlAV_set_iconv_options(d_perlAV_struct *pav)
+{
+    iconv_t i;
+
+    if(pav->to_m) {
+      iconv_close(pav->to_m);
+      pav->to_m = 0;
+    }
+    if(pav->from_m) {
+      iconv_close(pav->from_m);
+      pav->from_m = 0;
+    }
+    if(!(pav->flags & IOPERLAV_ICONV)) {
+      if(pav->internal_charset) {
+        free(pav->internal_charset);
+        pav->internal_charset = 0;
+      }
+      if(pav->external_charset) {
+        free(pav->external_charset);
+        pav->external_charset = 0;
+      }
+      return;
+    }
+#if 0 /* XXX */
+    fprintf(stderr, "\ntrying iconv, internal charset = '%s', external charset = '%s'\n", pav->internal_charset, pav->external_charset);
+#endif
+    i = iconv_open(pav->internal_charset, pav->external_charset);
+    if(i == (iconv_t) -1) {
+#if 0 /* XXX */
+      fprintf(stderr, "setting up iconv failed, ignoring iconv\n");
+#endif
+      pav->flags &= ~IOPERLAV_ICONV;
+      return ioperlAV_set_iconv_options(pav);
+    }
+    pav->to_m = i;
+    if(!(pav->flags & IOPERLAV_RDONLY)) {
+       i = iconv_open(pav->internal_charset, pav->external_charset);
+       if(i == (iconv_t) -1) {
+#if 0 /* XXX */
+         fprintf(stderr, "setting up iconv failed, ignoring iconv\n");
+#endif
+         pav->flags &= ~IOPERLAV_ICONV;
+         return ioperlAV_set_iconv_options(pav);
+       }
+       pav->from_m = i;
+    }
+}
+
+
+short ioperlAV_open(io_log_name *dev_name, mval *pp, int fd, mval *mspace, int4 timeout)
+{
+	unsigned char	ch;
+	io_desc		*iod;
+ 	d_perlAV_struct	*pav;
+	int		p_offset;
+        AV              *av;
+
+	p_offset = 0;
+	iod = dev_name->iod;
+	assert((params) *(pp->str.addr) < (unsigned char)n_iops);
+	assert(iod != 0);
+	assert(iod->state >= 0 && iod->state < n_io_dev_states);
+	assert(iod->type == perlAV);
+        pav = (d_perlAV_struct *)iod->dev_sp;
+        /* some kind of sanity checking */
+        assert(pav != 0);
+        assert(pav->avname != 0);
+        assert(fd == PERL_RESERVED_FD);
+
+	if (iod->state != dev_open)
+	{
+                assert(pav->av == 0);
+		while ((ch = *(pp->str.addr + p_offset++)) != iop_eol)
+		{
+			switch(ch)
+			{
+			case iop_exception:
+				iod->error_handler.len = *(pp->str.addr + p_offset);
+				iod->error_handler.addr = (char *)(pp->str.addr + p_offset + 1);
+				s2pool(&iod->error_handler);
+				break;
+                        case iop_iconv:
+                                ioperlAV_prepare_iconv_options(pav, *(pp->str.addr + p_offset), (char *)(pp->str.addr + p_offset + 1));
+                                break;
+                        case iop_readonly:
+                                pav->flags |= IOPERLAV_RDONLY;
+                                break;
+                        case iop_noreadonly:
+                                pav->flags &= ~IOPERLAV_RDONLY;
+                                break;
+                        case iop_zpop:
+                                pav->flags |= IOPERLAV_POP;
+                                break;
+                        case iop_zpush:
+                                pav->flags &= ~IOPERLAV_UNSHIFT;
+                                break;
+                        case iop_zshift:
+                                pav->flags &= ~IOPERLAV_POP;
+                                break;
+                        case iop_zunshift:
+                                pav->flags |= IOPERLAV_UNSHIFT;
+                                break;
+		default:
+				break;
+			}
+		}
+                /* well, open the array. If it fails
+                 * release pav, too, man this I/O design is somewhat borken
+                 */
+                GTM_PERL_INIT;
+                av = get_av(pav->avname, !(pav->flags & IOPERLAV_RDONLY));
+                if(!av) {
+                  free(pav->avname);
+                  pav->avname = 0;
+                  free(pav);
+                  iod->dev_sp = 0;
+                  iod->state = dev_never_opened;
+                  return FALSE;
+                }
+                pav->av = av;
+		iod->state = dev_open;
+                ioperlAV_set_iconv_options(pav);
+	}
+	return TRUE;
+}
Index: sr_perl/gtm_perl_callin.xs
===================================================================
--- sr_perl/gtm_perl_callin.xs	(revision 0)
+++ sr_perl/gtm_perl_callin.xs	(revision 45)
@@ -0,0 +1,116 @@
+/*
+ * this is the call-in part - oesi
+ * (c) 2004 by St.Traby <stefan@hello-penguin.com>
+ * (c) 2004 by KW-Computer Ges.m.b.H., Graz, Austria.
+ */
+
+#define IN_XS_COMPILE 1
+
+#include "mdef.h"
+#include "mvalconv.h"
+#include "underr.h"
+#include "srcline.h"
+#include "rtnhdr.h"
+#include "indir_enum.h"
+#include "gtmxc_types.h"
+#include "gtm_op.h"
+#include "svnames.h" /* we choosed to play fair - oesi :) */
+#include "gtm_perl.h"
+#include "XSUB.h"
+#include "mlist_transfer.h" /* ugly */
+
+GBLDEF bool  perl_is_master = 0; /* if Perl started  GT.M */
+GBLDEF bool  gtm_perl_initialized = 0;
+
+GBLREF int   dollar_truth; /* XXX */
+
+MODULE = GTM     PACKAGE = GTM
+
+PROTOTYPES: ENABLE
+   INCLUDE: gen_sv_access.xs
+   INCLUDE: gen_op_access.xs
+
+BOOT:
+      { gtm_perl_initialized = 1;
+        if(!gtm_startup_active)
+          perl_is_master = 1;
+      }
+
+
+IV
+unload_gtm()
+  CODE:
+    RETVAL = 0;
+    if(gtm_startup_active && perl_is_master) {
+       RETVAL = gtm_exit();
+    }
+  OUTPUT:
+    RETVAL
+
+
+mstr *
+get_src_line(routine, label, offset = 0)
+     mval *routine;
+     mval *label;
+     int offset;
+PREINIT:
+     int rc;
+     mstr *ret;
+  CODE:
+    GTM_GTM_INIT;
+    rc = get_src_line(routine, label, offset, &ret);
+    if(rc & ~4)
+       XSRETURN_UNDEF;
+    RETVAL = ret;
+  OUTPUT:
+    RETVAL
+
+void
+xecute(SV *sv)
+  PREINIT:
+        mval m;
+CODE:
+        GTM_GTM_INIT;
+        SV2mstr(sv,&m.str);
+        m.mvtype = MV_STR;
+        op_commarg(&m, indir_linetail);
+
+    
+void
+tstart(serial, tid = &PL_sv_undef)
+  int serial
+  SV  *tid;  
+PROTOTYPE: $;$
+  PREINIT:
+    mval m;
+  CODE:
+    GTM_GTM_INIT;
+    m.mvtype = MV_STR;
+    m.str.addr = SvPV(tid, m.str.len);
+    s2pool(&m.str);
+    op_tstart(dollar_truth, !!serial, &m, 0);
+  OUTPUT:
+
+void
+trestart(level = 0)
+    int level;
+  CODE:
+    GTM_GTM_INIT;
+    op_trestart(level);
+  OUTPUT:
+
+ 
+void
+tcommit()
+  CODE:
+    GTM_GTM_INIT;
+    op_tcommit();
+  OUTPUT:
+
+void
+trollback(levels = 0)
+    int levels
+  CODE:
+    op_trollback(levels);
+  OUTPUT:
+
Index: sr_perl/ioperlAVdef.h
===================================================================
--- sr_perl/ioperlAVdef.h	(revision 0)
+++ sr_perl/ioperlAVdef.h	(revision 45)
@@ -0,0 +1,46 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+#ifdef WANT_GTM_PERL
+# ifndef __d_perlAV_structDEF_H
+#  define __d_perlAV_structDEF_H 41+1
+#  include "gtm_perl.h"
+
+#  define PERL_AV_NAMESPACE "PERLARRAY"
+#  define PERL_RESERVED_FD 1984
+
+/* *************************************************************** */
+/* ***********	structure for the perl array writer  ************* */
+/* *************************************************************** */
+
+typedef enum
+{
+   IOPERLAV_RDONLY = 0x1,      /* read-only bit */
+   IOPERLAV_POP    = 0x2,      /* if set we use pop instead of unshift on read */
+   IOPERLAV_UNSHIFT = 0x4,     /* if set we use unshift instead of push on write */
+   IOPERLAV_ICONV  = 0x8       /* use iconv? */
+} ioperlAV_flags_t;
+
+typedef struct
+{
+        char *avname; /* the name of the array we write excluding '@'. */
+        AV *av;       /* the pointer to the perl array, only set at open. */
+        ioperlAV_flags_t flags;
+        iconv_t to_m;   /* iconv conversion on read */
+        iconv_t from_m; /* iconv conversion on write */
+        char *internal_charset;
+        char *external_charset;
+} d_perlAV_struct;
+
+void ioperlAV_prepare_iconv_options(d_perlAV_struct *pav, int len, const char *p);
+void ioperlAV_set_iconv_options(d_perlAV_struct *pav);
+#  define ioperlAV_iconv_destroy(PAV) do { (PAV)->flags &= ~IOPERLAV_ICONV; ioperlAV_set_iconv_options(PAV); } while(0)
+# endif
+#endif
Index: sr_perl/scripts/gdbinit
===================================================================
--- sr_perl/scripts/gdbinit	(revision 0)
+++ sr_perl/scripts/gdbinit	(revision 45)
@@ -0,0 +1,14 @@
+# 
+# try something like 'gdb --command gdbinit'
+#
+set height 99999
+file ../../dbg/mumps
+set args -direct
+set environment gtm_dist ../../dbg
+# do this to get the symbols of gtmperl.so in.
+b 91
+r
+b ioperlAV_open
+# b m_xecute
+b op_commarg
+c
Index: sr_perl/scripts/coolprimes.pl
===================================================================
--- sr_perl/scripts/coolprimes.pl	(revision 0)
+++ sr_perl/scripts/coolprimes.pl	(revision 45)
@@ -0,0 +1,21 @@
+#! /usr/gtm-perl/bin/perl
+
+use GTM::GlobalTie;
+
+my $limit = $ARGV[0] || 1000;
+
+tie %primes, GTM::GlobalTie, "primes";
+
+%primes = ();
+
+$primes{$_} = 1 for(2..$limit);
+
+for my $i (keys %primes) {
+   for (my $j = $i*$i; $j <= $limit; $j += $i)  {
+       delete $primes{$j};
+   }
+}
+my $count = scalar keys %primes;
+%primes = ();
+print "$count Primes up to $limit\n";
+

Property changes on: sr_perl/scripts/coolprimes.pl
___________________________________________________________________
Name: svn:executable
   + *

Index: sr_perl/scripts/build-dbg-perl
===================================================================
--- sr_perl/scripts/build-dbg-perl	(revision 0)
+++ sr_perl/scripts/build-dbg-perl	(revision 45)
@@ -0,0 +1,44 @@
+#! /bin/bash
+#
+# I use this within vim - oesi
+# build-dbg-perl [pro|dbg] [perl|noperl]
+
+buildtypes=dbg
+x=perl
+
+if [ -z "$gtm_perl" ] ; then
+        gtm_perl=/usr/gtm-perl/bin/perl
+        export gtm_perl
+fi
+if [ -z "$gtm_curpro" ] ; then
+        gtm_curpro=/usr/local/gtm
+        export gtm_curpro
+fi
+#
+# walking down the directory-tree
+#
+for((i=0;i<20;i++)) ; do
+  if [ \! -d ./sr_unix ] ; then cd ..; fi
+done
+if [ \! -d ./sr_unix ] ; then
+   echo "can't find root of GT.M source dist" 1>&2
+   exit 1
+fi
+if [ "$1" = pro -o "$1" = dbg ] ; then
+        buildtypes="$1" ;shift
+fi
+
+if [ "$1" = perl -o "$1" = noperl ] ; then
+        x="$1" ; shift
+        if [ "$x" = noperl ] ; then
+                unset gtm_perl
+        fi
+fi
+echo "starting build, type=$buildtypes $x"
+exec make -f sr_unix/comlist.mk \
+             -I./sr_unix \
+             -I./sr_linux \
+             buildtypes=$buildtypes \
+             incremental=1 \
+             verbose=1 "$@" 2>&1|tee World-$buildtypes.log
+

Property changes on: sr_perl/scripts/build-dbg-perl
___________________________________________________________________
Name: svn:executable
   + *

Index: sr_perl/scripts/primes.pl
===================================================================
--- sr_perl/scripts/primes.pl	(revision 0)
+++ sr_perl/scripts/primes.pl	(revision 45)
@@ -0,0 +1,22 @@
+#! /usr/gtm-perl/bin/perl
+
+# primes in GT.M-Perl (Perl side)
+
+use GTM ':global';
+
+my $limit = $ARGV[0] || 1000;
+
+g_kill "primes";
+g_set "primes", $_, 1 for(2..$limit);
+
+for (my $i = 2; $i; $i = g_order "primes", $i) {
+   for (my $j = $i*$i; $j <= $limit; $j += $i)  {
+        g_kill "primes", $j;
+   }
+}
+my ($count,$o) = (0,"");
+$count++ while($o = g_order "primes", $o);
+g_kill "primes";
+print "$count Primes up to $limit\n";
+
+

Property changes on: sr_perl/scripts/primes.pl
___________________________________________________________________
Name: svn:executable
   + *

Index: sr_perl/scripts/primes.m
===================================================================
--- sr_perl/scripts/primes.m	(revision 0)
+++ sr_perl/scripts/primes.m	(revision 45)
@@ -0,0 +1,11 @@
+ ; primes in GT.M-Perl (GT.M side)
+        Set limit=+$ZCMDLINE Set:limit=0 limit=1000
+        Kill ^primes
+        For i=2:1:limit Set ^primes(i)=1
+        Set i=""
+        For  Set i=$Order(^primes(i)) Quit:i=""  For j=i*i:i:limit K ^primes(j)
+        Set count=0,o=""
+        For  S o=$Order(^primes(o)) Quit:o=""  Set count=count+1
+        K ^primes
+        W count_" Primes up to "_limit,!
+        Q
Index: sr_perl/ioperlAV_rdone.c
===================================================================
--- sr_perl/ioperlAV_rdone.c	(revision 0)
+++ sr_perl/ioperlAV_rdone.c	(revision 45)
@@ -0,0 +1,52 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+#include "io_params.h"
+#include "io.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+error_def(ERR_IOEOF);
+
+short ioperlAV_rdone(mint *v,int4 t)
+{
+  GBLREF io_pair io_curr_device;
+  io_desc *io_ptr;
+  d_perlAV_struct *pav;
+  SV *sv;
+  char *p;
+  STRLEN len;
+
+  io_ptr = io_curr_device.in;
+  assert (io_ptr->state == dev_open);
+  pav = (d_perlAV_struct *) io_curr_device.out->dev_sp;
+  assert(pav != 0);
+  if(av_len(pav->av) == -1 || !(sv = (pav->flags & IOPERLAV_POP ? av_pop : av_shift)(pav->av))) {
+    /* eof */
+    io_ptr->dollar.zeof = TRUE;
+    *v = -1;
+    if(io_ptr->error_handler.len > 0) {
+      rts_error(VARLSTCNT(1) ERR_IOEOF);
+    }
+    return FALSE;
+  }
+  p = SvPV(sv, len);  
+  if(!len)
+    goto bad;
+  *v = (int) p[0];
+  io_ptr->dollar.x++;
+  return TRUE;
+
+bad:
+    *v = -1;
+    return FALSE;
+}
Index: sr_perl/f_zperleval.c
===================================================================
--- sr_perl/f_zperleval.c	(revision 0)
+++ sr_perl/f_zperleval.c	(revision 45)
@@ -0,0 +1,18 @@
+
+#include "mdef.h"
+#include "compiler.h"
+#include "toktyp.h"
+
+GBLREF char window_token;
+
+int f_zperleval(oprtype *a, opctype op)
+{
+	triple	*r;
+
+	r = maketriple(op);
+	if (!strexpr(&(r->operand[0])))
+		return FALSE;
+	ins_triple(r);
+	*a = put_tref(r);
+	return TRUE;
+}
Index: sr_perl/op_fnzperlcall.c
===================================================================
--- sr_perl/op_fnzperlcall.c	(revision 0)
+++ sr_perl/op_fnzperlcall.c	(revision 45)
@@ -0,0 +1,83 @@
+#include "mdef.h"
+#include "stringpool.h"
+#include "gtm_op.h"
+#include "gtm_perl.h"
+
+GBLREF spdesc stringpool;
+
+/* we don't need this - will be removed later.
+ */
+#define PERROR_BUF_SIZE 4041
+static char perl_errorbuf[PERROR_BUF_SIZE+1];
+
+error_def(ERR_PERLDIE);
+
+/*
+ * -----------------------------------------------
+ * op_fnzperlcall()
+ * Calls a Perl function
+ * -----------------------------------------------
+ */
+
+void op_fnzperlcall(int argc, ...)
+{
+        STRLEN len;
+        int rc;
+        va_list va;
+        mval *dst, *src;
+        int funcargs;
+        int i, fl, retcnt;
+        SV *func;
+
+        GTM_PERL_INIT;
+
+        va_start(va, argc);
+        dst = va_arg(va, mval *);
+        src = va_arg(va, mval *);
+        funcargs = argc - 2;
+        MV_FORCE_STR(src);
+        mstr2SV(&src->str, func);
+        {
+         dSP;
+         ENTER;
+         SAVETMPS;
+         PUSHMARK(SP);
+         if(funcargs) {
+           EXTEND (SP, funcargs);
+           for(i = 0; i < funcargs; i++) {
+             mval *mv = va_arg(va, mval *);
+             SV *sv;
+             mval2SV(mv, sv);
+             PUSHs (sv_2mortal(sv));
+           }
+           fl = G_SCALAR | G_EVAL;
+         } else {
+           fl = G_SCALAR | G_EVAL | G_NOARGS;
+         }
+         PUTBACK;
+         retcnt = call_sv((func), fl);
+         SPAGAIN;
+         if(SvTRUE(ERRSV)) {
+                STRLEN err_len;
+                char *p;
+                p = SvPV(ERRSV, err_len);
+                if(err_len > PERROR_BUF_SIZE) {
+                        err_len = PERROR_BUF_SIZE;
+                }
+                memcpy(perl_errorbuf, p, err_len);
+                perl_errorbuf[err_len] = 0;
+                POPs;
+                PUTBACK;
+                FREETMPS;
+                LEAVE;
+                rts_error(VARLSTCNT(4) ERR_PERLDIE, 2, err_len, perl_errorbuf);
+         } else {
+                SV *ret = POPs;
+                SV2mval(ret, dst);
+                PUTBACK;
+                FREETMPS;
+                LEAVE;
+         }
+        }
+	return;
+}
Index: sr_perl/ioperlAV_read.c
===================================================================
--- sr_perl/ioperlAV_read.c	(revision 0)
+++ sr_perl/ioperlAV_read.c	(revision 45)
@@ -0,0 +1,55 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+#include "mdef.h"
+
+#include "gtm_string.h"
+
+#include "io.h"
+#include "stringpool.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+GBLREF spdesc 		stringpool;
+
+error_def(ERR_IOEOF);
+
+short ioperlAV_read(mval *v,int4 t)
+{
+   GBLREF io_pair io_curr_device;
+   io_desc *io_ptr;
+   d_perlAV_struct *pav;
+   SV *sv;
+
+	assert(stringpool.free >= stringpool.base);
+	assert(stringpool.free <= stringpool.top);
+	io_ptr = io_curr_device.in;
+	pav = (d_perlAV_struct *) io_ptr->dev_sp;
+        assert(pav != 0);
+        if(av_len(pav->av) == -1 || !(sv = (pav->flags & IOPERLAV_POP ? av_pop : av_shift)(pav->av))) {
+          /* eof */
+          io_ptr->dollar.zeof = TRUE;
+          v->str.len = -0;
+          if(io_ptr->error_handler.len > 0) {
+            rts_error(VARLSTCNT(1) ERR_IOEOF);
+          }
+          return FALSE;
+        }
+        /* we pass undef as empty string. */
+        if(sv == &PL_sv_undef) {
+           v->mvtype = MV_STR;
+           v->str.len = 0;
+        } else {
+           SV2mval(sv, v);
+        }
+	io_ptr->dollar.x = 0;
+	io_ptr->dollar.y++;
+	return TRUE;
+}
Index: sr_perl/gen_mlist_transfer.pl
===================================================================
--- sr_perl/gen_mlist_transfer.pl	(revision 0)
+++ sr_perl/gen_mlist_transfer.pl	(revision 45)
@@ -0,0 +1,26 @@
+#! /usr/bin/perl
+
+my $head = <<"EOH";
+#ifdef IN_XS_COMPILE
+#define MLIST_TRANSFER(FUNC, M, CNT) \\
+        switch(CNT) { \\
+EOH
+my $foot = <<"EOF";
+\t\tdefault: \\
+\t\t\tcroak("Illegal number of arguments for global setup"); \\
+\t\t\tbreak; \\
+\t}
+#endif /* IN_XS_COMPILE */
+EOF
+
+print $head;
+for my $i (1..128) {
+   printf "\t\tcase %3d: \\\n\t\t\tFUNC(%3d", $i, $i;
+   for my $j (0..$i-1) {
+      print ", &M[$j]";
+   }
+   print "); \\\n\t\t\tbreak;\\\n";
+
+}
+print $foot;
+
Index: sr_perl/op_fnzperltype.c
===================================================================
--- sr_perl/op_fnzperltype.c	(revision 0)
+++ sr_perl/op_fnzperltype.c	(revision 45)
@@ -0,0 +1,59 @@
+/****************************************************************
+ *      Copyright 2001 Sanchez Computer Associates, Inc.        *
+ *      Copyright 2004 KW-Computer Ges.m.b.H.                   *
+ *      This source code contains the intellectual property     *
+ *      of its copyright holder(s), and is made available       *
+ *      under a license.  If you do not know the terms of       *
+ *      the license, please stop and do not read further.       *
+ *                                                              *
+ ****************************************************************/
+
+#include "mdef.h"
+#include "stringpool.h"
+#include "gtm_op.h"
+#include "gtm_perl.h"
+
+GBLREF spdesc stringpool;
+
+/*
+ * -----------------------------------------------
+ * op_fnzperltype()
+ * returns the type of a reference within a mval
+ *
+ * Arguments:
+ *	src	- Pointer to Source string mval (that may contain a SVRV)
+ *	dst	- Pointer to return value of perl
+ *
+ * Return:
+ *	none
+ * -----------------------------------------------
+ */
+
+static /* const */ char its_dead_jim[] = "DEAD PERL REFERENCE (It's dead Jim.)";
+
+void op_fnzperltype(mval *src, mval *dst)
+{
+        SV *sv, *rv;
+        MV_FORCE_DEFINED(src); /* needed ?? */
+        MV_FORCE_STR(src);
+        dst->mvtype = MV_STR;
+        dst->str.len = 0;
+        if(src->str.len == sizeof(mstr_sv) && *(unsigned long *)src->str.addr == MSTR_SV_MAGIC) {
+                SV *sv = mstrGetSV(&src->str);
+                if(!sv || !SvROK(sv)) {
+                        dst->str.len = sizeof(its_dead_jim);
+                        dst->str.addr = its_dead_jim;
+                        s2pool(&src->str);
+                } else {
+                        STRLEN len;
+                        rv = SvRV(sv);
+                        GTM_PERL_INIT;
+                        dst->str.addr = sv_reftype(pTHX_ rv, 1);
+                        len = strlen(dst->str.addr);
+                        LENGTHCHECK(len);
+                        dst->str.len = len;
+                        s2pool(&dst->str);
+                }
+        }
+	return;
+}
Index: sr_perl/gen_op_access.pl
===================================================================
--- sr_perl/gen_op_access.pl	(revision 0)
+++ sr_perl/gen_op_access.pl	(revision 45)
@@ -0,0 +1,81 @@
+#! /usr/bin/perl
+# this script (hack) is used to generate XS-Functions
+# for accessing opcodes directly out of perl
+# (c) 2004 by St.Traby <stefan@hello-penguin.com>
+# (c) 2004 by KW-Computer Ges.m.b.H., Graz, Austria
+
+my $items = 1 if @ARGV;
+$items ||= 0;
+
+
+my $basedir = "..";
+
+sub get($)
+{
+  local $/;
+  open my $fh, "<", "$basedir/$_[0]" or die "open $_[0]: $!";
+  <$fh>;
+}
+my $op_h = get "sr_port/gtm_op.h";
+
+my %skip = map { $_ , 1 } (qw(op_gvo2 op_gvnext op_gvrectarg op_gvsavtarg));
+
+sub xsname_of($) {
+   local $_ = shift;
+   s/^op(?:_gv)?/g_/g;
+   s/put/set/g;
+   s/zwithdraw/xkill/g;
+   s/_zprevious/rorder/g;
+   $_
+}
+
+my @exports;
+while($op_h =~ /^(bool|int|void)\s+((?:op_gv|op_zprev)[a-z0-9_]+)\s*\(\s*([^)]+)\)/gms) {
+   my($ret, $name, $args) = ($1,$2,$3);
+   next if $skip{$name};
+   my $xsname = xsname_of($name);
+   $rettype = $r{$name} || $args eq "void" ? "void" : "mval *";
+   $rettype = "void" if $xsname =~ /g_set/;
+   (my $unref = $rettype) =~ s/\*//;
+
+   print "\n\n$rettype\n$xsname(SV *global, ...)\nPROTOTYPE: \@\nPREINIT:\n\tint i;\n";
+   print "\t$unref ret;\n" if $rettype ne "void";
+   my $sub = "";
+   $sub = " - 1" if $xsname =~ /g_set/;
+   my $r = "$name(&ret);";
+   $r = "$name(&mlist[items-1]);" if $xsname =~ /^g_set/;
+   $r = "{ bool defined = $name(&ret); if(!defined) { XSRETURN_UNDEF; } }" if $xsname =~ /^g_get/;
+   $r = "$name();" if $args =~ /^void/;
+   push @exports, $xsname;
+print <<EOP;
+CODE:
+        GTM_GTM_INIT;
+          {
+                mval mlist[items];
+                /* first arg *must* be mstr */
+                SV2mstr(ST(0), &mlist[0].str);
+                mlist[0].mvtype = MV_STR;
+                for(i = 1; i < items; i++) {
+                        SV2mval(ST(i),&mlist[i]);
+                }
+                MLIST_TRANSFER(op_gvname, mlist, items$sub);
+                $r
+          }
+EOP
+print <<EOP if $rettype ne "void";
+        RETVAL = &ret;
+OUTPUT:
+        RETVAL
+EOP
+}
+print "\n\nvoid\ndummy_dummy42(void)\nCODE:\n/*".join(" ", map { "&$_" } @exports)."*/\n\n";
+__END__
+ret='bool' name='op_gvget' args='mval *v'
+ret='void' name='op_gvzwithdraw' args='void'
+ret='void' name='op_gvkill' args='void'
+ret='void' name='op_gvdata' args='mval *v'
+ret='void' name='op_gvorder' args='mval *v'
+ret='void' name='op_gvput' args='mval *var'
+ret='void' name='op_gvquery' args='mval *v'
+ret='void' name='op_zprevious' args='mval *v'
+
Index: sr_perl/ioperlAV_write.c
===================================================================
--- sr_perl/ioperlAV_write.c	(revision 0)
+++ sr_perl/ioperlAV_write.c	(revision 45)
@@ -0,0 +1,45 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+#include "io.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+error_def(ERR_PERLAVIORDONLY);
+void ioperlAV_write(mstr *v)
+{
+	GBLREF	io_pair io_curr_device;
+	uint4	status, efn_mask;
+	d_perlAV_struct *pav;
+        SV *sv;
+        I32 acnt;
+
+        pav = (d_perlAV_struct *) io_curr_device.out->dev_sp;
+        assert(pav != 0);
+        if(pav->flags & IOPERLAV_RDONLY) {
+          rts_error(VARLSTCNT(1) ERR_PERLAVIORDONLY);
+        }
+        mstr2SV(v,sv);
+        if(pav->flags & IOPERLAV_UNSHIFT) {
+          av_unshift(pav->av, 1);
+          av_store(pav->av, 0, sv);
+        } else {
+          /* speedup: preallocate if direction is push */
+          acnt = av_len(pav->av) + 1;
+          if((pav->flags & ~IOPERLAV_UNSHIFT) && (acnt & 0xf)) {
+             av_extend(pav->av, acnt + 16);
+          }
+          av_push(pav->av, sv);
+        }
+	io_curr_device.out->dollar.x = v->len;
+        io_curr_device.out->dollar.y ++;
+}
Index: sr_perl/gen_sv_access.pl
===================================================================
--- sr_perl/gen_sv_access.pl	(revision 0)
+++ sr_perl/gen_sv_access.pl	(revision 45)
@@ -0,0 +1,119 @@
+#! /usr/bin/perl
+# this script (hack) is used to generate XS-Functions
+# for access to $-variables
+# (c) 2004 by St.Traby <stefan@hello-penguin.com>
+# (c) 2004 by KW-Computer Ges.m.b.H., Graz, Austria
+
+my $items = 1 if @ARGV;
+$items ||= 0;
+
+
+my $basedir = "..";
+
+sub get($)
+{
+  local $/;
+  open my $fh, "<", "$basedir/$_[0]" or die "open $_[0]: $!";
+  <$fh>;
+}
+my $svnames = get "sr_port/svnames.h";
+my $svput   = get "sr_port/op_svput.c";
+my $svget   = get "sr_port/op_svget.c"; 
+
+my (%tab,%can_set,%type);
+
+my $idx;
+$tab{$1} = ++$idx while($svnames =~ /^[ \t]+(SV_[A-Z_]+)(?:[ \t]*=[ \t]*1)?,/gms);
+
+die "assert(svnames.h has 50 entries)" unless delete $tab{SV_NUM_SV} == 51; # sanity :)
+
+for my $x (keys %tab) {
+   $can_set{$x} = 1 if $svput =~ /^[ \t]*case[ \t]+$x[ \t]*:[ \t]*$/ms;
+}
+
+# ok, we try to be clever to get the correct type -
+# for functions in sv_put, this means scanning for MV_FORCE_...
+for my $x (keys %can_set) {
+   $type{$x} = $1 if $svput =~ /case[ \t]+$x[ \t]*:[ \t\n]+MV_FORCE_([A-Z]+)\(/ms;
+}
+# we also scan svget
+for my $x (keys %tab) {
+  if($svget =~ /case[ \t]+$x*:[ \t\n]+v->mvtype[ \t]*=[ \t]*MV_STR/ms) {
+     die "conflicting types for $x" if exists $type{$x} && $type{$x} != "STR";
+     $type{$x} = "STR";
+  }
+  if($svget =~ /case[ \t]+$x*:[ \t\n]+i2mval/ms) {
+     die "conflicting types for $x" if exists $type{$x} && $type{$x} != "NUM";
+     $type{$x} = "NUM";
+  }
+  if($svget =~ /case[ \t]+$x*:[ \t\n]+MV_FORCE_MVAL/ms) {
+     die "conflicting types for $x" if exists $type{$x} && $type{$x} != "NUM";
+     $type{$x} = "NUM";
+  }
+  # 27
+  # highly experimental - checking for MV_FORCE_MVAL in next instruction :)
+  if($svget =~ /case[ \t]+$x*:[ \t\n]+[^;]+;[ \t\n]+MV_FORCE_MVAL/ms) {
+     die "conflicting types for $x" if exists $type{$x} && $type{$x} != "NUM";
+     $type{$x} = "NUM";
+  }
+  # 32
+}
+
+my %t = ( NUM => 'IV', STR => 'SV *', SV => 'SV *');
+my %c = ( NUM => 'MV_FORCE_INT',
+          STR => 'mval2SV',
+          SV  => 'mval2SV'
+        );
+
+my @rd;
+my @wd;
+
+unless($items) {
+for my $n (sort keys %tab) {
+   my $t;
+   (my $name = lc $n) =~ s/^sv_/D/;
+   my $type = $type{$n} ||= "SV";
+   my $s = $can_set{$n};
+   if($s) {
+      push @wd, $name;
+   } else {
+      push @rd, $name;
+   }
+   my $proto = "";
+   $proto = "..." if $s;
+   $t  = "$t{$type}\n$name($proto)\n\t";
+   $t .= "PROTOTYPE: ;\$\n\t" if $s;
+   $t .="PREINIT:\n\tmval m;\n\tCODE:\n\tGTM_GTM_INIT;\n\top_svget($n, &m);\n\t";
+   if ($type ne "NUM") {
+      $t .= "mval2SV(&m, RETVAL);";
+   } else {
+      $t .= "RETVAL = $c{$type}(&m);";
+   }
+   $t .= "\n\tif(items) {\n\t\tSV2mval(ST(0), &m);\n\t\top_svput($n, &m);\n\t}" if $s ;
+   $t .= "\n\tOUTPUT:\n\tRETVAL";
+
+   $o .= "$t\n\n";
+}
+
+$o .= "\n\nvoid dummy_dummy()\n\tCODE:\n\t/* fucking xsub-parser */\n#if 0\n/* the following list can be pasted to the \%EXPORT_TAGS */";
+
+$idx = 0;
+for(@rd, @wd) {
+   $o .= "\n\t\t" if !($idx++ % 4);
+   $o .= "&$_ ";
+}
+$o .= "/**/\n#endif\n";
+print $o;
+} else {
+  # generating POD here...
+
+  for my $n (sort keys %tab) {
+     (my $name = lc $n) =~ s/^sv_//;
+     my $s = $can_set{$n};
+     my $p = "[\$new]" if $s;
+     my $a = " [ and optionally sets ]" if $s;
+     print "=item \$$name = D$name($p)\n\n";
+     print "Gets$a the \$$name variable\n\n";
+  }
+}
+
Index: sr_perl/op_fnzperlmeth.c
===================================================================
--- sr_perl/op_fnzperlmeth.c	(revision 0)
+++ sr_perl/op_fnzperlmeth.c	(revision 45)
@@ -0,0 +1,89 @@
+#include "mdef.h"
+#include "stringpool.h"
+#include "gtm_op.h"
+#include "gtm_perl.h"
+
+GBLREF spdesc stringpool;
+
+/* we don't need this - will be removed later.
+ */
+#define PERROR_BUF_SIZE 4041
+static char perl_errorbuf[PERROR_BUF_SIZE+1];
+
+error_def(ERR_PERLDIE);
+
+/*
+ * -----------------------------------------------
+ * op_fnzperlmeth()
+ * Calls a Perl method
+ * -----------------------------------------------
+ */
+
+void op_fnzperlmeth(int argc, ...)
+{
+        STRLEN len;
+        int rc;
+        va_list va;
+        mval *dst, *cls, *meth;
+        int funcargs;
+        int i, fl, retcnt;
+        SV *obj;
+        char m[256];
+
+        GTM_PERL_INIT;
+
+        va_start(va, argc);
+        dst = va_arg(va, mval *);
+        cls = va_arg(va, mval *);
+        meth = va_arg(va, mval *);
+        MV_FORCE_STR(meth);
+        i = meth->str.len > 255 ? 255 : meth->str.len;
+        memcpy(m, &meth->str, i);
+        m[i] = 0;
+        funcargs = argc - 3;
+        {
+         dSP;
+         ENTER;
+         SAVETMPS;
+         PUSHMARK(SP);
+         mval2SV(cls, obj);
+         EXTEND (SP, funcargs+1);
+         PUSHs(sv_2mortal(obj));
+         if(funcargs) {
+           for(i = 0; i < funcargs; i++) {
+             mval *mv = va_arg(va, mval *);
+             SV *sv;
+             mval2SV(mv, sv);
+             PUSHs (sv_2mortal(sv));
+           }
+           fl = G_SCALAR | G_EVAL;
+         } else {
+           fl = G_SCALAR | G_EVAL | G_NOARGS;
+         }
+         PUTBACK;
+         retcnt = call_method(m, fl);
+         SPAGAIN;
+         if(SvTRUE(ERRSV)) {
+                STRLEN err_len;
+                char *p;
+                p = SvPV(ERRSV, err_len);
+                if(err_len > PERROR_BUF_SIZE) {
+                        err_len = PERROR_BUF_SIZE;
+                }
+                memcpy(perl_errorbuf, p, err_len);
+                perl_errorbuf[err_len] = 0;
+                POPs;
+                PUTBACK;
+                FREETMPS;
+                LEAVE;
+                rts_error(VARLSTCNT(4) ERR_PERLDIE, 2, err_len, perl_errorbuf);
+         } else {
+                SV *ret = POPs;
+                SV2mval(ret, dst);
+                PUTBACK;
+                FREETMPS;
+                LEAVE;
+         }
+        }
+	return;
+}
Index: sr_perl/ioperlAV_wtone.c
===================================================================
--- sr_perl/ioperlAV_wtone.c	(revision 0)
+++ sr_perl/ioperlAV_wtone.c	(revision 45)
@@ -0,0 +1,25 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+#include "io.h"
+
+void ioperlAV_wtone(unsigned char v)
+{
+mstr	temp;
+char p[1];
+
+p[0] = v;
+temp.len = 1;
+temp.addr = p;
+ioperlAV_write(&temp);
+return;
+}
Index: sr_perl/ioperlAV_use.c
===================================================================
--- sr_perl/ioperlAV_use.c	(revision 0)
+++ sr_perl/ioperlAV_use.c	(revision 45)
@@ -0,0 +1,84 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+
+#include "gtm_string.h"
+
+#include <errno.h>
+#include "io.h"
+#include "iosp.h"
+#include "iombdef.h"
+#include "io_params.h"
+#include "compiler.h"
+#include "stringpool.h"
+#include "ioperlAVdef.h"
+
+LITREF unsigned char io_params_size[];
+
+void ioperlAV_use(io_desc *iod, mval *pp)
+{
+	char		*path;
+	uint4		status;
+	params		ch;
+	int		p_offset;
+        bool            iconv_changed;
+        d_perlAV_struct *pav;
+
+        assert(iod != 0);
+        assert(iod->dev_sp != 0);
+
+        pav = (d_perlAV_struct *) iod->dev_sp;
+
+	p_offset = 0;
+        iconv_changed = 0;
+	iomb_flush(iod);
+	while ( (ch = *(pp->str.addr + p_offset++)) != iop_eol)
+	{
+		switch (ch)
+		{
+		case iop_exception:
+			iod->error_handler.len = *(pp->str.addr + p_offset);
+			iod->error_handler.addr = (char *)(pp->str.addr + p_offset + 1);
+			s2pool(&iod->error_handler);
+			break;
+                case iop_iconv:
+                        ioperlAV_prepare_iconv_options(pav, *(pp->str.addr + p_offset), (char *)(pp->str.addr + p_offset + 1));
+                        iconv_changed = 1;
+                        break;
+                case iop_readonly:
+                        pav->flags |= IOPERLAV_RDONLY;
+                        break;
+                case iop_noreadonly:
+                        pav->flags &= ~IOPERLAV_RDONLY;
+                        break;
+                case iop_zpop:
+                        pav->flags |= IOPERLAV_POP;
+                        break;
+                case iop_zpush:
+                        pav->flags &= ~IOPERLAV_UNSHIFT;
+                        break;
+                case iop_zshift:
+                        pav->flags &= ~IOPERLAV_POP;
+                        break;
+                case iop_zunshift:
+                        pav->flags |= IOPERLAV_UNSHIFT;
+                        break;
+		default:
+			break;
+		}
+		p_offset += ((IOP_VAR_SIZE == io_params_size[*(pp->str.addr + p_offset)]) ?
+			(unsigned char)*(pp->str.addr + p_offset) + 1 : io_params_size[*(pp->str.addr + p_offset)]);
+	}
+        if(iconv_changed) {
+          ioperlAV_set_iconv_options(pav);
+        }
+}
Index: sr_perl/f_perlva.c
===================================================================
--- sr_perl/f_perlva.c	(revision 0)
+++ sr_perl/f_perlva.c	(revision 45)
@@ -0,0 +1,70 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+#include "compiler.h"
+#include "gtm_opcode.h"
+#include "toktyp.h"
+#include "advancewindow.h"
+
+GBLREF char window_token;
+
+int f_perlva( oprtype *a, opctype op)
+{
+	triple *root, *last, *curr,*ref;
+	oprtype argv[CHARMAXARGS], *argp;
+	int argc;
+	error_def(ERR_FCHARMAXARGS);
+
+	argp = &argv[0];
+	argc = 0;
+	if (!expr(argp))
+		return FALSE;
+	assert(argp->oprclass == TRIP_REF);
+	argc++;
+	argp++;
+	for (;;)
+	{
+		if (window_token != TK_COMMA)
+			break;
+		advancewindow();
+		if (window_token == TK_COMMA || window_token == TK_RPAREN)
+		{
+			ref = newtriple(OC_NULLEXP);
+			*argp = put_tref(ref);
+		}
+		else
+		{
+			if (!expr(argp))
+				return FALSE;
+			assert(argp->oprclass == TRIP_REF);
+		}
+		argc++;
+		argp++;
+		if (argc >= CHARMAXARGS)
+		{	stx_error(ERR_FCHARMAXARGS);
+			return FALSE;
+		}
+	}
+	root = last = maketriple(op);
+	root->operand[0] = put_ilit(argc + 1);
+	argp = &argv[0];
+	for (; argc > 0 ;argc--, argp++)
+	{
+		curr = newtriple(OC_PARAMETER);
+		curr->operand[0] = *argp;
+		last->operand[1] = put_tref(curr);
+		last = curr;
+	}
+	ins_triple(root);
+	*a = put_tref(root);
+	return TRUE;
+}
Index: sr_perl/ioperlAV_readfl.c
===================================================================
--- sr_perl/ioperlAV_readfl.c	(revision 0)
+++ sr_perl/ioperlAV_readfl.c	(revision 45)
@@ -0,0 +1,52 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+
+#include "gtm_string.h"
+
+#include "io.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+error_def(ERR_IOEOF);
+
+short ioperlAV_readfl(mval *v, int4 length, int4 t)
+{
+    GBLREF io_pair io_curr_device;
+    io_desc *io_ptr;
+    d_perlAV_struct *pav;
+    STRLEN len;
+    SV *sv;
+    char *p;
+
+    io_ptr = io_curr_device.in;
+    pav = (d_perlAV_struct *) io_ptr->dev_sp;
+    assert (io_ptr->state == dev_open);
+    assert(pav != 0);
+    
+    if(av_len(pav->av) == -1 || !(sv = (pav->flags & IOPERLAV_POP ? av_pop : av_shift)(pav->av))) {
+       /* eof */
+       io_ptr->dollar.zeof = TRUE;
+       v->str.len = 0;
+       if(io_ptr->error_handler.len > 0) {
+         rts_error(VARLSTCNT(1) ERR_IOEOF);
+       }
+       return FALSE;
+     }
+    p = SvPV(sv, len);
+    if(len > length)
+      len = length;
+    memcpy(v->str.addr, p, len);
+    v->str.len = len;
+    io_ptr->dollar.x += len;
+    return TRUE;
+}
Index: sr_perl/typemap
===================================================================
--- sr_perl/typemap	(revision 0)
+++ sr_perl/typemap	(revision 45)
@@ -0,0 +1,21 @@
+#
+# Mapping between GT.M and Perl Datatypes
+# (c) 2004 by St. Traby <stefan@hello-penguin.com>
+# @@@ vim:noet
+#
+mval *              T_MVAL
+mstr *              T_MSTR
+
+##############################################################################
+INPUT
+T_MVAL
+	SV2mval($arg, $var)
+T_MSTR
+	SV2mstr($arg, $var)
+
+##############################################################################
+OUTPUT
+T_MVAL
+	mval2SV($var, $arg);
+T_MSTR
+	mstr2SV($var, $arg);
Index: sr_perl/patch-gtm
===================================================================
--- sr_perl/patch-gtm	(revision 0)
+++ sr_perl/patch-gtm	(revision 45)
@@ -0,0 +1,175 @@
+#! /usr/bin/perl
+# (c) 2004 by St.Traby <stefan@hello-penguin.com>
+
+# This file patches stuff into or out of the source tree that
+# we can't conditionally enable/disable with "#define GTM_WANT_PERL",
+# for example "sr_unix/ttt.txt"
+# filenames are relative to the base-directory.
+
+#
+# BEFORE EDITING MAKE SURE THAT THE PATCHES ARE NOT APPLIED (loud)
+#
+
+# %targets is a hash indexed by files, values are arrays
+# of modifications, each modification is an array of
+# three values:
+#    0: a regular expression match that should match if - and only if - the patch is already applied
+#    1: a sub-ref that applies the patch (gets only called if not already applied)
+#    2: a sub-ref that unapplies the patch (gets only called if applied)
+#
+
+my ($ttt_text_patch, $merrors_patch, $opcode_def_patch);
+
+my $modified = 0; # count of files we modified. if we modify a file we exit(1) to stop the
+                  # make process. we ask the user to rerun.
+
+my %targets = (
+          'sr_unix_nsb/ttt.txt' => [
+                                     [ qr/^OC_FNZPERLEVAL:/ms, 
+                                       sub { local $_ = shift; s/^OC_FNZPID/${ttt_text_patch}OC_FNZPID/ms; $_ },
+                                       sub { local $_ = shift; $_ =~ s/$ttt_text_patch//ms; $_ },
+                                     ]
+                                   ],
+          'sr_port/merrors.msg' => [
+                                     [
+                                       qr/^PERLDIE/ms,
+                                       sub { local $_ = shift; s/(^MUPIPSIG.*?$)\n/$1\n$merrors_patch/ms; $_; },
+                                       sub { local $_ = shift; s/$merrors_patch//ms; $_; },
+                                     ],
+                                   ],
+     'sr_unix_nsb/opcode_def.h' => [
+                                     [
+                                       qr/FNZPERLEVAL/ms,
+                                       sub { local $_ = shift; s/(OC_FNZPARSE.*?$)\n/$1\n$opcode_def_patch/ms; $_ },
+                                       sub { local $_ = shift; s/[^\n]+OC_FNZPERL.*?\n//gms; $_ },
+                                     ],
+                                   ],
+   'sr_unix/gtmshr_symbols.exp' => [
+                                     [
+                                       qr/^boot_GTM/ms,
+                                       sub { my $syms = get_file("sr_perl/gtm_perl_callin.exp");
+                                             "$_[0]$syms";
+                                       },
+                                       sub { local $_ = shift; s/(^gtm_free[ \t\n]+).*/$1/ms; $_ },
+                                     ]
+                                   ],
+
+);
+$targets{'sr_port/opcode_def.h'} = $targets{'sr_unix_nsb/opcode_def.h'};
+$targets{'sr_unix/ttt.txt'} = $targets{'sr_unix_nsb/ttt.txt'};
+
+$ttt_text_patch =<<EOP;
+OC_FNZPERLCALL: irepab  val.2
+                pushab  val.0
+                calls   val.1,xfer.xf_fnzperlcall
+OC_FNZPERLEVAL: pushab  val.0
+                pushab  val.1
+                calls   #2,xfer.xf_fnzperleval
+OC_FNZPERLICONV: pushab  val.0
+                pushab  val.1
+                calls   #2,xfer.xf_fnzperliconv
+OC_FNZPERLMETH: irepab  val.2
+                pushab  val.0
+                calls   val.1,xfer.xf_fnzperlmeth
+OC_FNZPERLSCALAR: pushab  val.0
+                pushab  val.1
+                calls   #2,xfer.xf_fnzperlscalar
+OC_FNZPERLTYPE: pushab  val.0
+                pushab  val.1
+                calls   #2,xfer.xf_fnzperltype
+OC_FNZPERLUNREF: pushab  val.0
+                pushab  val.1
+                calls   #2,xfer.xf_fnzperlunref
+EOP
+
+$merrors_patch = <<EOP;
+PERLINIT        <Error initializing Perl environment>/error/fao=0!/ansi=0
+PERLALLOC       <Error allocating memory for Perl>/error/fao=0!/ansi=0
+PERLDIE         <Perl exception caught:  !AD>/error/fao=2!/ansi=0
+PERLUNDEF       <Perl returned undef - aborting expression evaluation>/error/fao=0!/ansi=0
+PERLNOREF       <Attempt to free a Perl reference which wasn't.>/error/fao=0!/ansi=0
+PERLDEADREF     <Attempt to use a Perl reference which is already freed.>/error/fao=0!/ansi=0
+PERLAVIORDONLY  <Attempt to write to a READONLY Perl array.>/error/fao=0!/ansi=0
+PERLICONV       <Iconv conversion error:  !AD>/error/fao=2!/ansi=0
+EOP
+
+$opcode_def_patch = <<EOP;
+OPCODE_DEF(OC_FNZPERLCALL, (OCT_MVAL | OCT_EXPRLEAF))
+OPCODE_DEF(OC_FNZPERLEVAL, (OCT_MVAL | OCT_EXPRLEAF))
+OPCODE_DEF(OC_FNZPERLICONV, (OCT_MVAL | OCT_EXPRLEAF))
+OPCODE_DEF(OC_FNZPERLMETH, (OCT_MVAL | OCT_EXPRLEAF))
+OPCODE_DEF(OC_FNZPERLSCALAR, (OCT_MVAL | OCT_EXPRLEAF))
+OPCODE_DEF(OC_FNZPERLTYPE, (OCT_MVAL | OCT_EXPRLEAF))
+OPCODE_DEF(OC_FNZPERLUNREF, (OCT_MVAL | OCT_EXPRLEAF))
+EOP
+
+my $prefix = "../";
+my $error = 0;
+
+sub get_file($) {
+   my $fn = $prefix.shift;
+   open my $fh, "<", $fn or die "can't open $fn for reading: $!";
+   local $/;
+   <$fh>;
+}
+
+sub put_file($$) {
+   $modified++;
+   my($fn, $c) = ($prefix.$_[0], $_[1]);
+   open my $fh, ">", $fn or die "can't open $fn for writing: $!";
+   print $fh $c; 
+}
+
+my $realmode;
+sub doit($) {
+   my $mode = shift;
+   my $t = $mode eq "check" ? "\t\t[testing]" : "";
+   while(my($file,$patches) = each %targets) {
+      print "processing '$file' (mode $realmode)\n";
+      my $body = get_file $file;
+      my $body_orig = $body;
+      my $body1;
+      my $chkcnt = 0;
+check_stage2:
+      for(my $i = 0; my ($check,$apply,$unapply) = @{$patches->[$i]}; $i++) {
+         my $applied = ($body =~ m/$check/) ? 1 : 0;
+         print "\t$tpatch #$i: currently ".($applied ? "" : "NOT ")."applied" unless $chkcnt;
+         $mode = $applied ? "out" : "in" if $realmode eq "check";
+         if(($mode eq "in" && $applied) || ($mode eq "out" && !$applied)) {
+            print "$t -- leaving it alone\n"
+         } else {
+           $body = $mode eq "in" ? $apply->($body) : $unapply->($body);
+           print "$t -- ".($applied ? "un" : "")."applied.\n"
+         }
+      }
+      $body1 = $body unless $chkcnt;
+      goto check_stage2 if $realmode eq "check" and $chkcnt++ < 1;
+      if($realmode ne "check") {
+         put_file $file, $body if $body ne $body_orig
+       } else {
+          if ($body ne $body_orig) {
+              $error++;
+              print "check failed for patch '$file'\n"
+          } elsif($body1 eq $body) {
+             $error++;
+              print "patch DOES NOTHING to '$file'\n"
+          } else {
+             print "file '$file' - tested OK.\n"
+          }
+       }
+   }
+
+}
+
+
+die "Usage: $0 [perl-in|perl-out|perl-check]" unless @ARGV == 1 && $ARGV[0] =~ /^perl-((?:in|out|check))$/;
+doit ($realmode = $1);
+print <<EOM if $modified;
+
+-----------------------------------------------
+- Sources have changed -- please re-run make. -
+-----------------------------------------------
+
+EOM
+exit !!($error | $modified);
+
Index: sr_perl/op_fnzperlscalar.c
===================================================================
--- sr_perl/op_fnzperlscalar.c	(revision 0)
+++ sr_perl/op_fnzperlscalar.c	(revision 45)
@@ -0,0 +1,57 @@
+/****************************************************************
+ *      Copyright 2001 Sanchez Computer Associates, Inc.        *
+ *      Copyright 2004 KW-Computer Ges.m.b.H.                   *
+ *      This source code contains the intellectual property     *
+ *      of its copyright holder(s), and is made available       *
+ *      under a license.  If you do not know the terms of       *
+ *      the license, please stop and do not read further.       *
+ *                                                              *
+ ****************************************************************/
+
+#include "mdef.h"
+#include "stringpool.h"
+#include "gtm_op.h"
+#include "gtm_perl.h"
+
+GBLREF spdesc stringpool;
+
+/*
+ * -----------------------------------------------
+ * op_fnzperlscalar()
+ * returns the scalar representation of a reference within a mval
+ *
+ * Arguments:
+ *	src	- Pointer to Source string mval (that may contain a SVRV)
+ *	dst	- Pointer to return value of perl
+ *
+ * Return:
+ *	none
+ * -----------------------------------------------
+ */
+
+static /* const */ char its_dead_jim[] = "DEAD PERL REFERENCE (It's dead Jim.)";
+
+void op_fnzperlscalar(mval *src, mval *dst)
+{
+        SV *sv;
+        MV_FORCE_DEFINED(src); /* needed ?? */
+        MV_FORCE_STR(src);
+        dst->mvtype = MV_STR;
+        dst->str.len = 0;
+        if(src->str.len == sizeof(mstr_sv) && *(unsigned long *)src->str.addr == MSTR_SV_MAGIC) {
+                SV *sv = mstrGetSV(&src->str);
+                if(!sv) {
+                        dst->str.len = sizeof(its_dead_jim);
+                        dst->str.addr = its_dead_jim;
+                        s2pool(&src->str);
+                } else {
+                        STRLEN len;
+                        GTM_PERL_INIT;
+                        dst->str.addr = sv_2pv_flags(pTHX_ sv, &len, 0);
+                        LENGTHCHECK(len);
+                        dst->str.len = len;
+                        s2pool(&dst->str);
+                }
+        }
+	return;
+}
Index: sr_perl/GTM/t/01_load.t
===================================================================
--- sr_perl/GTM/t/01_load.t	(revision 0)
+++ sr_perl/GTM/t/01_load.t	(revision 45)
@@ -0,0 +1,17 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl GTM.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use Test;
+BEGIN { plan tests => 1 };
+use GTM;
+ok(1); # If we made it this far, we're ok.
+
+#########################
+
+# Insert your test code below, the Test::More module is use()ed here so read
+# its man page ( perldoc Test::More ) for help writing this test script.
+
Index: sr_perl/GTM/t/04_perlioav.t
===================================================================
--- sr_perl/GTM/t/04_perlioav.t	(revision 0)
+++ sr_perl/GTM/t/04_perlioav.t	(revision 45)
@@ -0,0 +1,17 @@
+use Test;
+BEGIN { plan tests => 2 };
+use GTM::Preprocessor;
+
+my $pp = new GTM::Preprocessor( verbose => 1);
+
+ok(0 == $pp->add("Cache"));
+ok($pp->run("hello") =~ /hello/);
+my $x = <<'EOL';
+#include seppl
+#include seppl
+#define X
+#define Y(1) 1
+#define a(%arg1) b(%arg1)
+EOL
+
+$pp->run($x);
Index: sr_perl/GTM/t/06_tie.t
===================================================================
--- sr_perl/GTM/t/06_tie.t	(revision 0)
+++ sr_perl/GTM/t/06_tie.t	(revision 45)
@@ -0,0 +1,14 @@
+use Test;
+BEGIN { plan tests => 1 };
+use GTM ':global';
+use GTM::GlobalTie;
+
+g_kill "primes";
+tie %primes, GTM::GlobalTie, "primes";
+
+
+$primes{$_} = $_ for(0..5);
+
+ok(4 == g_get "primes", 4);
+
+%primes = ();
Index: sr_perl/GTM/t/05_globals.t
===================================================================
--- sr_perl/GTM/t/05_globals.t	(revision 0)
+++ sr_perl/GTM/t/05_globals.t	(revision 45)
@@ -0,0 +1,20 @@
+use Test;
+BEGIN { plan tests => 9 };
+use GTM ":global";
+
+
+g_kill "perltmp";
+ok(1);
+
+ok(g_data("perltmp") == 0);
+g_set "perltmp",1,"hallo";
+ok(10 == g_data "perltmp");
+
+ok(1 == g_data "perltmp", 1);
+ok("hallo" eq g_get "perltmp",1);
+ok(0 == g_data  "perltmp",1,2,3,4,5,6,7);
+g_set "perltmp",1,2,3,4,5,6,7;
+ok(4 == g_order("perltmp",1,2,3,""));
+ok(4 == g_rorder("perltmp",1,2,3,""));
+g_xkill "perltmp",1;
+ok(10 == g_data "perltmp",1);
Index: sr_perl/GTM/t/03_preprocessor.t
===================================================================
--- sr_perl/GTM/t/03_preprocessor.t	(revision 0)
+++ sr_perl/GTM/t/03_preprocessor.t	(revision 45)
@@ -0,0 +1,17 @@
+use Test;
+BEGIN { plan tests => 2 };
+use GTM::Preprocessor;
+
+my $pp = new GTM::Preprocessor( verbose => 1);
+
+ok(0 == $pp->add("Cache"));
+ok($pp->run("hello") =~ /hello/);
+my $x = <<'EOL';
+#include seppl
+#include seppl
+#define X
+#define Y(1) 1
+#define a(%arg1) b(%arg1)
+EOL
+
+$pp->run($x);
Index: sr_perl/GTM/t/02_sysvar.t
===================================================================
--- sr_perl/GTM/t/02_sysvar.t	(revision 0)
+++ sr_perl/GTM/t/02_sysvar.t	(revision 45)
@@ -0,0 +1,18 @@
+use Test;
+BEGIN { plan tests => 6 };
+use GTM qw(:sysvar);
+
+#
+# if one is working, all are working :)
+#
+
+ok (Djob =~ /\d+/);
+ok (!length Dztrap);
+
+ok(Dx =~ /\d+/);
+ok(Dy =~ /\d+/);
+
+ok(Dzversion =~ /^GT\.M/);
+
+Dx 99;
+ok(Dx == 99);
Index: sr_perl/GTM/lib/GTM.pm
===================================================================
--- sr_perl/GTM/lib/GTM.pm	(revision 0)
+++ sr_perl/GTM/lib/GTM.pm	(revision 45)
@@ -0,0 +1,479 @@
+package GTM;
+
+use 5.006;
+use strict;
+use warnings;
+
+require DynaLoader;
+require Exporter;
+
+our @ISA = qw(Exporter);
+
+#
+# our loader is _very_ verbose - oesi
+#
+
+unless(DynaLoader::dl_find_symbol_anywhere("boot_GTM"))
+ {
+   my $added = 0; # if we unshifted something on dl_library_path
+
+   unless ($ENV{gtm_dist}) {
+      warn "Environment variable 'gtm_dist' not set, bootstrapping may fail.";
+   } else {
+      # we are putting gtm_dist on top
+      unshift @DynaLoader::dl_library_path, $ENV{gtm_dist};
+      ++$added; # we remove it after loading.
+   }
+   my $libname = 'libgtmperl';
+   my $lib = DynaLoader::dl_findfile($libname)
+             or die "calling DynaLoader::dl_findfile(\"$libname\") failed: $! ".DynaLoader::dl_error();
+
+   my $libref = DynaLoader::dl_load_file("$lib", 0x1)
+             or die "calling DynaLoader::dl_load_file(\"$lib\", 0x1) failed.".DynaLoader::dl_error();
+
+   my @usyms = DynaLoader::dl_undef_symbols();
+   @usyms and die "undefined symbols after loading \"$lib\": ".join",", map{ "\"$_\"" } @usyms;
+
+   my $symref = DynaLoader::dl_find_symbol($libref, "boot_GTM")
+      or die "no symbol \"boot_GTM\" in \"$lib\" :".DynaLoader::dl_error();
+
+   my $fref = DynaLoader::dl_install_xsub("GTM::bootstrap", $symref);
+   ref $fref eq "CODE" or die "dl_install_xsub error.";
+ 
+
+   &{$fref}();
+
+   # restore DynaLoader resolve path
+   shift @DynaLoader::dl_library_path while($added--);
+ }
+
+our %EXPORT_TAGS = (
+
+  'sysvar' => [ qw(
+                &Ddevice &Destack &Dhorolog &Dio 
+                &Djob &Dkey &Dprincipal &Dquit 
+                &Dreference &Dstack &Dstorage &Dtest 
+                &Dtlevel &Dtrestart &Dza &Dzb 
+                &Dzc &Dzcmdline &Dzcstatus &Dzeditor 
+                &Dzeof &Dzininterrupt &Dzio &Dzjob 
+                &Dzlevel &Dzmode &Dzpos &Dzproc 
+                &Dzsystem &Dzversion &Decode &Detrap 
+                &Dprompt &Dsystem &Dx &Dy 
+                &Dzcompile &Dzdate_form &Dzdir &Dzerror 
+                &Dzgbldir &Dzinterrupt &Dzmaxtptime &Dzroutines 
+                &Dzsource &Dzstatus &Dzstep &Dztexit 
+                &Dztrap &Dzyerror
+                )
+              ],
+  'global' => [ qw(&g_get &g_xkill &g_kill &g_data
+                   &g_order &g_set &g_query &g_rorder)
+              ],
+   'trans' => [ qw(
+                &tstart &trestart &tcommit &trollback
+                &Dtrestart &Dtlevel
+                )
+              ],
+    'exec' => [ qw(&xecute
+                )
+              ],
+);
+
+END { GTM::unload_gtm(); }
+
+
+$EXPORT_TAGS{'all'} = [ @{$EXPORT_TAGS{'sysvar'}},
+                        @{$EXPORT_TAGS{'trans'}},
+                        @{$EXPORT_TAGS{'global'}},
+                        @{$EXPORT_TAGS{'exec'}},
+                        &unload_gtm,];
+
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'}, });
+
+our @EXPORT = qw( &unload_gtm &xecute
+);
+
+our $VERSION = '0.01_12';
+
+
+=head1 NAME
+
+GTM - Perl extension for accessing GT.M
+
+=head1 SYNOPSIS
+
+  use GTM ":all";
+  use GTM qw(:sysvar :global :trans);
+
+  embed GT.M within Perl
+
+=head1 DESCRIPTION
+
+The GTM module embeds GT.M in Perl.
+This module provides the low-level Interface
+to the GT.M database environment.
+
+=head1 FUNCTIONS
+
+This section gives you an overview over all
+functions that are provided by this module.
+
+They are ordered by sections, all functions within
+a section are accessible by an export-tag and
+share a naming convention (i.e: a prefix).
+
+=head2 Accessing GT.M system variables (Export-Tag: ":sysvar")
+
+All dollar variables ($test,$tlevel, etc.) are
+accessible by functions with their name prepended
+by "D" - which means Dollar (a obsolete currency still
+used in some degenerated countries).
+
+ Examples:  $test == Dtest
+            $horolog = Dhorolog
+            
+If you want to set a sysvar, pass an argument.
+In any case they return their (old) value.
+
+Note that the documentation is - like the correspondending
+XS-part - magically auto-generated :)
+
+=over 4
+
+=item $device = Ddevice()
+
+Gets the $device variable
+
+=item $ecode = Decode([$new])
+
+Gets [ and optionally sets ] the $ecode variable
+
+=item $estack = Destack()
+
+Gets the $estack variable
+
+=item $etrap = Detrap([$new])
+
+Gets [ and optionally sets ] the $etrap variable
+
+=item $horolog = Dhorolog()
+
+Gets the $horolog variable
+
+=item $io = Dio()
+
+Gets the $io variable
+
+=item $job = Djob()
+
+Gets the $job variable
+
+=item $key = Dkey()
+
+Gets the $key variable
+
+=item $principal = Dprincipal()
+
+Gets the $principal variable
+
+=item $prompt = Dprompt([$new])
+
+Gets [ and optionally sets ] the $prompt variable
+
+=item $quit = Dquit()
+
+Gets the $quit variable
+
+=item $reference = Dreference()
+
+Gets the $reference variable
+
+=item $stack = Dstack()
+
+Gets the $stack variable
+
+=item $storage = Dstorage()
+
+Gets the $storage variable
+
+=item $system = Dsystem([$new])
+
+Gets [ and optionally sets ] the $system variable
+
+=item $test = Dtest()
+
+Gets the $test variable
+
+=item $tlevel = Dtlevel()
+
+Gets the $tlevel variable
+
+=item $trestart = Dtrestart()
+
+Gets the $trestart variable
+
+=item $x = Dx([$new])
+
+Gets [ and optionally sets ] the $x variable
+
+=item $y = Dy([$new])
+
+Gets [ and optionally sets ] the $y variable
+
+=item $za = Dza()
+
+Gets the $za variable
+
+=item $zb = Dzb()
+
+Gets the $zb variable
+
+=item $zc = Dzc()
+
+Gets the $zc variable
+
+=item $zcmdline = Dzcmdline()
+
+Gets the $zcmdline variable
+
+=item $zcompile = Dzcompile([$new])
+
+Gets [ and optionally sets ] the $zcompile variable
+
+=item $zcstatus = Dzcstatus()
+
+Gets the $zcstatus variable
+
+=item $zdate_form = Dzdate_form([$new])
+
+Gets [ and optionally sets ] the $zdate_form variable
+
+=item $zdir = Dzdir([$new])
+
+Gets [ and optionally sets ] the $zdir variable
+
+=item $zeditor = Dzeditor()
+
+Gets the $zeditor variable
+
+=item $zeof = Dzeof()
+
+Gets the $zeof variable
+
+=item $zerror = Dzerror([$new])
+
+Gets [ and optionally sets ] the $zerror variable
+
+=item $zgbldir = Dzgbldir([$new])
+
+Gets [ and optionally sets ] the $zgbldir variable
+
+=item $zininterrupt = Dzininterrupt()
+
+Gets the $zininterrupt variable
+
+=item $zinterrupt = Dzinterrupt([$new])
+
+Gets [ and optionally sets ] the $zinterrupt variable
+
+=item $zio = Dzio()
+
+Gets the $zio variable
+
+=item $zjob = Dzjob()
+
+Gets the $zjob variable
+
+=item $zlevel = Dzlevel()
+
+Gets the $zlevel variable
+
+=item $zmaxtptime = Dzmaxtptime([$new])
+
+Gets [ and optionally sets ] the $zmaxtptime variable
+
+=item $zmode = Dzmode()
+
+Gets the $zmode variable
+
+=item $zpos = Dzpos()
+
+Gets the $zpos variable
+
+=item $zproc = Dzproc()
+
+Gets the $zproc variable
+
+=item $zroutines = Dzroutines([$new])
+
+Gets [ and optionally sets ] the $zroutines variable
+
+=item $zsource = Dzsource([$new])
+
+Gets [ and optionally sets ] the $zsource variable
+
+=item $zstatus = Dzstatus([$new])
+
+Gets [ and optionally sets ] the $zstatus variable
+
+=item $zstep = Dzstep([$new])
+
+Gets [ and optionally sets ] the $zstep variable
+
+=item $zsystem = Dzsystem()
+
+Gets the $zsystem variable
+
+=item $ztexit = Dztexit([$new])
+
+Gets [ and optionally sets ] the $ztexit variable
+
+=item $ztrap = Dztrap([$new])
+
+Gets [ and optionally sets ] the $ztrap variable
+
+=item $zversion = Dzversion()
+
+Gets the $zversion variable
+
+=item $zyerror = Dzyerror([$new])
+
+Gets [ and optionally sets ] the $zyerror variable
+
+=back
+
+=head2 Global Access (Export-Tag: ":global")
+
+Functions that provide global access start with "g_".
+
+=over 4
+
+=item my $x = g_get("global", [ "idx1", [ "idx2", ..]])
+
+Fetches a global.
+If the node is undefined, "undef" is returned.
+
+=item g_kill("global", [ "idx1", [ "idx2", ..]])
+
+Kills a global node including all descendant nodes.
+
+=item g_xkill("global", [ "idx1", [ "idx2", ..]])
+
+Kills a global node excluding all descendant nodes.
+
+=item my $next = g_order ("global", [ "idx1", [ "idx2", ..]])
+
+Returns the next index of same depth.
+
+=item my $prev = g_rorder("global", [ "idx1", [ "idx2", ..]])
+
+Returns the previous index of same depth.
+
+=item my $next = g_query("global", [ "idx1", [ "idx2", ..]])
+
+Returns a full reference to the next node in order
+independant of depth.
+
+=item g_set("global", [ "idx1", [ "idx2", ..]], $value)
+
+Sets a global.
+
+=item g_data("global", [ "idx1", [ "idx2", ..]])
+
+Checks if a global exists.
+
+=back
+
+=head2 Transaction support (Export-Tag: ":trans")
+
+In addition to tstart()/tcommit()/trollback()/trestart(),
+Dtlevel() and Dtrestart() are imported by ":trans", too.
+
+They work in the same way as the Mumps versions, except
+that you can't pass local M-variables to tstart and you
+specify SERIAL by a boolean flag.
+
+Well, I've not really tested these, but at least:
+
+   perl -MGTM=:trans -e 'tstart; print Dtlevel; tcommit; print Dtlevel'
+
+prints "10", as expected. :)
+
+=over 4
+
+=item tstart([$serial, $tid])
+
+Start a transaction.
+
+=item tcommit()
+
+Commits a transaction.
+
+=item trestart([$level])
+
+Restarts a transaction.
+
+=item trollback($levels)
+
+Rolls a transaction back.
+
+=back
+
+=head2 Accessing M-Code ":mcode"
+
+=head2 EXPORT
+
+Only unload_gtm() is exported.
+Call this function before you call something like exec
+or _exit(). It calls gtm_exit() if and only if Perl started
+GT.M.
+unload_gtm() is called automagically on Perl exit if and
+only if Perl started GT.M.
+
+=head1 BUGS
+
+We use the DynaLoader carefully and we try to
+locate libgtmperl (formally libgtmshr) library by
+searching in $ENV{gtm_dist} first.
+It should work even on VMS - please report if not.
+You may get something like:
+  Subroutine GTM::bootstrap redefined at /usr/local/share/perl/5.8.3/GTM.pm line 40.
+when using $ZPERLEVAL(...) in GT.M.
+
+This is a simple initialization problem that I'm going to address later :)
+
+=head1 SEE ALSO
+
+L<GTM::Perl> - for using Perl within GT.M programs
+
+L<GTM::GlobalTie>, L<GTM::Preprocessor>, L<GTM::Preprocessor::Cache>.
+
+Well, look at my "old" Cac modules, the GT.M series will get much better :)
+
+L<Cac>, L<Cac::ObjectScript>, L<Cac::Global>, L<Cac::Routine>, L<Cac::Util>, L<Cac::Bind>.
+
+
+=head1 AUTHOR
+
+Stefan Traby, E<lt>stefan@hello-penguin.comE<gt> L<http://www.hello-penguin.com/gtm-perl>
+
+=head1 COPYRIGHT AND LICENSE
+
+ Copyright (C) 2004 by Stefan Traby <stefan@hello-penguin.com>
+ Copyright (C) 2004 by KW-Computer Ges.m.b.H., Graz, Austria
+
+This library is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License (GPL).
+
+In addition to this license
+
+    Sanchez Computer Associates, Inc.
+    40 Valley Stream Parkway
+    Malvern, PA 19355, USA
+
+has the non-exclusive right to do what ever they want
+with this code.
+
+=cut
+
+1;
+__END__
Index: sr_perl/GTM/lib/GTM/Preprocessor.pm
===================================================================
--- sr_perl/GTM/lib/GTM/Preprocessor.pm	(revision 0)
+++ sr_perl/GTM/lib/GTM/Preprocessor.pm	(revision 45)
@@ -0,0 +1,181 @@
+package GTM::Preprocessor;
+
+use 5.006;
+use strict;
+use warnings;
+
+require Exporter;
+
+use GTM ':sysvar';
+
+our @ISA = qw(Exporter GTM);
+
+our %EXPORT_TAGS = (
+);
+
+$EXPORT_TAGS{'filter'} = [ qw( &lookup &notify ) ];
+$EXPORT_TAGS{'all'} = [ @{$EXPORT_TAGS{'filter'}} ];
+
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'}, });
+
+our @EXPORT = qw( @MINC );
+
+our $VERSION = '0.01';
+
+
+=head1 NAME
+
+GTM::Preprocessor - Generic frontend for preprocessing GT.M Sources
+
+=head1 SYNOPSIS
+
+  use GTM::Preprocessor;
+  my $p = new GTM::Preprocessor;
+  $p->add("Cache"); # add the GTM::Preprocessor::Cache backend
+  my $newcontent = $p->run($content);
+  
+The preprocessor-engine can be embedded into GT.M
+so all sources you compile go to this stack
+
+There is also a gtmpp script which allows you to preprocess
+outside of GT.M
+
+=head1 DESCRIPTION
+
+GTM::Preprocessor is the base class for
+preprocessing M-Code.
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item my $pp = new GTM::Preprocessor ([opt => value[, opt => value]])
+
+creates a new GTM::Preprocessor object.
+The following options are currently supported:
+
+ verbose => [0|1]  - set verbose level (0 = quiet)
+
+=cut
+
+sub new (@) {
+   my($self, @a) = @_;
+   die "invalid arguments" if @a % 2;
+   my (%a) = @a;
+   $a{pp} ||= ();
+   bless { %a }, $self;
+}
+
+=item my $parsed = $pp->run($content, [$filename])
+
+runs all stacked preprocessors and returns content.
+
+=cut
+
+sub run($$;$) {
+   my($self, $content, $filename) = @_;
+   for my $cur (@{$self->{pp}}) {
+      my $newcontent = $cur->($content, $filename); 
+      $content = $newcontent;
+   }
+   $content;
+}
+
+=item my $status = $pp->add($preprocessor, %args)
+
+Add a backend preprocessor.
+
+  $status is 0 if it worked,
+             1 if the requested preprocessor was not found
+             2 if the requested preprocessor returned an error
+               while initialization
+
+=cut
+
+sub _get_pp($$@) {
+   my ($self, $sub, @args) = @_;
+   warn "invalid arguments for '$sub'" if @args % 2 && $self->{verbose};
+   my $p = __PACKAGE__ . "::$sub";
+   my $func = eval "require $p; \\&${p}::run";
+   if($@) {
+      warn "$@" if $self->{verbose};
+      return 1;
+   }
+   my $npp;
+   eval { $npp = sub { my ($content,$fn) = @_; &$func($content, $fn, @args) }; };
+   if($@) {
+      warn "$@" if $self->{verbose};
+      return 2;
+   }
+   $npp;
+}
+
+sub add($$;@) {
+   my ($self, $sub, @args) = @_;
+   my $npp = $self->_get_pp($sub, @args);
+   return $npp unless ref $npp;
+   push @{$self->{pp}}, $npp;
+   0;
+}
+
+sub notify(@) {
+   warn join "", @_;
+}
+
+sub lookup(%) {
+   my %a = @_;
+
+}
+
+
+=back
+
+=head2 VARIABLES
+
+=over 4
+
+=item @MINC - include-path for *.inc Files
+
+=cut
+
+our @MINC = split / /, Dzroutines;
+push @MINC, "." unless @MINC;
+
+=back
+
+=head2 EXPORT
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<GTM>, L<GTM::Perl>, L<GTM::GlobalTie>, L<GTM::Preprocessor::Cache>.
+
+L<Cac>, L<Cac::ObjectScript>, L<Cac::Global>, L<Cac::Routine>, L<Cac::Util>, L<Cac::Bind>.
+
+
+=head1 AUTHOR
+
+Stefan Traby, E<lt>stefan@hello-penguin.comE<gt> L<http://www.hello-penguin.com/gtm-perl>
+
+=head1 COPYRIGHT AND LICENSE
+
+ Copyright (C) 2004 by Stefan Traby <stefan@hello-penguin.com>
+ Copyright (C) 2004 by KW-Computer Ges.m.b.H., Graz, Austria
+
+This library is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License (GPL).
+
+In addition to this license
+
+    Sanchez Computer Associates, Inc.
+    40 Valley Stream Parkway
+    Malvern, PA 19355, USA
+
+has the non-exclusive right to do what ever they want
+with this code.
+
+=cut
+
+1;
+__END__
Index: sr_perl/GTM/lib/GTM/Perl.pod
===================================================================
--- sr_perl/GTM/lib/GTM/Perl.pod	(revision 0)
+++ sr_perl/GTM/lib/GTM/Perl.pod	(revision 45)
@@ -0,0 +1,393 @@
+=head1 NAME
+
+GTM::Perl - Documentation for the GT.M side of Perl support
+
+=head1 SYNOPSIS
+
+  s x=$ZPERLEVAL("string")
+  s x=$ZPERLCALL("func"|subref [,args [,args]])
+  s x=$ZPERLMETHOD("static-class"|objref, "methodname" [,args [,args]])
+  s x=$ZPERLUNREF(ref)
+  s x=$ZPERLSCALAR(ref)
+  s x=$ZPERLTYPE(ref)
+  s x=$ZPERLICONV("internal-charset,external-charset")
+
+=head1 DESCRIPTION
+
+This is a short reference for using Perl within GT.M
+
+=head2 FUNCTIONS
+
+All Perl call-out stuff is handled by functions that are named $ZPERL*.
+
+=over 4
+
+=item S res=$ZPERLICONV("internal-charset,external-charset")
+
+Queries (and optionally sets) the charset-conversion between GT.M and Perl.
+To query the charset use:
+
+  S conversion=$ZPERLICONV("")
+
+conversion contains internal-charset and external-charset separated
+by ",". If iconv is disabled, an empty string is returned.
+
+To disable iconv use:
+
+  S conversion=$ZPERLICONV(",")
+
+conversion should contain an empty string after that.
+
+Note: The available conversions and their naming depend heavily on
+operating-system and/or C-library. For Linux, you can list
+the available charsets by invoking
+
+  iconv --list
+
+on the shell-prompt.
+This is a feature of UNIX98 and SuS specification.
+You should not hard-code the charset-names.
+
+You can explicitly override the charset-conversion for "PerlArray"
+I/O in the future. "ICONV" I/O parameter is already reserved for
+this but it's not activated at moment.
+
+Here a short session:
+
+  GTM-PERL>w $ZPERLICONV("")
+  
+  GTM-PERL>w $ZPERLICONV("utf-8,ucs2")
+  utf-8,ucs2
+  GTM-PERL>w $ZPERLICONV("")          
+  utf-8,ucs2
+  GTM-PERL>w $ZPERLICONV(",")
+  
+  GTM-PERL>
+
+Note: character conversation is not always possible, here some reasons:
+
+   a) a character in the source string is not available in the destination character set
+   b) a byte in the source string is invalid in source character set
+   c) the input-byte-stream stops at in the middle of a multi-byte character
+   d) the output-buffer is too small (we already reserve a lot)
+
+In such cases a error like:
+
+   %GTM-E-PERLICONV, Iconv conversion error:  iconv-PANIC: rc=-1 in-left=1 out-left=15 errno=22: Invalid argument
+
+may appear (this was case b).
+
+=item S var=$ZPERLEVAL("string")
+
+Evaluates a Perl expression and returns the result in "var".
+If the result is a Perl reference it must be freed later by
+using $ZPERLUNREF(var).
+
+To be safe (if you don't know what you get and you want to
+drop the result) write something like:
+
+ Set tmp=$ZPERLEVAL(unknown) If $L($ZPERLSCALAR(tmp)),$ZPERLUNREF(tmp)
+
+=item S res=$ZPERLCALL("func"|subref [,args [,args]])
+
+Calls a Perl function in scalar context and returns the result.
+Do not forget to free the result using $ZPERLUNREF(res) if it's
+a reference.
+You can specify the name of the function as in:
+
+  S res=$ZPERLCALL("Package::Function",[args...])
+
+or you can pass a subroutine reference to $ZPERLCALL, here
+a complete example:
+
+   S subref=$ZPERLEVAL("sub { $_[0] + $_[1] }")
+   S res=$ZPERLCALL(subref,2,3)
+   W res,!
+   I $ZPERLUNREF(subref)
+
+ [this is the point where it should make click right in the center of your head
+  If you get this, you got it! Elvis lives!! :)]
+
+=item S res=$ZPERLMETHOD("static-class"|objref, "methodname" [,args [,args]])
+
+Calls a Perl method. You can either specify a class name (for static methods)
+or pass an object reference for virtual methods.
+
+=item S stupid=$ZPERLSCALAR(ref)
+
+Returns the scalar representation of the reference that ref contains -
+or an empty string if it doesn't contain a Perl reference at all.
+
+This should make the story more clear:
+
+  GTM-PERL>Set scalarref=$ZPERLEVAL("\'GT.M is cool.'") Write $ZPERLSCALAR(scalarref)
+  SCALAR(0x82b2d4c)
+  GTM-PERL>Set coderef=$ZPERLEVAL("sub{}") Write $ZPERLSCALAR(coderef)
+  CODE(0x82b2cec)
+  GTM-PERL>Set arrayref=$ZPERLEVAL("[]") Write $ZPERLSCALAR(arrayref)
+  ARRAY(0x81c71ec)
+  GTM-PERL>Set hashref=$ZPERLEVAL("{}") Write $ZPERLSCALAR(hashref)
+  HASH(0x81c748c)
+  GTM-PERL>Set refref=$ZPERLEVAL("\{}") Write $ZPERLSCALAR(refref)
+  REF(0x81726c0)
+  GTM-PERL>Set obj=$ZPERLEVAL("use Math::BigInt; new Math::BigInt(123456790 x 8) * 9") Write $ZPERLSCALAR(obj)
+  1111111111111111111111111111111111111111111111111111111111111111111111110
+  GTM-PERL>Set ref=$ZPERLEVAL("[]") S dummy=$ZPERLUNREF(ref) W $ZPERLSCALAR(ref)
+  DEAD PERL REFERENCE (It's dead Jim.)
+  GTM-PERL>Write $ZPERLSCALAR("nix da.")
+  
+  GTM-PERL>
+
+=item S type=$ZPERLTYPE(ref)
+
+Returns the type of the reference that ref contains -
+or an empty string if it doesn't contain a Perl reference at all.
+
+Example:
+
+  GTM-PERL>Set scalarref=$ZPERLEVAL("\'GT.M is cool.'") Write $ZPERLTYPE(scalarref)
+  SCALAR
+  GTM-PERL>Set coderef=$ZPERLEVAL("sub{}") Write $ZPERLTYPE(coderef)
+  CODE
+  GTM-PERL>Set arrayref=$ZPERLEVAL("[]") Write $ZPERLTYPE(arrayref)
+  ARRAY
+  GTM-PERL>Set hashref=$ZPERLEVAL("{}") Write $ZPERLTYPE(hashref)
+  HASH
+  GTM-PERL>Set refref=$ZPERLEVAL("\{}") Write $ZPERLTYPE(refref)
+  REF
+  GTM-PERL>Set obj=$ZPERLEVAL("use Math::BigInt; new Math::BigInt(123456790 x 8) * 9") Write $ZPERLTYPE(obj)
+  Math::BigInt
+  GTM-PERL>Set ref=$ZPERLEVAL("[]") S dummy=$ZPERLUNREF(ref) W $ZPERLTYPE(ref)
+  DEAD PERL REFERENCE (It's dead Jim.)
+  GTM-PERL>Write $ZPERLTYPE("nix da.")
+  
+  GTM-PERL>
+
+=item S zero=$ZPERLUNREF(ref)
+
+Frees a reference stored in variable ref.
+$ZPERLEVAL()/$ZPERLCALL()/$ZPERLMETHOD may return references which should be
+freed using this function.
+
+=back
+
+=head2 Mumps I/O support to Perl Arrays
+
+You can use Perl-Arrays for I/O.
+I chose the "PERLARRAY" I/O namespace for this.
+If you open an array read-only it must exists prior open.
+
+The following OPEN-parameters are supported (you can change them also with USE):
+
+  ZPUSH  (default) -> append to the array on WRITE
+  ZUNSHIFT         -> insert at array begin on WRITE
+  ZSHIFT (default) -> shifts the array on READ
+  ZPOP             -> pops the array on READ
+  ICONV            -> to override global iconv settings (currently NOT supported/activated)
+
+Here an example code:
+
+  S a="@array"
+  O a:(ZPUSH:ZSHIFT)::"PerlArray"
+  U a W "one" W "two" W "three",! U 0
+  C a
+  w $ZPERLEVAL("use Data::Dumper; Dumper \@array")
+
+It writes:
+
+  $VAR1 = [
+           'one',
+           'two',
+           'three',
+           undef
+ 
+        ];
+
+
+=head1 BUGS
+
+All bugs are guaranteed hardcoded - at different levels of indirection
+I took care about that... :)
+
+Hmm, ok, I confess that $ZPERLICONV(...) is overloaded.
+If you backup the setting by
+
+ Set oldiconv=$ZPERLICONV("")
+
+and you want to restore it you have to use:
+
+ I $ZPERLICONV($SELECT($LENGTH(oldiconv):oldiconv,1:","))
+
+which has the coolness-factor of american beer.
+
+From the line below this is a kind of diary, questions that
+comes up when looking at GT.M code.
+
+I basically like that code and I want to contribute.
+I'm just a bit sarcastic. :)
+
+Humor, you understand - but sometimes with _very_ serious background, ok?
+
+     Syn: Wit; satire; pleasantry; temper; disposition; mood;
+          frame; whim; fancy; caprice. See {Wit}.
+          [1913 Webster]
+
+Hi friends at Intersystems, look at GT.M source - they
+are getting transactions right!
+
+Working with GT.M instead of Cache is a quality upgrade which
+greatly improves my productivity and the security of our
+products. google for "libcacheglibcwrapper".
+
+ ------------------------------------------------------------------
+
+First I want to greet (hello world!) the funny guy at Sanchez who is responsible
+for "UNIX98 vendor extensions" like that:
+
+  typedef enum
+  {
+          NO_XLAT = 0,
+          EBCDIC_TO_ASCII,
+          ASCII_TO_EBCDIC
+  } gtm_iconv_t;
+  #define iconv_t gtm_iconv_t
+
+Hey, boy, I definitely want to smoke the same stuff !!
+
+What the hell..
+
+... that's impressive. I always thought that the iconv
+code in glibc written by Ulrich Drepper is heavily bloated.
+
+If you stop playing battleship combat with ANSI/SuS/UNIX98
+definitions, I can remove the first line of:
+
+  #undef iconv_t /* READ. THINK. - linus at the kernel mailinglist */
+  #include <iconv.h>
+
+in my gtm_perl.h.
+
+Hey, tell me the truth, I *know* there are two senior software engineers
+within Sanchez Area 51 software development center who really play ANSI/SuS
+battleship combat.
+
+I can hear them:
+
+ malloc()  - hit, overwritten
+ free()    - strike, overwritten
+ stdarg.h  - miss
+ iconv_t   - hit, redefined!!
+
+These two senior software engineers - let's call them Fred and Barney -
+are happy now because the got the magic line:
+
+ #define MAX_STRLEN                      (1 * 1024 * 1024)  /*maximum GT.M string size (1 MB)*/
+ 
+into mdef.h.
+
+Wow, a small step into the include file, what a big step for mankind!
+
+Hey, Barney, I suggest to increase the magic limit to (1 * 1024 * 1024 + 42).
+
+Why? For the same reason Fred choosed (1 * 1024 * 1024).
+
+There is no reason for his choice. It makes simply no sense.
+The fun of arbitrary limits is that they are, well, arbitrary.
+Period.
+
+
+Or did I miss something?
+
+
+Your core-dump writer code is really cool.
+You've just forgotten to include the gdb macros that remove the
+unusable SIGILL-handler call-frame and restore the real call-frame
+of the real exception.
+
+
+Is it really true that your generic I/O layer doesn't pass the filename
+to the device-dependent open functions? ooops? :)
+
+
+Here, for reference, the full content of gcc 3.3.3 varargs.h:
+
+  #ifndef _VARARGS_H
+  #define _VARARGS_H
+  
+  #error "GCC no longer implements <varargs.h>."
+  #error "Revise your code to use <stdarg.h>."
+  
+  #endif
+
+
+I'm going to ask the gcc steering committee (hi Marc!) to modify the error
+message to:
+
+  #error "Revise your (or Sanchez) code to use <stdarg.h>."
+
+
+
+Hmm, there is one additional area which caused me pain.
+Pseudo security.
+
+My notebook has 2GB RAM. I build GT.M within /dev/shm.
+MDEFAULT.o, Barney your cool plan?
+What's the idea behind:
+
+      if ((plen.p.pblk.b_dir >= sizeof("/dev/") - 1) && !MEMCMP_LIT(source_file_name, "/dev/"))
+              tt_so_do_once = TRUE;
+
+What I did?
+Well, first I tried to break your pseudo-security stuff.
+
+  mount -obind /dev /tmp/dev
+
+and I was able to write nicely into /dev.
+
+You can imagine what I did next.
+
+
+I try to follow tradition (not indent) of GT.M.
+Yes, I was really so stupid to put the perl-array I/O stuff
+in 13 different files. I really noted my stupidity (follow the leader)
+long after finishing the work on it. It's somewhat braindead.
+
+
+I was faster with thinking when I wrote "<" instead of ">" when
+checking stringpool.
+I think it's really better to use:
+
+  #  define SP_NEED(X)  do { if (stringpool.free + (X) > stringpool.top) stp_gcol(X); \
+                           } while(0)
+
+
+=head1 SEE ALSO
+
+L<GTM>, L<GTM::GlobalTie>, L<GTM::Preprocessor>, L<GTM::Preprocessor::Cache>
+
+or look at my "old" Cac modules:
+
+L<Cac>, L<Cac::ObjectScript>, L<Cac::Global>, L<Cac::Routine>, L<Cac::Util>, L<Cac::Bind>.
+
+=head1 AUTHOR
+
+Stefan Traby, E<lt>stefan@hello-penguin.comE<gt> L<http://www.hello-penguin.com/gtm-perl>
+
+=head1 COPYRIGHT AND LICENSE
+
+ Copyright (C) 2004 by Stefan Traby <stefan@hello-penguin.com>
+ Copyright (C) 2004 by KW-Computer Ges.m.b.H., Graz, Austria
+
+This library is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License (GPL).
+
+In addition to this license
+
+    Sanchez Computer Associates, Inc.
+    40 Valley Stream Parkway
+    Malvern, PA 19355, USA
+
+has the non-exclusive right to do what ever they want
+with this code.
+
+=cut
Index: sr_perl/GTM/lib/GTM/Preprocessor/Cache.pm
===================================================================
--- sr_perl/GTM/lib/GTM/Preprocessor/Cache.pm	(revision 0)
+++ sr_perl/GTM/lib/GTM/Preprocessor/Cache.pm	(revision 45)
@@ -0,0 +1,139 @@
+package GTM::Preprocessor::Cache;
+
+use 5.006;
+use strict;
+use warnings;
+
+use GTM::Preprocessor ':filter';
+
+our @ISA = (GTM::Preprocessor::);
+
+our $VERSION = '0.01';
+
+=head1 NAME
+
+GTM::Preprocessor::Cache - A preprocessor-backend that emulates some preprocessor features of Cache
+
+=head1 SYNOPSIS
+
+This is a backend module, use it only indirect by invoking the add
+method of GTM::Preprocessor
+
+=head1 DESCRIPTION
+
+GTM::Preprocessor::Cache is a preprocessor-backend
+that handles the following directives:
+
+ #include FILE
+ #define A B
+ #define Z(%a) X(%a)
+
+It should be compatible to the preprocessor provided by Intersystems
+Cache for the stuff it supports - if not, drop me a note :)
+
+=cut
+
+sub run($$@) {
+   my($content, $filename, @args) = @_;
+   my %macros;
+   my %includes; # tracks about includes - avoid recursion...
+   my @lines = split /\n/, $content;
+   my @out;
+   my @margs;
+   local $_;
+
+LINE:
+   while ($_ = shift @lines) {
+      if( /^\#\s*include\s+([a-z0-9%][a-z0-9]*)/i) {
+            my $inc = $1;
+            if($includes{$inc}++) {
+               notify "'$inc' already included - ignoring directive";
+               next LINE;
+            }
+            unshift @lines, lookup(basename => $inc, extension => "inc");
+            next LINE;
+      }
+      if( /^\#\s*define\s+/g) {
+         # ok, it should be a macro, lets see...
+         if(m/\G([a-z0-9%][a-z0-9]*) # name of macro
+                                               # if args, opening "(" must follow without whitespace
+            (?{ @margs = () })                 # initialize argument-array...
+            (?:                                # the whole argument-stuff is optional...
+                \(                             # match opening  "("
+                    (?:
+                      (?:
+                        \s*
+                          (\%[a-z0-9]+)              # the name of arg.
+                             (?{ push @margs, $^N }) # save it.
+                        \s*
+                      )*
+            #          (?= [,\)])                  # closing ")" or "," must follow)
+                     ,?                          # eat ","
+                    )*
+                \)                             # match closing ")"
+                \s+                            # separate from content
+            )?
+            (.*)                               # eat body (if body!)
+            /xi) {
+            warn "NEW macro: name='$1' argc='".scalar(@margs)."' args='".join('|', @margs)."' body='$3'\n";
+         } else {
+            warn "illegal macro specification.\n"
+         }
+      } 
+      push @out, $_;
+   } 
+   return join "\n", @out;
+}
+
+=head2 EXPORT
+
+Nothing is exported at all by all GTM::Preprocessor backend modules...
+
+=head1 BUGS
+
+We are not fully Cache compatible, for example, Cache (5.0.5) hangs forever
+if you have the following input:
+
+ #define A "die"
+ #define A $$$A
+      W $$$A
+
+We do not try to emulate Cache endless loops.
+
+
+=head1 SEE ALSO
+
+
+L<GTM>, L<GTM::Preprocessor>, L<GTM::Perl>, L<GTM::GlobalTie>.
+
+Note that the L<GTM>-series of modules obsolete my "old" L<Cac> framework which
+had the following packages:
+
+L<Cac>, L<Cac::ObjectScript>, L<Cac::Global>, L<Cac::Routine>, L<Cac::Util>, L<Cac::Bind>.
+
+
+=head1 AUTHOR
+
+Stefan Traby, E<lt>stefan@hello-penguin.comE<gt> L<http://www.hello-penguin.com/gtm-perl>
+
+=head1 COPYRIGHT AND LICENSE
+
+ Copyright (C) 2004 by Stefan Traby <stefan@hello-penguin.com>
+ Copyright (C) 2004 by KW-Computer Ges.m.b.H., Graz, Austria
+
+This library is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License (GPL).
+
+In addition to this license
+
+    Sanchez Computer Associates, Inc.
+    40 Valley Stream Parkway
+    Malvern, PA 19355, USA
+
+has the non-exclusive right to do what ever they want
+with this code.
+
+=cut
+
+1;
+__END__
Index: sr_perl/GTM/lib/GTM/GlobalTie.pm
===================================================================
--- sr_perl/GTM/lib/GTM/GlobalTie.pm	(revision 0)
+++ sr_perl/GTM/lib/GTM/GlobalTie.pm	(revision 45)
@@ -0,0 +1,138 @@
+package GTM::GlobalTie;
+
+use 5.006;
+use strict;
+use warnings;
+
+require Exporter;
+
+use GTM ':global';
+
+our @ISA = qw(Exporter GTM);
+
+our %EXPORT_TAGS = (
+);
+
+$EXPORT_TAGS{'all'} = [  ];
+
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'}, });
+
+our @EXPORT = qw( );
+
+our $VERSION = '0.01';
+
+sub TIEHASH {
+   my $class = shift;
+   #warn "tie: ",join ",",@_;
+   bless [ @_ ], $class;
+}
+
+sub EXISTS {
+   my ($self, $key) = @_;
+   defined g_get(@{$self}, $key);
+}
+
+sub DELETE {
+   my ($self, $key) = @_;
+   #my $old_val = g_get(@{$self}, $key);
+   g_xkill @{$self}, $key;
+   #$old_val;
+}
+
+sub FETCH {
+   my($self, $key) = @_;
+   #warn "FETCH: ", join ",", @{$self}, $key;
+   my $val = g_get @{$self}, $key;
+   $val;
+}
+
+sub CLEAR {
+   my $self = shift;
+   g_kill @{$self};
+}
+
+
+sub STORE {
+   my($self, $key, $val) = @_;
+   #warn "STORE: ",join ",",  @{$self}, $key, $val;
+   g_set @{$self}, $key, $val;
+   $key;
+}
+
+sub FIRSTKEY {
+      my $self = shift;
+      #warn "FIRSTKEY: ", join ",",  @{$self};
+      g_order @{$self}, "";
+}
+
+sub NEXTKEY {
+      my($self, $lastkey) = @_;
+      #warn "NEXTKEY: ", join ",", @{$self}, $lastkey;
+      g_order @{$self}, $lastkey;
+}
+
+
+=head1 NAME
+
+GTM::GlobalTie - Ties a Global to a Perl Hash
+
+=head1 SYNOPSIS
+
+  use GTM::GlobalTie;
+
+  my $limit = $ARGV[0] || 1000;
+  tie %primes, GTM::GlobalTie, "primes";
+  %primes = ();
+  $primes{$_} = 1 for(2..$limit);
+  for my $i (keys %primes) {
+     for (my $j = $i*$i; $j <= $limit; $j += $i)  {
+         delete $primes{$j};
+     }
+  }
+  my $count = scalar keys %primes;
+  %primes = ();
+  print "$count Primes up to $limit\n";
+
+
+=head1 DESCRIPTION
+
+GTM::GlobalTie allows you to access globals
+through a tied perl hash.
+
+=head1 BUGS
+
+delete $global{xx} does not return the value of "xx" for performance reasons so be
+careful.
+
+=head1 SEE ALSO
+
+L<GTM>, L<GTM::Perl>, L<GTM::Preprocessor>, L<GTM::Preprocessor::Cache>.
+
+L<Cac>, L<Cac::ObjectScript>, L<Cac::Global>, L<Cac::Routine>, L<Cac::Util>, L<Cac::Bind>.
+
+
+=head1 AUTHOR
+
+Stefan Traby, E<lt>stefan@hello-penguin.comE<gt> L<http://www.hello-penguin.com/gtm-perl>
+
+=head1 COPYRIGHT AND LICENSE
+
+ Copyright (C) 2004 by Stefan Traby <stefan@hello-penguin.com>
+ Copyright (C) 2004 by KW-Computer Ges.m.b.H., Graz, Austria
+
+This library is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License (GPL).
+
+In addition to this license
+
+    Sanchez Computer Associates, Inc.
+    40 Valley Stream Parkway
+    Malvern, PA 19355, USA
+
+has the non-exclusive right to do what ever they want
+with this code.
+
+=cut
+
+1;
+__END__
Index: sr_perl/GTM/MANIFEST
===================================================================
--- sr_perl/GTM/MANIFEST	(revision 0)
+++ sr_perl/GTM/MANIFEST	(revision 45)
@@ -0,0 +1,17 @@
+Changes                            Unused Changes file
+Makefile.PL                        Makefile generator
+MANIFEST                           This MANIFEST
+MANIFEST.SKIP                      MANIFEST exclude patterns
+README                             README of distribution
+t/01_load.t                        minimal test that just does "use GTM";
+t/02_sysvar.t                      test the access to GT.M system variables
+t/03_preprocessor.t
+t/04_perlioav.t
+t/05_globals.t
+t/06_tie.t
+lib/GTM.pm                         main file
+lib/GTM/Preprocessor.pm            The Preprocessor frontend module
+lib/GTM/Preprocessor/Cache.pm      Cache compatible preprocessor backend
+lib/GTM/GlobalTie.pm               Tie a global to a perl-hash
+lib/GTM/Perl.pod                   Documentation about using Perl within GT.M
+META.yml                                 Module meta-data (added by MakeMaker)
Index: sr_perl/GTM/Makefile.PL
===================================================================
--- sr_perl/GTM/Makefile.PL	(revision 0)
+++ sr_perl/GTM/Makefile.PL	(revision 45)
@@ -0,0 +1,94 @@
+use 5.006;
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+
+unless ($ENV{gtm_dist}) {
+   die <<EOF;
+This modules requires a Perl-enabled GT.M installation
+and expects the environment variable "gtm_dist" pointing to it.
+
+If you successfully installed a Perl-enabled GT.M you maybe
+just forgot to set "gtm_dist".
+
+The official home of GT.M Perl is:
+http://gtm-perl.hello-penguin.com/
+The official GT.M page can be found at:
+http://sanchez-gtm.sf.net/
+
+EOF
+}
+
+WriteMakefile(
+    NAME              => 'GTM',
+   'dist'             => {
+                           PREOP => 'chown -R root.root .; chmod -R u=rwX,go=rX . ;',
+                           COMPRESS => 'gzip -9v',
+                           SUFFIX   => '.gz',
+                           DIST_DEFAULT=> 'predist',
+                         },
+    VERSION_FROM      => 'lib/GTM.pm', 
+    PREREQ_PM         => { 'Convert::Scalar' => "0.1e",
+                         },
+    ($] >= 5.005 ?     
+      (ABSTRACT_FROM  => 'lib/GTM.pm', # retrieve abstract from module
+       AUTHOR         => 'Stefan Traby  <stefan@hello-penguin.com>') : ()),
+       PM             => {
+                           'lib/GTM.pm' => '$(INST_LIBDIR)/GTM.pm',
+                           'lib/GTM/GlobalTie.pm' => '$(INST_LIBDIR)/GTM/GlobalTie.pm',
+                           'lib/GTM/Preprocessor.pm' => '$(INST_LIBDIR)/GTM/Preprocessor.pm',
+                           'lib/GTM/Preprocessor/Cache.pm' => '$(INST_LIBDIR)/GTM/Preprocessor/Cache.pm',
+                         },
+       MAN3PODS       => { 'lib/GTM.pm' => '$(INST_MAN3DIR)/GTM.3pm',
+                           'lib/GTM/Perl.pod' => '$(INST_MAN3DIR)/GTM::Perl.3pm',
+                           'lib/GTM/GlobalTie.pm' => '$(INST_MAN3DIR)/GTM::GlobalTie.3pm',
+                           'lib/GTM/Preprocessor.pm' => '$(INST_MAN3DIR)/GTM::Preprocessor.3pm',
+                           'lib/GTM/Preprocessor/Cache.pm' => '$(INST_MAN3DIR)/GTM::Preprocessor::Cache.3pm',
+                         },
+);
+
+sub MY::postamble {
+"
+# importver patches the version for correct subversion build-#
+
+importver : svnrev=\$(shell svn info|sed -e 's/^Revision:[ \t]*//p;d')
+importver : cursvnrev=\$(shell perl -ne 'if (m/^\\s*(?:our\\s+)?\\s*\\\$\$VERSION\\s*=\\s*\"[^_]+_(\\d+)\"/) { print \$\${1};  0 };' \$(VERSION_FROM))
+importver:
+	echo \$(svnrev)
+	echo \$(cursvnrev)
+	false
+
+   
+setver: importver
+        \$(PERL) -pi -e 's/^(\\s*(?:our)?\\s*\\\$\$VERSION\\s*=\\s*).*\$\$/\$\${1}\$(VERSION);/' } \$\$(find . -iname \"*.pm\")
+
+predist:  setver
+	pod2text lib/GTM.pm >README
+	\$(MAKE) tardist
+
+_html:                     
+	d=\$\$PWD; \\
+	t=/var/www/gtm-perl/doc; \\
+	for i in ./lib/*.pm ./lib/GTM/*.pm ./lib/GTM/*.pod ./lib/GTM/Preprocessor/*.pm ; do \\
+	mkdir -p \"\$\$t\"/\$\$(dirname \"\$\$i\") && \\
+	o=\"\$\$t\"/\$\$(dirname \"\$\$i\")/\$\$(basename \$\$i|sed -e s/.pm\$\$/.html/) ; \\
+	o=\"\$\$t\"/\$\$(basename \$\$i|sed -e s/.pm\$\$/.html/) ; \\
+		pod2html --podpath 'lib/.:lib/GTM' \\
+			--infile \"\$\$i\" \\
+			--outfile \"\$\$o\" && \\
+	\$(PERL) -pi -e 's|href=\"/./blib/lib/GTM/|href=\"|g'  \"\$\$o\" && \\
+	\$(PERL) -pi -e 's|href=\"/./GTM/|href=\"|g'  \"\$\$o\" && \\
+	\$(PERL) -pi -e 's|href=\"/lib/./|href=\"|g'  \"\$\$o\" && \\
+	\$(PERL) -pi -e 's|href=\"/\\./GTM\\.|href=\"GTM.|g' \"\$\$o\" ; \\
+	\$(PERL) -pi -e 's|href=\"GTM/|href=\"|g' \"\$\$o\" ; \\
+	done && \\
+	chmod  444 \"\$\$t\"/* ; \\
+	mv \"\$\$t\"/Perl.pod \"\$\$t\"/Perl.html
+
+_clean:
+	find . -iname '*~' -print0|xargs -0r rm -f
+	find . -iname '*.html' -print0|xargs -0r rm -f
+	find . -iname '*.tmp' -print0|xargs -0r rm -f
+	rm -rf ./html
+"
+}
Index: sr_perl/GTM/Changes
===================================================================
--- sr_perl/GTM/Changes	(revision 0)
+++ sr_perl/GTM/Changes	(revision 45)
@@ -0,0 +1,11 @@
+Revision history for Perl extension GTM.
+
+     Note: this Changes file is NOT maintained -
+           all Changes are listed in ChangeLog of
+           the GT.M-Perl distribution. - oesi
+
+
+0.01  Wed Apr  7 15:03:51 2004
+	- original version; created by h2xs 1.23 with options
+		-A -X -b 5.6.0 -c -n GTM
+
Index: sr_perl/GTM/MANIFEST.SKIP
===================================================================
--- sr_perl/GTM/MANIFEST.SKIP	(revision 0)
+++ sr_perl/GTM/MANIFEST.SKIP	(revision 45)
@@ -0,0 +1,9 @@
+^\.svn/
+/\.svn
+^.*.swp$
+/\.*.swp$
+.*\~$
+^blib/
+^pm_to_blib
+^Makefile
+.*tar\.gz$
Index: sr_perl/GTM/README
===================================================================
--- sr_perl/GTM/README	(revision 0)
+++ sr_perl/GTM/README	(revision 45)
@@ -0,0 +1,255 @@
+NAME
+    GTM - Perl extension for accessing GT.M
+
+SYNOPSIS
+      use GTM ":all";
+      use GTM qw(:sysvar :trans);
+
+      embed GT.M within Perl
+  
+DESCRIPTION
+    The GTM module embeds GT.M in Perl.
+
+FUNCTIONS
+    This section gives you an overview over all functions that are provided
+    by this module.
+
+    They are ordered by sections, all functions within a section are
+    accessible by an export-tag.
+
+  Accessing GT.M system variables (Export-Tag: ":sysvar")
+    All dollar variables ($test,$tlevel, etc.) are accessible by functions
+    with their name prepended by "D" - which means Dollar (a obsolete
+    currency still used by some degenerated countries).
+
+     Examples:  $test == Dtest
+                $horolog = Dhorolog
+            
+    If you want to set a sysvar, pass an argument. In any case they return
+    their (old) value.
+
+    Note that the documentation is - like the correspondending XS-part -
+    magically auto-generated :)
+
+    We use
+
+     void op_svget(int varnum, mval *v);
+     void op_svput(int varnum, mval *v);
+
+    in case you ask :)
+
+    $device = Ddevice()
+        Gets the $device variable
+
+    $ecode = Decode([$new])
+        Gets [ and optionally sets ] the $ecode variable
+
+    $estack = Destack()
+        Gets the $estack variable
+
+    $etrap = Detrap([$new])
+        Gets [ and optionally sets ] the $etrap variable
+
+    $horolog = Dhorolog()
+        Gets the $horolog variable
+
+    $io = Dio()
+        Gets the $io variable
+
+    $job = Djob()
+        Gets the $job variable
+
+    $key = Dkey()
+        Gets the $key variable
+
+    $principal = Dprincipal()
+        Gets the $principal variable
+
+    $prompt = Dprompt([$new])
+        Gets [ and optionally sets ] the $prompt variable
+
+    $quit = Dquit()
+        Gets the $quit variable
+
+    $reference = Dreference()
+        Gets the $reference variable
+
+    $stack = Dstack()
+        Gets the $stack variable
+
+    $storage = Dstorage()
+        Gets the $storage variable
+
+    $system = Dsystem([$new])
+        Gets [ and optionally sets ] the $system variable
+
+    $test = Dtest()
+        Gets the $test variable
+
+    $tlevel = Dtlevel()
+        Gets the $tlevel variable
+
+    $trestart = Dtrestart()
+        Gets the $trestart variable
+
+    $x = Dx([$new])
+        Gets [ and optionally sets ] the $x variable
+
+    $y = Dy([$new])
+        Gets [ and optionally sets ] the $y variable
+
+    $za = Dza()
+        Gets the $za variable
+
+    $zb = Dzb()
+        Gets the $zb variable
+
+    $zc = Dzc()
+        Gets the $zc variable
+
+    $zcmdline = Dzcmdline()
+        Gets the $zcmdline variable
+
+    $zcompile = Dzcompile([$new])
+        Gets [ and optionally sets ] the $zcompile variable
+
+    $zcstatus = Dzcstatus()
+        Gets the $zcstatus variable
+
+    $zdate_form = Dzdate_form([$new])
+        Gets [ and optionally sets ] the $zdate_form variable
+
+    $zdir = Dzdir([$new])
+        Gets [ and optionally sets ] the $zdir variable
+
+    $zeditor = Dzeditor()
+        Gets the $zeditor variable
+
+    $zeof = Dzeof()
+        Gets the $zeof variable
+
+    $zerror = Dzerror([$new])
+        Gets [ and optionally sets ] the $zerror variable
+
+    $zgbldir = Dzgbldir([$new])
+        Gets [ and optionally sets ] the $zgbldir variable
+
+    $zininterrupt = Dzininterrupt()
+        Gets the $zininterrupt variable
+
+    $zinterrupt = Dzinterrupt([$new])
+        Gets [ and optionally sets ] the $zinterrupt variable
+
+    $zio = Dzio()
+        Gets the $zio variable
+
+    $zjob = Dzjob()
+        Gets the $zjob variable
+
+    $zlevel = Dzlevel()
+        Gets the $zlevel variable
+
+    $zmaxtptime = Dzmaxtptime([$new])
+        Gets [ and optionally sets ] the $zmaxtptime variable
+
+    $zmode = Dzmode()
+        Gets the $zmode variable
+
+    $zpos = Dzpos()
+        Gets the $zpos variable
+
+    $zproc = Dzproc()
+        Gets the $zproc variable
+
+    $zroutines = Dzroutines([$new])
+        Gets [ and optionally sets ] the $zroutines variable
+
+    $zsource = Dzsource([$new])
+        Gets [ and optionally sets ] the $zsource variable
+
+    $zstatus = Dzstatus([$new])
+        Gets [ and optionally sets ] the $zstatus variable
+
+    $zstep = Dzstep([$new])
+        Gets [ and optionally sets ] the $zstep variable
+
+    $zsystem = Dzsystem()
+        Gets the $zsystem variable
+
+    $ztexit = Dztexit([$new])
+        Gets [ and optionally sets ] the $ztexit variable
+
+    $ztrap = Dztrap([$new])
+        Gets [ and optionally sets ] the $ztrap variable
+
+    $zversion = Dzversion()
+        Gets the $zversion variable
+
+    $zyerror = Dzyerror([$new])
+        Gets [ and optionally sets ] the $zyerror variable
+
+  Transaction support (Export-Tag: ":trans")
+    In addition to tstart()/tcommit()/trollback()/trestart(), Dtlevel() and
+    Dtrestart() are imported by ":trans", too.
+
+    They work in the same way as the Mumps versions, except that you can't
+    pass local M-variables to tstart and you specify SERIAL by a boolean
+    flag.
+
+    Well, I've not really tested these, but at least:
+
+       perl -MGTM=:trans -e 'tstart; print Dtlevel; tcommit; print Dtlevel'
+
+    prints "10", as expected. :)
+
+    tstart([$serial, $tid])
+        Start a transaction.
+
+    tcommit()
+        Commits a transaction.
+
+    trestart([$level])
+        Restarts a transaction.
+
+    trollback($levels)
+        Rolls a transaction back.
+
+  Accessing M-Code ":mcode"
+  EXPORT
+    Only unload_gtm() is exported. Call this function before you call
+    something like exec or _exit(). It calls gtm_exit() if and only if Perl
+    started GT.M. unload_gtm() is called automagically on Perl exit if and
+    only if Perl started GT.M.
+
+BUGS
+    We use the DynaLoader carefully and we try to locate libgtmperl
+    (formally libgtmshr) library by searching in $ENV{gtm_dist} first. It
+    should work even on VMS - please report if not. You may get something
+    like: Subroutine GTM::bootstrap redefined at
+    /usr/local/share/perl/5.8.3/GTM.pm line 40. when using $ZPERLEVAL(...)
+    in GT.M.
+
+SEE ALSO
+    Well, look at my "old" Cac modules, the GT.M series will get much better
+    :)
+
+    Cac, Cac::ObjectScript, Cac::Global, Cac::Routine, Cac::Util, Cac::Bind.
+
+AUTHOR
+     Stefan Traby, E<lt>stefan@hello-penguin.comE<gt>
+
+COPYRIGHT AND LICENSE
+     Copyright (C) 2004 by Stefan Traby <stefan@hello-penguin.com>
+     Copyright (C) 2004 by KW-Computer Ges.m.b.H., Graz, Austria
+
+    This library is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License (GPL).
+
+    In addition to this license
+
+        Sanchez Computer Associates, Inc.
+        40 Valley Stream Parkway
+        Malvern, PA 19355, USA
+
+    has the non-exclusive right to do what ever they want with this code.
+

Property changes on: sr_perl/GTM
___________________________________________________________________
Name: svn:ignore
   + *.tar.gz
*.tar.bz2
TAGS
*~
.*.swp
*.orig
*.rej
core
blib
pm_to_blib
Makefile
Makefile.old



Index: sr_perl/ioperlAV_close.c
===================================================================
--- sr_perl/ioperlAV_close.c	(revision 0)
+++ sr_perl/ioperlAV_close.c	(revision 45)
@@ -0,0 +1,37 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+#include <errno.h>
+
+#include "io.h"
+#include "io_params.h"
+#include "stringpool.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+
+void  ioperlAV_close(io_desc *device, mval *pp)
+{
+        assert(device != 0);
+
+	if (device->state == dev_open)
+	{
+                d_perlAV_struct *pav = (d_perlAV_struct *)device->dev_sp;
+                assert(pav != 0);
+                assert(pav->av != 0);
+                assert(pav->avname != 0);
+                pav->av = 0;
+                ioperlAV_iconv_destroy(pav);
+                device->state = dev_closed;
+	}
+	return;
+}
Index: sr_perl/ioperlAV_dataread.c
===================================================================
--- sr_perl/ioperlAV_dataread.c	(revision 0)
+++ sr_perl/ioperlAV_dataread.c	(revision 45)
@@ -0,0 +1,32 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+
+#include <errno.h>
+
+#include "gtm_unistd.h"
+#include "io_params.h"
+#include "io.h"
+#include "iombdef.h"
+#include "iotimer.h"
+#include "gt_timer.h"
+#include "gtmio.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+static	bool	out_of_time;
+void	ring_alarm2 (void);
+
+int	ioperlAV_dataread (int timeout)
+{
+        return TRUE;
+}
Index: sr_perl/ioperlAV_wtff.c
===================================================================
--- sr_perl/ioperlAV_wtff.c	(revision 0)
+++ sr_perl/ioperlAV_wtff.c	(revision 45)
@@ -0,0 +1,23 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+#include "io.h"
+#include "iottdef.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+error_def(ERR_PERLAVIORDONLY);
+
+void ioperlAV_wtff(void)
+{
+        return;
+}
Index: sr_perl/gtm_perl.c
===================================================================
--- sr_perl/gtm_perl.c	(revision 0)
+++ sr_perl/gtm_perl.c	(revision 45)
@@ -0,0 +1,75 @@
+/*
+ * (c) 2004 by Stefan Traby <stefan@hello-penguin.com>
+ * (c) 2004 by KW-Computer Ges.m.b.H, Austria
+ * GPL && Sanchez
+ */
+
+#include "mdef.h"
+#include "gtm_perl.h"
+
+EXTERN_C void xs_init(pTHXo);
+
+static PerlInterpreter *my_perl = 0;
+
+int gtm_perl_startup (void)
+{
+  if(!my_perl) {
+      char *embedding[] = { "", "-e", "use GTM;", 0 };
+      my_perl = perl_alloc ();
+      if(!my_perl)
+          return 1;
+      PL_perl_destruct_level = 1;
+      perl_construct (my_perl);
+      perl_parse(my_perl, xs_init, 3, embedding, 0);
+      perl_run (my_perl);
+      gtm_perl_initialized = 1;
+  }
+  return 0;
+}
+
+/* this can cause trouble, hey, it's perl */
+void gtm_perl_shutdown (void)
+{
+
+  if(my_perl) {
+      PL_perl_destruct_level = 1;
+      perl_destruct (my_perl);
+      perl_free (my_perl);
+      my_perl = 0;
+      gtm_perl_initialized = 0;
+  }
+}
+
+#include <unistd.h>
+#include <termios.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+
+
+static int tty_fd = -1;
+static struct termios tio;
+
+void cac_tty_save(void)
+{
+  if(tty_fd == -1) {
+       char buf[512];
+       if(!ttyname_r(0, buf, 511)) {
+         tty_fd = open(buf, O_RDWR);
+         if(tty_fd != -1)
+           fcntl(tty_fd, F_SETFD, FD_CLOEXEC); /* we don't care */
+       }
+                   }
+       if(tty_fd != -1) {
+           ioctl(tty_fd, TCGETS, &tio);
+       }
+}
+
+void cac_tty_restore(void)
+{
+  if(tty_fd != -1) {
+      ioctl(tty_fd, TCSETSW, &tio);
+      ioctl(tty_fd, TCFLSH, 0);
+  }
+}
Index: sr_perl/op_fnzperliconv.c
===================================================================
--- sr_perl/op_fnzperliconv.c	(revision 0)
+++ sr_perl/op_fnzperliconv.c	(revision 45)
@@ -0,0 +1,180 @@
+/****************************************************************
+ *      Copyright 2001 Sanchez Computer Associates, Inc.        *
+ *      Copyright 2004 KW-Computer Ges.m.b.H.                   *
+ *      This source code contains the intellectual property     *
+ *      of its copyright holder(s), and is made available       *
+ *      under a license.  If you do not know the terms of       *
+ *      the license, please stop and do not read further.       *
+ *                                                              *
+ ****************************************************************/
+
+#include "mdef.h"
+#include "stringpool.h"
+#include "gtm_op.h"
+#include "gtm_perl.h"
+
+GBLREF spdesc stringpool;
+
+/*
+ * -----------------------------------------------
+ * op_fnzperliconv()
+ * queries and sets the global iconv support for communication between Perl and GT.M
+ *
+ * Arguments:
+ *	src	- Pointer to Source string mval
+ *	dst	- Pointer to return value of perl
+ *
+ * Return:
+ *	none
+ * -----------------------------------------------
+ */
+
+
+GBLDEF  char * gtm_perl_external_charset = 0;
+GBLDEF  char * gtm_perl_internal_charset = 0;
+GBLDEF iconv_t gtm_perl_import_iconv = 0;
+GBLDEF iconv_t gtm_perl_export_iconv = 0;
+GBLDEF char *gtm_perl_iconv_buf = 0;       /* this one grows as we need */
+GBLDEF size_t gtm_perl_iconv_buf_size = 0;
+GBLDEF char iconv_errorstr[2048];
+
+static void try_iconv_open(mstr *spec, iconv_t *import, iconv_t *export, char **i_intern, char **i_extern)
+{
+  const char *p, *q, *sep, *last;
+  int len, i;
+  char *int_name;
+  char *ext_name;
+  iconv_t imp;
+  iconv_t exp;
+
+  len = i = spec->len;
+  p = q = spec->addr;
+  sep = 0;
+  last = &p[len - 1];
+  
+  while(i--) {
+    if(*q == ',') {
+      if(sep) {
+        return;
+      }
+      sep = q;
+      if(sep == p || last - sep < 2) {
+        return;
+      }
+    }
+    q++;
+  }
+  if(!sep)
+    return;
+  int_name = malloc(sep - p + 1);
+  memcpy(int_name, p, sep - p);
+  int_name[sep - p] = 0;
+  sep++;
+  ext_name = malloc(last - sep + 2);
+  memcpy(ext_name, sep, last - sep + 1);
+  ext_name[last - sep + 1] = 0;
+  imp = iconv_open(ext_name, int_name);
+  exp = iconv_open(int_name, ext_name);
+  if(imp == (iconv_t) -1 || exp == (iconv_t) -1) {
+    /* maybe one direction worked - it's possible in theory */
+    if(imp != (iconv_t) -1)
+      iconv_close(imp);
+    if(exp != (iconv_t) -1)
+      iconv_close(exp);
+    free(ext_name);
+    free(int_name);
+    return;
+  }
+  /* success */
+  *import = imp;
+  *export = exp;
+  *i_intern = int_name;
+  *i_extern = ext_name;
+
+}
+
+static void iconv_tell(mstr *str)
+{
+  int len = ((gtm_perl_external_charset) ? strlen(gtm_perl_external_charset) : 0)
+        +   ((gtm_perl_internal_charset) ? strlen(gtm_perl_internal_charset) : 0)
+        + 1;
+  char *p;
+
+  if(len > 1) {
+        SP_NEED(len);
+        p = str->addr = (char *) stringpool.free;
+        stringpool.free += len;
+        str->len = len;
+
+        if(gtm_perl_internal_charset) {
+                memcpy(p, gtm_perl_internal_charset, strlen(gtm_perl_internal_charset));
+                p += strlen(gtm_perl_internal_charset);
+        }
+        *p++ = ',';
+        if(gtm_perl_external_charset) {
+                memcpy(p, gtm_perl_external_charset, strlen(gtm_perl_external_charset));
+        }
+  } else {
+    str->len = 0;
+  }
+}
+
+static void iconv_disable(void)
+{
+     if(gtm_perl_import_iconv)
+        iconv_close(gtm_perl_import_iconv);
+     if(gtm_perl_export_iconv)
+        iconv_close(gtm_perl_export_iconv);
+     if(gtm_perl_internal_charset)
+        free(gtm_perl_internal_charset);
+     if(gtm_perl_external_charset)
+        free(gtm_perl_external_charset);
+
+     gtm_perl_external_charset = 0;
+     gtm_perl_internal_charset = 0;
+     gtm_perl_import_iconv = 0;
+     gtm_perl_export_iconv = 0;
+}
+
+
+void op_fnzperliconv(mval *src, mval *dst)
+{
+        SV *sv;
+        STRLEN len;
+        int rc;
+        iconv_t import, export;
+        char *int_name;
+        char *ext_name;
+
+        GTM_PERL_INIT;
+        /* not using mval2SV here, I'm unwilling to optimize evals of integers */
+        MV_FORCE_DEFINED(src); /* needed ?? */
+        MV_FORCE_STR(src);
+      
+        import = export = 0;
+        int_name = ext_name = 0;
+        try_iconv_open(&src->str, &import, &export, &int_name, &ext_name);
+        if(import) {
+          /* succeeded, install it. */
+          if(gtm_perl_import_iconv)
+            iconv_close(gtm_perl_import_iconv);
+          if(gtm_perl_export_iconv)
+            iconv_close(gtm_perl_export_iconv);
+          if(gtm_perl_internal_charset)
+            free(gtm_perl_internal_charset);
+          if(gtm_perl_external_charset)
+            free(gtm_perl_external_charset);
+
+          gtm_perl_import_iconv = import;
+          gtm_perl_export_iconv = export;
+          gtm_perl_external_charset = ext_name;
+          gtm_perl_internal_charset = int_name;
+        } else {
+          if(src->str.len == 1 && src->str.addr[0] == ',')
+            iconv_disable();
+        }
+
+        dst->mvtype = MV_STR;
+        iconv_tell(&dst->str);
+	return;
+}
Index: sr_perl/gtm_perl.h
===================================================================
--- sr_perl/gtm_perl.h	(revision 0)
+++ sr_perl/gtm_perl.h	(revision 45)
@@ -0,0 +1,306 @@
+/*
+ * (c) 2004 by Stefan Traby <stefan@hello-penguin.com>
+ * (c) 2004 by KW-Computer Ges.m.b.H, Austria
+ * License: GPL && Sanchez
+ *
+ * Note: Please include this file _after_ all other GT.M includes.
+ * 
+ * This file is the core include for both sides - GT.M and Perl
+ * if IN_XS_COMPILE is defined, we are heavily in Perl
+ */
+#ifndef GTM_PERL_H_INCLUDED__
+# define GTM_PERL_H_INCLUDED__ 42
+# ifdef WANT_GTM_PERL
+
+
+#include "stringpool.h"
+#include "mvalconv.h"
+#include "underr.h"
+
+#include <EXTERN.h>
+#include <perl.h>
+
+#undef iconv_t /* READ. THINK. - linus at the kernel mailinglist */
+#include <iconv.h>
+#include <errno.h>
+
+/* we delay perl-init if GT.M is "master".
+ * if we embed GT.M in Perl this should be set
+ * in the bootstrap function of gtm_perl_callin.xs
+ */
+GBLREF bool gtm_perl_initialized;
+GBLREF boolean_t gtm_startup_active; /* yes, perl uses this */
+GBLREF bool perl_is_master;          /* if perl is outside we need to
+                                      * cleanup gtm */
+
+/* we fully support iconv on conversation if the stuff is set to non 0 */
+GBLREF char *gtm_perl_internal_charset;
+GBLREF char *gtm_perl_external_charset;
+GBLREF iconv_t gtm_perl_import_iconv;
+GBLREF iconv_t gtm_perl_export_iconv;
+/* we use a somewhat static iconv buf that grows as we need */
+GBLREF char *gtm_perl_iconv_buf;
+GBLREF size_t gtm_perl_iconv_buf_size;
+GBLREF char iconv_errorstr[2048];
+
+/* man bloat, we allocate 15 * input size for iconv
+ * this is much stuff, for example we need only:
+ * 6 *      -> utf-8
+ * 2 *      -> ucs2
+ * 4 *      -> utf-16(yes, really)/utf-32
+ * 2 latin1 -> utf-8
+ * 1 ascii  -> utf-8
+ *
+ * so you could decrease it (and increase it again after
+ * seeing iconv errors with out-left=0 and in-left > 0)
+ */
+#define GTM_PERL_ICONV_FACTOR ((size_t) 15)
+
+#define GTM_PERL_ICONV_BUF_NEED(X) do { \
+                                        if(((size_t) (X)) > gtm_perl_iconv_buf_size) { \
+                                          if(gtm_perl_iconv_buf) { \
+                                            free(gtm_perl_iconv_buf); \
+                                          } \
+                                          if(0 == (gtm_perl_iconv_buf = (char *) malloc((size_t) (X)))) { \
+                                            rts_error(VARLSTCNT(1) ERR_PERLALLOC); \
+                                          } \
+                                        } \
+                                      } while(0)
+
+/* the following runs iconv over inptr/inlen and returns the stuff
+ * in gtm_perl_iconv_buf - i choosed POUTPTR and POUTLEN instead
+ * of of OUTPTR/OUTLEN because this should be static inline code
+ * and I don't want to change all callers later - oesi
+ * yes, the optimizer should fix this.
+ * We expect that the input is a _complete_ multibyte sequence
+ * or we die with ERR_PERLICONV - this is nothing for byte streams
+ * but fully ok for converting valid SVPV's and mstr's which should
+ * not contain partial characters...
+ */
+
+#  define GTM_RUN_ICONV(ICONV, INPTR, INLEN, POUTPTR, POUTLEN) do { \
+                                           if(ICONV) { \
+                                             size_t rc; \
+                                             size_t out_left; \
+                                             char *ip; \
+                                             size_t in_left = (size_t) (INLEN); \
+                                             char *in_buf = (char *) (INPTR); \
+                                             out_left = in_left * GTM_PERL_ICONV_FACTOR; \
+                                             GTM_PERL_ICONV_BUF_NEED(out_left); \
+                                             ip = gtm_perl_iconv_buf; \
+                                             rc = iconv(ICONV, &in_buf, &in_left, &ip, &out_left); \
+                                             if(rc == (size_t) -1 || in_left) { \
+                                               int eno = errno; \
+                                               char *ep; \
+                                               sprintf(iconv_errorstr, "iconv-PANIC: rc=%zi in-left=%zu out-left=%zu errno=%d: ", \
+                                                         rc, in_left, out_left, errno); \
+                                               ep = strerror(eno); /* we won't use strerror_r because it's somewhat new (SuSv3) */ \
+                                               if(ep && strlen(ep) < 2047 - strlen(iconv_errorstr)) \
+                                                 strcat(iconv_errorstr, ep); \
+                                               else \
+                                                 strcat(iconv_errorstr, "(additional error while trying to resolve errno or error-string too large)"); \
+                                               rts_error(VARLSTCNT(4) ERR_PERLICONV, 2, strlen(iconv_errorstr), iconv_errorstr); \
+                                             } \
+                                             *(size_t *)(POUTLEN) = ip - gtm_perl_iconv_buf; \
+                                             *((char **)(POUTPTR)) = gtm_perl_iconv_buf; \
+                                           } else { \
+                                             *(size_t *)(POUTLEN) = INLEN; \
+                                             *(char **)(POUTPTR) = INPTR; \
+                                           } \
+                                        } while(0)
+                                                    
+
+
+/* startup functions return 0 if everything is ok,
+   1 otherwhise */
+
+int gtm_perl_startup (void);
+void gtm_perl_shutdown (void);
+
+/* these should not be here but are because of
+ * SV2mval and related macros
+ */
+error_def(ERR_PERLINIT);
+error_def(ERR_PERLALLOC);
+error_def(ERR_MAXSTRLEN);
+error_def(ERR_PERLUNDEF);
+error_def(ERR_PERLNOREF);
+error_def(ERR_PERLDEADREF);
+error_def(ERR_PERLICONV);
+
+/* the following is out of my "old" Cac module to
+ * save terminal settings, they go out soon..
+ */
+void cac_tty_save(void);
+void cac_tty_restore(void);
+
+/* support for storing perl references in mval's
+ */
+
+typedef struct {
+  unsigned long magic;    /* the magic so we can detect it */
+  unsigned long svptr;    /* raw pointer to an SVRV */
+} mstr_sv;
+
+#define MSTR_SV_MAGIC 0x01fe03cc
+
+#define mstrValidSV(M) (((M)->len == sizeof(mstr_sv)) && \
+                        (*((unsigned long *)((M)->addr)) == MSTR_SV_MAGIC) && \
+                        (((unsigned long *)((M)->addr))[1] != 0))
+
+#define mstrSetSV(M,S) do { \
+                          SP_NEED(sizeof(mstr_sv)); \
+                          (M)->len = sizeof(mstr_sv); \
+                          (M)->addr = stringpool.free; \
+                          *((unsigned long *)((M)->addr)) = MSTR_SV_MAGIC; \
+                          ((unsigned long *)(M)->addr)[1] = (unsigned long) (S); \
+                          stringpool.free += sizeof(mstr_sv); \
+                          SvREFCNT_inc(S); \
+                       } while(0)
+
+/* use only after mstrValidSV */
+#define mstrGetSV(M) ((SV *) (((long *)((M)->addr))[1]))
+
+
+/* we have to make sure that the other side is initialized -
+ * we delay init of Perl if GT.M is master, we delay init of
+ * GT.M if Perl is master (this is broken, we need ENTER/LEAVE
+ * for nesting ...)
+ */
+
+#ifndef IN_XS_COMPILE
+#  define GTM_PERL_INIT do { if (!gtm_perl_initialized && gtm_perl_startup()) { \
+                                rts_error(VARLSTCNT(1) ERR_PERLINIT); \
+                           } \
+                         } while(0)
+# define GTM_GTM_INIT
+#else
+#  define GTM_PERL_INIT
+#  define GTM_GTM_INIT do { if(!gtm_startup_active) { \
+                               int rc; \
+                               cac_tty_save(); \
+                               if((rc = gtm_init())) { \
+                                 croak("initializing of GT.M failed.\ngtm_init() rc=%d", rc); \
+                               } \
+                               cac_tty_restore(); \
+                          } \
+                          } while(0);
+#endif
+
+/* stringpool stuff */
+
+GBLREF spdesc stringpool;
+
+#  define SP_NEED(X)  do { if (stringpool.free + (X) > stringpool.top) stp_gcol(X); \
+                         } while(0)
+
+
+#ifdef IN_XS_COMPILE
+# define GP_ERROR_UNDEF   rts_error(VARLSTCNT(1) ERR_PERLUNDEF)
+# define GP_ERROR_REF     rts_error(VARLSTCNT(1) ERR_PERLREF)
+# define GP_ERROR_MAXSTR  rts_error(VARLSTCNT(1) ERR_MAXSTRLEN)
+# define GP_ERROR_ALLOC   rts_error(VARLSTCNT(1) ERR_PERLALLOC)
+#else
+# define GP_ERROR_UNDEF   croak("Attempt to store Perl undef in mvar/mstr")
+# define GP_ERROR_REF     croak("Attempt to store Perl reference in mvar/mstr")
+# define GP_ERROR_MAXSTR  croak("Perl string too large for GT.M")
+# define GP_ERROR_ALLOC   croak("Perl: out of memory.")
+#endif
+
+# define SVCHECK(s) do { \
+                          if(!(s) || (s) == &PL_sv_undef) { \
+                              GP_ERROR_UNDEF; \
+                          } \
+                     } while(0)
+
+# define LENGTHCHECK(l) do { if((l) > (IV) MAX_STRLEN) { \
+                                GP_ERROR_MAXSTR; \
+                             } \
+                           } while(0)
+
+
+
+/* when converting between SV* and mval* we don't care about doubles -
+ * we pass them as string (there are plans to support storing  perl references in mvals...)
+ * XXX we assume here that IV is same as int, won't work on use64bitint perl-builds on 32bit architectures.
+ */
+
+
+#  define SV2mval(s,m) do { SVCHECK(s); \
+                            if(SvROK(s)) { \
+                              mstrSetSV(&((m)->str), (s)); \
+                              (m)->mvtype = MV_STR; \
+                            } \
+                            else { if (SvIOK(s)) { \
+                                      IV I = SvIV(s); \
+                                      do { MV_FORCE_MVAL((m),I); } while(0); \
+                                   } else  { \
+                                      char *P; \
+                                      STRLEN L; \
+                                      P = SvPV((s),L); \
+                                      GTM_RUN_ICONV(gtm_perl_import_iconv, P, L, &P, &L); \
+                                      LENGTHCHECK(L); \
+                                      SP_NEED(L); \
+                                      (m)->mvtype = MV_STR; \
+                                      (m)->str.addr = (char *) stringpool.free; \
+                                      (m)->str.len = L; \
+                                      memcpy(stringpool.free, P, L); \
+                                      stringpool.free += L; \
+                                   } \
+                            } \
+                       } while(0)
+                                
+
+#  define mstr2SV(m,s) do { \
+                            if(mstrValidSV(m)) { \
+                              (s) = mstrGetSV(m); \
+                            } else { \
+                              char *p; \
+                              int len; \
+                              GTM_RUN_ICONV(gtm_perl_export_iconv, (m)->addr, (m)->len, &p, &len); \
+                              (s) = newSVpvn(p, len); \
+                              if(!(s)) { \
+                                  GP_ERROR_ALLOC; \
+                              } \
+                            } \
+                          } while(0)
+
+#  define SV2mstr(s,m) do { char *p; \
+                            STRLEN l; \
+                            SVCHECK(s); \
+                            if(SvROK(s)) { \
+                              mstrSetSV((m), (s)); \
+                            } else { \
+                              p = SvPV((s),l); \
+                              GTM_RUN_ICONV(gtm_perl_import_iconv, p, l, &p, &l); \
+                              LENGTHCHECK(l); \
+                              SP_NEED(l); \
+                              (m)->addr = (char *) stringpool.free; \
+                              (m)->len = l; \
+                              memcpy(stringpool.free, p, l); \
+                              stringpool.free += l; \
+                            } \
+                          } while(0)
+
+#  define mval2SV(M,S) do { \
+                            MV_FORCE_DEFINED(M); \
+                            MV_FORCE_STR(M); \
+                            if(mstrValidSV(&((M)->str))) { \
+                              (S) = mstrGetSV(&(M)->str); \
+                            } else { \
+                              char *p; \
+                              size_t len; \
+                              p = (M)->str.addr; \
+                              len = (M)->str.len; \
+                              GTM_RUN_ICONV(gtm_perl_export_iconv, p, len, &p, &len); \
+                              (S) = newSVpvn(p, len); \
+                              if(!S) { \
+                                  GP_ERROR_ALLOC; \
+                              } \
+                            } \
+                       } while(0)
+
+
+# endif /* WANT_GTM_PERL */
+#endif /* GTM_PERL_H_INCLUDED__ */
+
Index: sr_perl/op_fnzperlunref.c
===================================================================
--- sr_perl/op_fnzperlunref.c	(revision 0)
+++ sr_perl/op_fnzperlunref.c	(revision 45)
@@ -0,0 +1,59 @@
+/****************************************************************
+ *      Copyright 2001 Sanchez Computer Associates, Inc.        *
+ *      Copyright 2004 KW-Computer Ges.m.b.H.                   *
+ *      This source code contains the intellectual property     *
+ *      of its copyright holder(s), and is made available       *
+ *      under a license.  If you do not know the terms of       *
+ *      the license, please stop and do not read further.       *
+ *                                                              *
+ ****************************************************************/
+
+#include "mdef.h"
+#include "stringpool.h"
+#include "gtm_op.h"
+#include "gtm_perl.h"
+
+GBLREF spdesc stringpool;
+
+/* we don't need this - will be removed later.
+ */
+#define PERROR_BUF_SIZE 4041
+static char perl_errorbuf[PERROR_BUF_SIZE+1];
+
+error_def(ERR_PERLDIE);
+
+/*
+ * -----------------------------------------------
+ * op_fnzperlunref()
+ * frees a perl reference
+ * Arguments:
+ *	src	- Pointer to Source string mval (which should contain a perl reference or an empty string)
+ *	dst	- Pointer to return value of perl (which is always 0)
+ *
+ * Return:
+ *	none
+ * -----------------------------------------------
+ */
+
+void op_fnzperlunref(mval *src, mval *dst)
+{
+        STRLEN len;
+        int rc;
+
+        MV_FORCE_STR(src);
+        if(src->str.len) {
+           if(mstrValidSV(&src->str)) {
+             SV *sv = mstrGetSV(&src->str);
+             SvREFCNT_dec(sv);
+             /* mark it dead */
+             ((unsigned long *)src->str.addr)[1] = 0;
+           } else {
+             /* check for dead reference */
+             if(src->str.len == sizeof(mstr_sv) && *((unsigned long *)src->str.addr) == MSTR_SV_MAGIC)
+               rts_error(VARLSTCNT(1) ERR_PERLDEADREF);
+             rts_error(VARLSTCNT(1) ERR_PERLNOREF);
+           }
+        }
+        MV_FORCE_MVAL(dst, 0);
+	return;
+}
Index: sr_perl/ioperlAV_flush.c
===================================================================
--- sr_perl/ioperlAV_flush.c	(revision 0)
+++ sr_perl/ioperlAV_flush.c	(revision 45)
@@ -0,0 +1,18 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+#include "io.h"
+
+void ioperlAV_flush(io_desc *iod)
+{
+	return;
+}
Index: sr_perl/op_fnzperleval.c
===================================================================
--- sr_perl/op_fnzperleval.c	(revision 0)
+++ sr_perl/op_fnzperleval.c	(revision 45)
@@ -0,0 +1,82 @@
+/****************************************************************
+ *      Copyright 2001 Sanchez Computer Associates, Inc.        *
+ *      Copyright 2004 KW-Computer Ges.m.b.H.                   *
+ *      This source code contains the intellectual property     *
+ *      of its copyright holder(s), and is made available       *
+ *      under a license.  If you do not know the terms of       *
+ *      the license, please stop and do not read further.       *
+ *                                                              *
+ ****************************************************************/
+
+#include "mdef.h"
+#include "stringpool.h"
+#include "gtm_op.h"
+#include "gtm_perl.h"
+
+GBLREF spdesc stringpool;
+
+/* we don't need this - will be removed later.
+ */
+#define PERROR_BUF_SIZE 4041
+static char perl_errorbuf[PERROR_BUF_SIZE+1];
+
+error_def(ERR_PERLDIE);
+
+/*
+ * -----------------------------------------------
+ * op_fnzperleval()
+ * Evaluate a (optionally stupid) Perl expression .)
+ *
+ * Arguments:
+ *	src	- Pointer to Source string mval
+ *	dst	- Pointer to return value of perl
+ *
+ * Return:
+ *	none
+ * -----------------------------------------------
+ */
+
+void op_fnzperleval(mval *src, mval *dst)
+{
+        SV *sv;
+        STRLEN len;
+        int rc;
+
+        GTM_PERL_INIT;
+        /* not using mval2SV here, I'm unwilling to optimize evals of integers */
+        MV_FORCE_DEFINED(src); /* needed ?? */
+        MV_FORCE_STR(src);
+        if(!(sv = newSVpvn (src->str.addr, src->str.len))) {
+          rts_error(VARLSTCNT(1) ERR_PERLALLOC);
+        }
+        {
+          dSP;
+          ENTER;
+          SAVETMPS;
+          eval_sv (sv, G_SCALAR | G_EVAL | G_NOARGS);
+          SvREFCNT_dec (sv);
+          SPAGAIN;
+          if(SvTRUE (ERRSV)) {
+            STRLEN err_len;
+            char *p;
+            p = SvPV(ERRSV, err_len);
+            if(err_len > PERROR_BUF_SIZE) {
+              err_len = PERROR_BUF_SIZE;
+            }
+            memcpy(perl_errorbuf, p, err_len);
+            perl_errorbuf[err_len] = 0;
+            POPs;
+            PUTBACK;
+            FREETMPS;
+            LEAVE;
+            rts_error(VARLSTCNT(4) ERR_PERLDIE, 2, err_len, perl_errorbuf);
+          } else {
+            SV *ret = POPs;
+            SV2mval(ret,dst);
+            PUTBACK;
+            FREETMPS;
+            LEAVE;
+          }
+        } 
+	return;
+}
Index: sr_perl/perl.mk
===================================================================
--- sr_perl/perl.mk	(revision 0)
+++ sr_perl/perl.mk	(revision 45)
@@ -0,0 +1,120 @@
+#
+# this is ugly - oesi
+# we are only generating source files here
+# and we invoke "xsubpp" for *.xs-files
+# the call-in part of life :)
+#
+# we are also invoking the "sr_perl/patch-gtm"
+# to patch in/out perl support depending on "gtm_perl"
+# environment
+
+targets = xsinit.c gtm_perl_callin.c gen_sv_access.xs gen_op_access.xs mlist_transfer.h
+
+xsexport = gtm_perl_callin.exp
+
+die-no-default-target:
+	@echo invalid target.
+	@false
+
+./perl.mk:
+	@echo wrong directory.
+	@echo Makefile "perl.mk" expects to be called in ./sr_perl directory.
+	@false
+	
+source-check: env-check ./perl.mk all
+	
+all: prep ttt
+
+../sr_unix/ttt.c: ../sr_port/opcode_def.h ../sr_port/vxi.h ../sr_unix_nsb/ttt.txt
+	@rm -rf ./tttgen
+	@mkdir ./tttgen
+	cp $^ ./tttgen
+	find ../sr_port/ -type f -iname "*.m" -print0 |xargs -0n1 echo|while read src ; do tgt=$$(echo $$(basename "$$src")|tr '[:lower:]' '[:upper:]'|sed -e 's/\.M$$/.m/') ; cp "$$src" "./tttgen/$$tgt" ;done
+	cd ./tttgen && echo -e "set \$$ZROUTINES=\". $(gtm_dist)\" D ^TTTGEN\nZContinue\nHalt"| gtm_dist=$(gtm_curpro) $(gtm_curpro)/mumps -direct
+	cp ./tttgen/ttt.c $@
+	@rm -rf ./tttgen
+
+../sr_unix_nsb/ttt.c: ../sr_port/opcode_def.h ../sr_port/vxi.h ../sr_unix_nsb/ttt.txt
+	@rm -rf ./tttgen
+	@mkdir ./tttgen
+	cp $^ ./tttgen
+	find ../sr_port/ -type f -iname "*.m" -print0 |xargs -0n1 echo|while read src ; do tgt=$$(echo $$(basename "$$src")|tr '[:lower:]' '[:upper:]'|sed -e 's/\.M$$/.m/') ; cp "$$src" "./tttgen/$$tgt" ;done
+	cd ./tttgen && echo -e "set \$$ZROUTINES=\". $(gtm_dist)\" D ^TTTGEN\nZContinue\nHalt"| gtm_dist=$(gtm_curpro) $(gtm_curpro)/mumps -direct
+	cp ./tttgen/ttt.c $@
+	@rm -rf ./tttgen
+
+ttt: ../sr_unix_nsb/ttt.c ../sr_unix/ttt.c
+	
+ifndef gtm_curpro
+env-check:
+	@echo "environment variable 'gtm_curpro' not set, aborting build."
+	@false
+else
+env-check:
+	@true
+endif
+
+	
+ifdef gtm_perl
+
+PRIVLIBDIR=$(shell $(gtm_perl) -MConfig -e 'print $$Config{installprivlib}')
+XSUBDIR=$(PRIVLIBDIR)/ExtUtils
+XSUBPP=$(gtm_perl) $(XSUBDIR)/xsubpp
+
+patch-sources: $(xsexport) env-check
+	perl ./patch-gtm perl-in
+
+prep: env-check $(targets) patch-sources
+	@echo successfully prepared for build WITH embedded Perl
+
+xsinit.c:
+	$(gtm_perl) -MExtUtils::Embed -e xsinit -- -o xsinit.c -std GTM
+
+%.c:%.xs ; $(XSUBPP) -typemap $(XSUBDIR)/typemap -typemap ./typemap $< >$@ && $(gtm_perl) -pi -e 's/^\#line[ \t]*".*$$//g' $@
+
+%.xs:%.pl ; $(gtm_perl) $< > $@
+
+mlist_transfer.h: gen_mlist_transfer.pl
+	$(gtm_perl) $< > $@
+
+# we need the XS_ stuff and boot_GTM in libgtmperl
+# exported. we going to parse the C
+# file generated by xsubpp for that.
+# our patch-manager patches the symbols in/out sr_unix/gtmshr_symbols.exp
+
+%.exp:%.c ; perl -ne 'print "$$1\n" if /^XS\(((?:XS|boot)_[a-z_][a-z0-9_]*)\);/i' $< >$@
+
+# gtm_perl_callin.xs includes gen_sv_access.xs and gen_op_access.xs :)
+
+gtm_perl_callin.c: gen_sv_access.xs gen_op_access.xs typemap mlist_transfer.h
+
+gen_sv_access.xs: ../sr_port/svnames.h ../sr_port/op_svput.c ../sr_port/op_svget.c
+
+gen_op_access.xs: ../sr_port/gtm_op.h
+
+else
+
+patch-sources: env-check
+	rm -f xsinit.c gtm_perl_callin.c
+	perl ./patch-gtm perl-out
+
+prep: env-check patch-sources
+	@echo successfully prepared for build WITHOUT embedded Perl
+	
+endif
+
+../tags:
+	(cd .. && ctags -w -d -T --globals $$(find  . -iname "*.[ch]") )
+
+tags: ../tags
+	
+clean:
+	-rm -f -- $(targets) $(xsexport) ./tttgen
+
+distclean: clean
+	-rm -rf -- ./tttgen ../sr_unix/ttt.c ../sr_unix_nsb/ttt.c ../tags
+	
+
+.PHONY: clean distclean patch-sources source-check env-check prep ttt tags
+#EOF
+
Index: sr_perl/ioperlAV_wteol.c
===================================================================
--- sr_perl/ioperlAV_wteol.c	(revision 0)
+++ sr_perl/ioperlAV_wteol.c	(revision 45)
@@ -0,0 +1,47 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#include "mdef.h"
+#include "io.h"
+#include "iottdef.h"
+#include "gtm_perl.h"
+#include "ioperlAVdef.h"
+
+/* 
+ * we write "undef" into array elements. These can't be written otherwise and
+ * because of this it's an extremly cool thing for markers. agree or die :)
+ */
+
+error_def(ERR_PERLAVIORDONLY);
+
+void ioperlAV_wteol(int4 count, io_desc *iod)
+{
+        int4 s;
+        GBLREF io_pair io_curr_device;
+        io_desc *io_ptr;
+        d_perlAV_struct *pav;
+
+        io_ptr = io_curr_device.in;
+        pav = (d_perlAV_struct *) io_ptr->dev_sp;
+        assert(pav != 0);
+        if(pav->flags & IOPERLAV_RDONLY) {
+          rts_error(VARLSTCNT(1) ERR_PERLAVIORDONLY);
+        }
+        if(pav->flags & IOPERLAV_UNSHIFT) {
+          av_unshift(pav->av, count);
+          for(s = 0; s < count; s++)
+            av_store(pav->av, s, &PL_sv_undef);
+        } else {
+          for(s = 0; s < count; s++)
+            av_push(pav->av, &PL_sv_undef);
+        }
+        return;
+}

Property changes on: sr_perl
___________________________________________________________________
Name: svn:ignore
   + *.tar.gz
*.tar.bz2
TAGS
*~
.*.swp
*.orig
*.rej
core
blib
pm_to_blib
Makefile
Makefile.old



Index: sr_unix_cm/omi_prc_lock.c
===================================================================
--- sr_unix_cm/omi_prc_lock.c	(revision 6)
+++ sr_unix_cm/omi_prc_lock.c	(revision 45)
@@ -26,7 +26,7 @@
 #include "mlkdef.h"
 #include "mlk_lock.h"
 #include "mlk_pvtblk_delete.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 int
Index: sr_unix_cm/omi_prc_kill.c
===================================================================
--- sr_unix_cm/omi_prc_kill.c	(revision 6)
+++ sr_unix_cm/omi_prc_kill.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "mdef.h"
 #include "omi.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 int
Index: sr_unix_cm/omi_prc_def.c
===================================================================
--- sr_unix_cm/omi_prc_def.c	(revision 6)
+++ sr_unix_cm/omi_prc_def.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "omi.h"
 #include "error.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 int
Index: sr_unix_cm/omi_prc_ordr.c
===================================================================
--- sr_unix_cm/omi_prc_ordr.c	(revision 6)
+++ sr_unix_cm/omi_prc_ordr.c	(revision 45)
@@ -32,7 +32,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 int
Index: sr_unix_cm/omi_prc_get.c
===================================================================
--- sr_unix_cm/omi_prc_get.c	(revision 6)
+++ sr_unix_cm/omi_prc_get.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "omi.h"
 #include "error.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 int
Index: sr_unix_cm/omi_prc_set.c
===================================================================
--- sr_unix_cm/omi_prc_set.c	(revision 6)
+++ sr_unix_cm/omi_prc_set.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "mdef.h"
 #include "omi.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 int
Index: sr_unix_cm/omi_prc_rord.c
===================================================================
--- sr_unix_cm/omi_prc_rord.c	(revision 6)
+++ sr_unix_cm/omi_prc_rord.c	(revision 45)
@@ -26,7 +26,7 @@
 
 #include "omi.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 int
Index: sr_unix_cm/rc_dbms_ch.c
===================================================================
--- sr_unix_cm/rc_dbms_ch.c	(revision 6)
+++ sr_unix_cm/rc_dbms_ch.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "mdef.h"
 #include "rc.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 
 
 CONDITION_HANDLER(rc_dbms_ch)
Index: sr_unix_cm/gtcm_exit_ch.c
===================================================================
--- sr_unix_cm/gtcm_exit_ch.c	(revision 6)
+++ sr_unix_cm/gtcm_exit_ch.c	(revision 45)
@@ -20,7 +20,7 @@
 
 #include "error.h"
 #include "gtcm.h"
-#include "util.h"	/* for util_out_print() prototype */
+#include "gtm_util.h"	/* for util_out_print() prototype */
 
 #ifndef lint
 static char rcsid[] = "$Header:$";
Index: sr_unix_cm/omi_dbms_ch.c
===================================================================
--- sr_unix_cm/omi_dbms_ch.c	(revision 6)
+++ sr_unix_cm/omi_dbms_ch.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "mdef.h"
 #include "omi.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtcm.h"
 
 CONDITION_HANDLER(omi_dbms_ch)
Index: sr_unix_cm/omi_prc_qry.c
===================================================================
--- sr_unix_cm/omi_prc_qry.c	(revision 6)
+++ sr_unix_cm/omi_prc_qry.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "gdsroot.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvsub2str.h"
 
 GBLREF gv_key		*gv_altkey;
Index: sr_unix_cm/gtcm_exit.c
===================================================================
--- sr_unix_cm/gtcm_exit.c	(revision 6)
+++ sr_unix_cm/gtcm_exit.c	(revision 45)
@@ -32,7 +32,7 @@
 #endif /* defined(GTCM_RC) */
 
 #include "gv_rundown.h"		/* for gv_rundown() prototype */
-#include "op.h"			/* for op_unlock() and op_lkinit() prototype */
+#include "gtm_op.h"			/* for op_unlock() and op_lkinit() prototype */
 
 GBLREF int4	 gtcm_exi_condition;
 
Index: sr_unix_cm/omi_prc_next.c
===================================================================
--- sr_unix_cm/omi_prc_next.c	(revision 6)
+++ sr_unix_cm/omi_prc_next.c	(revision 45)
@@ -26,7 +26,7 @@
 
 #include "omi.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 int
Index: sr_unix/gtmci.c
===================================================================
--- sr_unix/gtmci.c	(revision 6)
+++ sr_unix/gtmci.c	(revision 45)
@@ -32,7 +32,7 @@
 #include "error.h"
 #include "startup.h"
 #include "mv_stent.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gtm_startup.h"
 #include "job_addr.h"
 #include "invocation_mode.h"
Index: sr_unix/get_src_line.c
===================================================================
--- sr_unix/get_src_line.c	(revision 6)
+++ sr_unix/get_src_line.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "srcline.h"
 #include "gtmio.h"
 #include "eintr_wrappers.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "zbreak.h"
 
 #define RT_TBL_SZ 20
Index: sr_unix/util_output.c
===================================================================
--- sr_unix/util_output.c	(revision 6)
+++ sr_unix/util_output.c	(revision 45)
@@ -29,7 +29,7 @@
 #include "error.h"
 #include "fao_parm.h"
 #include "min_max.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "util_format.h"
 #include "util_out_print_vaparm.h"
 
Index: sr_unix/gtmci_isv.c
===================================================================
--- sr_unix/gtmci_isv.c	(revision 6)
+++ sr_unix/gtmci_isv.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "gtm_string.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include "gtmci.h"
Index: sr_unix/dse_cmd.c
===================================================================
--- sr_unix/dse_cmd.c	(revision 6)
+++ sr_unix/dse_cmd.c	(revision 45)
@@ -26,10 +26,10 @@
 #include "tp.h"
 #include "repl_msg.h"
 #include "gtmsource.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gt_timer.h"
 #include "io.h"
 #include "dse.h"
Index: sr_unix/op_fgnlookup.c
===================================================================
--- sr_unix/op_fgnlookup.c	(revision 6)
+++ sr_unix/op_fgnlookup.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "op_fgnlookup.h"
 
 void op_fgnlookup(void)
Index: sr_unix/make_mode.c
===================================================================
--- sr_unix/make_mode.c	(revision 6)
+++ sr_unix/make_mode.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "error.h"
 #include "dm_setup.h"
 #include "rtnhdr.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "compiler.h"
 #include "emit_code.h"
 #include "gtmci.h"
Index: sr_unix/dbinit_ch.c
===================================================================
--- sr_unix/dbinit_ch.c	(revision 6)
+++ sr_unix/dbinit_ch.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "do_semop.h"
 #include "mmseg.h"
 #include "ipcrmid.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "ftok_sems.h"
 #include "gtmimagename.h"
 
Index: sr_unix/op_job.c
===================================================================
--- sr_unix/op_job.c	(revision 6)
+++ sr_unix/op_job.c	(revision 45)
@@ -32,9 +32,9 @@
 #include "job.h"
 #include "joberr.h"
 #include "gt_timer.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "outofband.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "io.h"
 #include "mvalconv.h"
 
Index: sr_unix/mu_extract.c
===================================================================
--- sr_unix/mu_extract.c	(revision 6)
+++ sr_unix/mu_extract.c	(revision 45)
@@ -37,9 +37,9 @@
 #include "io_params.h"
 #include "eintr_wrappers.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_caseconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mupip_exit.h"
 #include "is_raw_dev.h"
 #include "gv_select.h"
@@ -202,7 +202,7 @@
 		rts_error(VARLSTCNT(1) ERR_MUPCLIERR);
 		mupip_exit(ERR_MUPCLIERR);
 	}
-	if (-1 == Stat((char *)outfilename, &statbuf))
+	if (-1 == gtm_Stat((char *)outfilename, &statbuf))
         {
 		if (ENOENT != errno)
 		{
Index: sr_unix/gtm_putmsg.c
===================================================================
--- sr_unix/gtm_putmsg.c	(revision 6)
+++ sr_unix/gtm_putmsg.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "util.h"
+#include "gtm_util.h"
 #include <varargs.h>
 #include "gtmmsg.h"
 #include "gtm_putmsg_list.h"
Index: sr_unix/ci_ret_code.c
===================================================================
--- sr_unix/ci_ret_code.c	(revision 6)
+++ sr_unix/ci_ret_code.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "stack_frame.h"
 #include "error.h"
 #include "gtmci.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "error_trap.h"
 
 GBLREF stack_frame 	*frame_pointer;
Index: sr_unix/mu_op_open.c
===================================================================
--- sr_unix/mu_op_open.c	(revision 6)
+++ sr_unix/mu_op_open.c	(revision 45)
@@ -186,7 +186,7 @@
 				}
 				} else  if (0 == memvcmp(tn.addr, tn.len, "/dev/null", 9))
 					tl->iod->type = nl;
-				else  if ((-1 == Stat(buf, &outbuf)) && (n_io_dev_types == tl->iod->type))
+				else  if ((-1 == gtm_Stat(buf, &outbuf)) && (n_io_dev_types == tl->iod->type))
 				{
 
 					if (ENOENT == errno)
Index: sr_unix/jobchild_init.c
===================================================================
--- sr_unix/jobchild_init.c	(revision 6)
+++ sr_unix/jobchild_init.c	(revision 45)
@@ -25,7 +25,7 @@
 #include "compiler.h"
 #include "indir_enum.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "job.h"
 #include "gcall.h"
Index: sr_unix/util_exit_handler.c
===================================================================
--- sr_unix/util_exit_handler.c	(revision 6)
+++ sr_unix/util_exit_handler.c	(revision 45)
@@ -14,7 +14,7 @@
 
 #include "error.h"
 #include "gt_timer.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gv_rundown.h"
 #include "print_exit_stats.h"
 #include "secshr_db_clnup.h"
Index: sr_unix/mupip_restore.c
===================================================================
--- sr_unix/mupip_restore.c	(revision 6)
+++ sr_unix/mupip_restore.c	(revision 45)
@@ -48,7 +48,7 @@
 #include "stp_parms.h"
 #include "gtm_stat.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_caseconv.h"
 #include "io.h"
 #include "is_proc_alive.h"
Index: sr_unix/mdefsa.h
===================================================================
--- sr_unix/mdefsa.h	(revision 6)
+++ sr_unix/mdefsa.h	(revision 45)
@@ -33,11 +33,23 @@
 #define GTMSECSHR_NAMELEN	(sizeof(GTMSECSHR_NAME) - 1)
 
 #ifdef __hpux
+# ifdef WANT_GTM_PERL
+#define GTMSHR_IMAGE_NAME	"libgtmperl.sl"
+# else
 #define GTMSHR_IMAGE_NAME	"libgtmshr.sl"
+# endif
 #elif defined(__MVS__)
+# ifdef WANT_GTM_PERL
+#define GTMSHR_IMAGE_NAME	"libgtmperl.dll"
+# else
 #define GTMSHR_IMAGE_NAME	"libgtmshr.dll"
+# endif
 #else
+# ifdef WANT_GTM_PERL
+#define GTMSHR_IMAGE_NAME	"libgtmperl.so"
+# else
 #define GTMSHR_IMAGE_NAME	"libgtmshr.so"
+# endif
 #endif
 
 #define GTM_MAIN_FUNC		"gtm_main"
Index: sr_unix/mu_upgrd_ctrlc_handler.c
===================================================================
--- sr_unix/mu_upgrd_ctrlc_handler.c	(revision 6)
+++ sr_unix/mu_upgrd_ctrlc_handler.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_caseconv.h"
 #include "mu_upgrd.h"
 
Index: sr_unix/bin_load.c
===================================================================
--- sr_unix/bin_load.c	(revision 6)
+++ sr_unix/bin_load.c	(revision 45)
@@ -26,8 +26,8 @@
 #include "error.h"
 #include "copy.h"
 #include "collseq.h"
-#include "util.h"
-#include "op.h"
+#include "gtm_util.h"
+#include "gtm_op.h"
 #include "gvsub2str.h"
 #include "mupip_exit.h"
 #include "mu_load_input.h"
Index: sr_unix/op_fnzsearch.c
===================================================================
--- sr_unix/op_fnzsearch.c	(revision 6)
+++ sr_unix/op_fnzsearch.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "stp_parms.h"
 #include "error.h"
 #include "eintr_wrappers.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "zroutines.h"
 #include "mvalconv.h"
 
Index: sr_unix/dse_puttime.c
===================================================================
--- sr_unix/dse_puttime.c	(revision 6)
+++ sr_unix/dse_puttime.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "gtm_stdio.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse_puttime.h"
 
 #define TIME_SIZE	(2 + 1 + 2 + 1 + 2 + 1 + 2)	/* hh:mm:ss:dd */
Index: sr_unix/dse_help.c
===================================================================
--- sr_unix/dse_help.c	(revision 6)
+++ sr_unix/dse_help.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "release_name.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 void dse_help(void)
Index: sr_unix/stop_image.c
===================================================================
--- sr_unix/stop_image.c	(revision 6)
+++ sr_unix/stop_image.c	(revision 45)
@@ -17,7 +17,7 @@
 #include <errno.h>
 
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF boolean_t	need_core;		/* Core file should be created */
 GBLREF int4		exi_condition;
Index: sr_unix/op_fnzsetprv.c
===================================================================
--- sr_unix/op_fnzsetprv.c	(revision 6)
+++ sr_unix/op_fnzsetprv.c	(revision 45)
@@ -12,7 +12,7 @@
 /*** STUB FILE ***/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fnzsetprv(mval *prv,mval *ret)
 {
Index: sr_unix/dec_err.c
===================================================================
--- sr_unix/dec_err.c	(revision 6)
+++ sr_unix/dec_err.c	(revision 45)
@@ -19,7 +19,7 @@
 #ifndef EARLY_VARARGS
 #include <varargs.h>
 #endif
-#include "util.h"
+#include "gtm_util.h"
 #include "util_out_print_vaparm.h"
 #include "gtmmsg.h"
 
Index: sr_unix/go_load.c
===================================================================
--- sr_unix/go_load.c	(revision 6)
+++ sr_unix/go_load.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "gdsfhead.h"
 #include "error.h"
 #include "muextr.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupip_exit.h"
 #include "mlkdef.h"
 #include "zshow.h"
Index: sr_unix/mu_cre_file.c
===================================================================
--- sr_unix/mu_cre_file.c	(revision 6)
+++ sr_unix/mu_cre_file.c	(revision 45)
@@ -46,7 +46,7 @@
 				if (0 < fd)		\
 					close(fd);	\
 				if (EXIT_ERR == XX)	\
-					UNLINK(path);	\
+					gtm_UNLINK(path);	\
 			}
 
 #define SPRINTF_AND_PERROR(MESSAGE)			\
Index: sr_unix/list_file.c
===================================================================
--- sr_unix/list_file.c	(revision 6)
+++ sr_unix/list_file.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "cmd_qlf.h"
 #include "parse_file.h"
 #include "list_file.h"
-#include "op.h"
+#include "gtm_op.h"
 
 #define LISTEXT ".lis"
 
Index: sr_unix/util_in_open.c
===================================================================
--- sr_unix/util_in_open.c	(revision 6)
+++ sr_unix/util_in_open.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "util.h"
+#include "gtm_util.h"
 
 /* STUB */
 void util_in_open(void *ptr)
Index: sr_unix/mu_rndwn_replpool.c
===================================================================
--- sr_unix/mu_rndwn_replpool.c	(revision 6)
+++ sr_unix/mu_rndwn_replpool.c	(revision 45)
@@ -46,7 +46,7 @@
 #include "mu_rndwn_replpool.h"
 #include "ipcrmid.h"
 #include "do_semop.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 #include "do_shmat.h"	/* for do_shmat() prototype */
 
Index: sr_unix/cli_disallow.c
===================================================================
--- sr_unix/cli_disallow.c	(revision 6)
+++ sr_unix/cli_disallow.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "cli_parse.h"
 #include "cli_disallow.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupip_cmd_disallow.h"
 
 GBLREF char	cli_err_str[];
Index: sr_unix/gtm_exit_handler.c
===================================================================
--- sr_unix/gtm_exit_handler.c	(revision 6)
+++ sr_unix/gtm_exit_handler.c	(revision 45)
@@ -35,7 +35,7 @@
 #ifdef UNIX
 #include "mutex.h"
 #endif
-#include "op.h"
+#include "gtm_op.h"
 #include "zcall_package.h"
 #include "gtm_exit_handler.h"
 #include "gv_rundown.h"
Index: sr_unix/mupip_cvtgbl.c
===================================================================
--- sr_unix/mupip_cvtgbl.c	(revision 6)
+++ sr_unix/mupip_cvtgbl.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "stp_parms.h"
 #include "iosp.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_caseconv.h"
 #include "mupip_exit.h"
 #include "mupip_cvtgbl.h"
Index: sr_unix/op_fnzlkid.c
===================================================================
--- sr_unix/op_fnzlkid.c	(revision 6)
+++ sr_unix/op_fnzlkid.c	(revision 45)
@@ -12,7 +12,7 @@
 /*** STUB FILE ***/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fnzlkid (mint boolex, mval *retval)
 {	assert(FALSE);
Index: sr_unix/op_zlink.c
===================================================================
--- sr_unix/op_zlink.c	(revision 6)
+++ sr_unix/op_zlink.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "parse_file.h"
 #include "gtmio.h"
 #include "eintr_wrappers.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "incr_link.h"
 #include "compiler.h"
 
Index: sr_unix/mubfilcpy.c
===================================================================
--- sr_unix/mubfilcpy.c	(revision 6)
+++ sr_unix/mubfilcpy.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "copy.h"
 #include "eintr_wrappers.h"
 #include "sleep_cnt.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 #include "wcs_sleep.h"
 #include "gtm_file_stat.h"
@@ -51,7 +51,7 @@
 						if (-1 != backup_fd)		\
 							close(backup_fd);	\
 						if (!debug_mupip)		\
-							UNLINK(tempfilename);	\
+							gtm_UNLINK(tempfilename);	\
 						return FALSE;			\
 					}
 
Index: sr_unix/mutex_sock_init.c
===================================================================
--- sr_unix/mutex_sock_init.c	(revision 6)
+++ sr_unix/mutex_sock_init.c	(revision 45)
@@ -106,7 +106,7 @@
 	strcpy(mutex_sock_address.sun_path, mutex_sock_path);
 	mutex_sock_len = sizeof(mutex_sock_address.sun_family) + mutex_sock_path_len + 1; /* Include NULL byte in length */
 
-	if (UNLINK(mutex_sock_address.sun_path) == -1) /* in case it was left from last time */
+	if (gtm_UNLINK(mutex_sock_address.sun_path) == -1) /* in case it was left from last time */
 	{
 		if (errno != ENOENT)
 		{
Index: sr_unix/gtmrecv_fetchresync.c
===================================================================
--- sr_unix/gtmrecv_fetchresync.c	(revision 6)
+++ sr_unix/gtmrecv_fetchresync.c	(revision 45)
@@ -49,7 +49,7 @@
 #include "repl_log.h"
 #include "io.h"
 #include "trans_log_name.h"
-#include "util.h"
+#include "gtm_util.h"
 
 #define MAX_ATTEMPTS_FOR_FETCH_RESYNC	30
 #define MAX_WAIT_FOR_FETCHRESYNC_CONN	30 /* s */
Index: sr_unix/sgtm_putmsg.c
===================================================================
--- sr_unix/sgtm_putmsg.c	(revision 6)
+++ sr_unix/sgtm_putmsg.c	(revision 45)
@@ -35,7 +35,7 @@
 
 #include "error.h"
 #include "fao_parm.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "util_out_print_vaparm.h"
 #include "sgtm_putmsg.h"
 
Index: sr_unix/op_zhelp_xfr.c
===================================================================
--- sr_unix/op_zhelp_xfr.c	(revision 6)
+++ sr_unix/op_zhelp_xfr.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "indir_enum.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "io.h"
 
 static mval com 	= DEFINE_MVAL_LITERAL(MV_STR, 0 , 0 , 1 , (char *) "," , 0 , 0 );
Index: sr_unix/mu_getlst.c
===================================================================
--- sr_unix/mu_getlst.c	(revision 6)
+++ sr_unix/mu_getlst.c	(revision 45)
@@ -26,7 +26,7 @@
 #include "hashtab.h"
 #include "buddy_list.h"
 #include "tp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "mupip_exit.h"
 #include "str_match.h"
Index: sr_unix/gtmsecshr.c
===================================================================
--- sr_unix/gtmsecshr.c	(revision 6)
+++ sr_unix/gtmsecshr.c	(revision 45)
@@ -48,7 +48,7 @@
 #include "gt_timer.h"
 #include "eintr_wrappers.h"
 #include "gtmimagename.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "send_msg.h"
 #include "generic_signal_handler.h"
 #include "gtmmsg.h"
@@ -113,10 +113,10 @@
 	for (suffix = 'a'; last > suffix; suffix++)
 	{
 		path[len - 1] = suffix;		/* OK since main loop is done with this */
-		UNLINK(path);			/* We could care less about errors */
+		gtm_UNLINK(path);			/* We could care less about errors */
 	}
 	path[len - 1] = '\0';			/* The normal name for the pid */
-	UNLINK(path);
+	gtm_UNLINK(path);
 	return;
 }
 
@@ -361,7 +361,7 @@
 		send_msg(VARLSTCNT(5) ERR_GTMSECSHRSOCKET, 3, RTS_ERROR_LITERAL("Server"), process_id);
 		rts_error(VARLSTCNT(5) ERR_GTMSECSHRSOCKET, 3, RTS_ERROR_LITERAL("Server"), process_id);
 	}
-	if (-1 == Stat(gtmsecshr_sock_name.sun_path, &stat_buf))
+	if (-1 == gtm_Stat(gtmsecshr_sock_name.sun_path, &stat_buf))
 		gtm_putmsg(VARLSTCNT(10) MAKE_MSG_WARNING(ERR_GTMSECSHRSTARTUP), 3, RTS_ERROR_LITERAL("Server"), process_id,
 				ERR_TEXT, 2, RTS_ERROR_LITERAL("Unable to get status of socket file"), errno);
 	stat_buf.st_mode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
@@ -430,7 +430,7 @@
 		gtmsecshr_logpath_len = sizeof(DEFAULT_GTMSECSHR_LOG_DIR) - 1;
 	} else
 		gtmsecshr_logpath_len = gtmsecshr_transnam.len;
-	if (-1 == Stat(gtmsecshr_logpath, &buf))
+	if (-1 == gtm_Stat(gtmsecshr_logpath, &buf))
 	{
 		save_errno = errno;
 		send_msg(VARLSTCNT(14) ERR_GTMSECSHRLOGF, 3, RTS_ERROR_TEXT("Server"), process_id, ERR_TEXT, 2,
@@ -509,7 +509,7 @@
 	}
 	newname_len = strlen(newname);
 	suffix = 1;
-	while ((0 == Stat(newname, &fs)) || (ENOENT != errno))	/* This file exists */
+	while ((0 == gtm_Stat(newname, &fs)) || (ENOENT != errno))	/* This file exists */
 	{
 		SPRINTF(&newname[newname_len], ".%d", suffix);
 		suffix++;
@@ -723,7 +723,7 @@
 				 buf->mesg.path, ERR_TEXT, 2,
 				 RTS_ERROR_LITERAL("File does not reside in the normal directory for a GT.M mutex socket file"));
 				buf->code = EINVAL;
-			} else if (buf->code = (-1 == UNLINK(buf->mesg.path)) ? errno : 0)
+			} else if (buf->code = (-1 == gtm_UNLINK(buf->mesg.path)) ? errno : 0)
 			{
 				gtm_putmsg(VARLSTCNT(14) ERR_GTMSECSHRSRVFFILE, 7, RTS_ERROR_LITERAL("Server"), process_id,
 					buf->pid, save_code, RTS_ERROR_STRING(buf->mesg.path),
Index: sr_unix/op_fngetlki.c
===================================================================
--- sr_unix/op_fngetlki.c	(revision 6)
+++ sr_unix/op_fngetlki.c	(revision 45)
@@ -12,7 +12,7 @@
 /*** STUB FILE ***/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fngetlki(mval *lkid_mval, mval *keyword, mval *ret)
 {	assert(FALSE);
Index: sr_unix/op_fnzfile.c
===================================================================
--- sr_unix/op_fnzfile.c	(revision 6)
+++ sr_unix/op_fnzfile.c	(revision 45)
@@ -12,7 +12,7 @@
 /*** STUB FILE ***/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fnzfile(mval *name,mval *key,mval *ret)
 {
Index: sr_unix/op_fngetdvi.c
===================================================================
--- sr_unix/op_fngetdvi.c	(revision 6)
+++ sr_unix/op_fngetdvi.c	(revision 45)
@@ -12,7 +12,7 @@
 /*** STUB FILE ***/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fngetdvi(mval *device, mval *keyword, mval* ret)
 {
Index: sr_unix/gtmsecshr_sock_init.c
===================================================================
--- sr_unix/gtmsecshr_sock_init.c	(revision 6)
+++ sr_unix/gtmsecshr_sock_init.c	(revision 45)
@@ -76,7 +76,7 @@
 	else
 		gtmsecshr_sockpath_len = secshrsock_transnam.len;
 
-	if ((-1 == Stat(gtmsecshr_sockpath, &buf)) || !S_ISDIR(buf.st_mode) )
+	if ((-1 == gtm_Stat(gtmsecshr_sockpath, &buf)) || !S_ISDIR(buf.st_mode) )
 	{
 		if (ret_status)
 			error_mesg = "Unable to locate default tmp directory";
@@ -178,7 +178,7 @@
 	{
 		if (!ret_status)
 		{
-			if (-1 == UNLINK(gtmsecshr_sock_name.sun_path))
+			if (-1 == gtm_UNLINK(gtmsecshr_sock_name.sun_path))
 			{
 				if (ENOENT != errno)
 				{
@@ -208,7 +208,7 @@
 	{
 		for (suffix = '\0'; !ret_status && 'z' >= suffix; )
 		{
-			if (-1 == UNLINK(gtmsecshr_cli_sock_name.sun_path))
+			if (-1 == gtm_UNLINK(gtmsecshr_cli_sock_name.sun_path))
 			{
 				if (EPERM == errno || EACCES == errno)
 				{
Index: sr_unix/iomb_use.c
===================================================================
--- sr_unix/iomb_use.c	(revision 6)
+++ sr_unix/iomb_use.c	(revision 45)
@@ -46,7 +46,7 @@
 			{
 				close(mb_ptr->channel);
 				path = iod->trans_name->dollar_io;
-				if ((status = UNLINK(path)) == -1)
+				if ((status = gtm_UNLINK(path)) == -1)
 				rts_error(VARLSTCNT(1) errno);
 			}
 			break;
Index: sr_unix/dse.c
===================================================================
--- sr_unix/dse.c	(revision 6)
+++ sr_unix/dse.c	(revision 45)
@@ -41,10 +41,10 @@
 #include "tp.h"
 #include "repl_msg.h"
 #include "gtmsource.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gt_timer.h"
 #include "io.h"
 #include "dse.h"
Index: sr_unix/io_open_try.c
===================================================================
--- sr_unix/io_open_try.c	(revision 6)
+++ sr_unix/io_open_try.c	(revision 45)
@@ -28,6 +28,9 @@
 #include "copy.h"
 #include "iottdef.h"
 #include "iomtdef.h"
+#ifdef WANT_GTM_PERL
+#include "ioperlAVdef.h"
+#endif
 #include "io_dev_dispatch.h"
 #ifdef __MVS__
 #include "iormdef.h"
@@ -166,6 +169,24 @@
 			else if (((sizeof("SOCKET") - 1) == mspace->str.len)
 				 && (0 == MEMCMP_LIT(dev_type, "SOCKET")))
 				tl->iod->type = gtmsocket;
+#ifdef WANT_GTM_PERL
+			else if (((sizeof(PERL_AV_NAMESPACE) - 1) == mspace->str.len)
+				 && (0 == MEMCMP_LIT(dev_type, PERL_AV_NAMESPACE)))
+                             {
+                                d_perlAV_struct *pav = (d_perlAV_struct *) malloc(sizeof(d_perlAV_struct));
+                                int name_offset = 0;
+                                memset(pav, 0, sizeof(d_perlAV_struct));
+                                /* the "@" at the beginning of the array is optional. */
+                                if(tn.len && tn.addr[0] == '@')
+                                  name_offset = 1;
+                                pav->avname = (char *) malloc(tn.len + 1 - name_offset);
+                                memcpy(pav->avname, tn.addr + name_offset, tn.len - name_offset);
+                                pav->avname[tn.len - name_offset] = 0;
+                                tl->iod->dev_sp = (void *) pav;
+                                tl->iod->type = perlAV;
+                                file_des = PERL_RESERVED_FD; /* to avoid real open */
+                             }
+#endif
 			else
 				tl->iod->type = us;
 		}
@@ -237,7 +258,14 @@
 		naml->iod = tl->iod;
 	}
 	active_device = naml->iod;
+#ifdef WANT_GTM_PERL
+        /* this is needed to avoid reopen as file*/
+        if(active_device->type == perlAV) {
+                file_des = PERL_RESERVED_FD;
+        }
+#endif
 
+
 	if ((-2 == file_des) && (dev_open != naml->iod->state) && (us != naml->iod->type)
 		&& (tcp != naml->iod->type) && (gtmsocket != naml->iod->type))
 	{
Index: sr_unix/op_fnztrnlnm.c
===================================================================
--- sr_unix/op_fnztrnlnm.c	(revision 6)
+++ sr_unix/op_fnztrnlnm.c	(revision 45)
@@ -18,7 +18,7 @@
 
 #include "stringpool.h"
 #include "nametabtyp.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "namelook.h"
 #include "mvalconv.h"
 
Index: sr_unix/mubinccpy.c
===================================================================
--- sr_unix/mubinccpy.c	(revision 6)
+++ sr_unix/mubinccpy.c	(revision 45)
@@ -51,9 +51,9 @@
 #include "iotimer.h"
 #include "eintr_wrappers.h"
 #include "sleep_cnt.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "io.h"
 #include "is_proc_alive.h"
 #include "is_raw_dev.h"
@@ -90,7 +90,7 @@
 						if (NULL != backup) 		\
 							iob_close(backup);	\
 						if (!debug_mupip)		\
-							UNLINK(file->addr);	\
+							gtm_UNLINK(file->addr);	\
 					}					\
 					return FALSE;				\
 				}
@@ -519,6 +519,6 @@
 	START_CH;
 	PRN_ERROR;
 	if (!debug_mupip)
-		UNLINK(incbackupfile);
+		gtm_UNLINK(incbackupfile);
 	UNWIND(dummy1, dummy2);
 }
Index: sr_unix/send_msg.c
===================================================================
--- sr_unix/send_msg.c	(revision 6)
+++ sr_unix/send_msg.c	(revision 45)
@@ -27,7 +27,7 @@
 
 #include "error.h"
 #include "fao_parm.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "util_out_print_vaparm.h"
 #include "send_msg.h"
 #include "caller_id.h"
Index: sr_unix/gtmsecshr_sock_cleanup.c
===================================================================
--- sr_unix/gtmsecshr_sock_cleanup.c	(revision 6)
+++ sr_unix/gtmsecshr_sock_cleanup.c	(revision 45)
@@ -47,7 +47,7 @@
 
 	sock_ptr = (CLIENT == caller) ? &gtmsecshr_cli_sock_name : &gtmsecshr_sock_name;
 
-	if (('\0' != sock_ptr->sun_path[0]) && (-1 == UNLINK(sock_ptr->sun_path))
+	if (('\0' != sock_ptr->sun_path[0]) && (-1 == gtm_UNLINK(sock_ptr->sun_path))
 		&& (ENOENT != errno))
 	{
 		save_errno = errno;
Index: sr_unix/mubexpfilnam.c
===================================================================
--- sr_unix/mubexpfilnam.c	(revision 6)
+++ sr_unix/mubexpfilnam.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "gdsfhead.h"
 #include "filestruct.h"
 #include "mupipbckup.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	bool	error_mupip;
 
Index: sr_unix/gvcst_init_sysops.c
===================================================================
--- sr_unix/gvcst_init_sysops.c	(revision 6)
+++ sr_unix/gvcst_init_sysops.c	(revision 45)
@@ -62,7 +62,7 @@
 #ifdef MUTEX_MSEM_WAKE
 #include "heartbeat_timer.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 #include "dbfilop.h"
 #include "gvcst_init_sysops.h"
 #include "is_raw_dev.h"
Index: sr_unix/op_fnzpid.c
===================================================================
--- sr_unix/op_fnzpid.c	(revision 6)
+++ sr_unix/op_fnzpid.c	(revision 45)
@@ -12,7 +12,7 @@
 /*** STUB FILE ***/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fnzpid(mint boolexpr,mval *ret)
 {
Index: sr_unix/init_gtm.c
===================================================================
--- sr_unix/init_gtm.c	(revision 6)
+++ sr_unix/init_gtm.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "fileinfo.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "tp_timeout.h"
 #include "ctrlc_handler.h"
 #include "mprof.h"
Index: sr_unix/auto_zlink.c
===================================================================
--- sr_unix/auto_zlink.c	(revision 6)
+++ sr_unix/auto_zlink.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "urx.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "auto_zlink.h"
 
 GBLREF stack_frame	*frame_pointer;
Index: sr_unix/gtm_putmsg_list.c
===================================================================
--- sr_unix/gtm_putmsg_list.c	(revision 6)
+++ sr_unix/gtm_putmsg_list.c	(revision 45)
@@ -23,7 +23,7 @@
 
 #include "fao_parm.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "util_out_print_vaparm.h"
 #include "gtmmsg.h"
 #include "gtm_putmsg_list.h"
Index: sr_unix/mu_rndwn_file.c
===================================================================
--- sr_unix/mu_rndwn_file.c	(revision 6)
+++ sr_unix/mu_rndwn_file.c	(revision 45)
@@ -39,7 +39,7 @@
 #include "eintr_wrappers.h"
 #include "mu_rndwn_file.h"
 #include "performcaslatchcheck.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "send_msg.h"
 #include "tp_change_reg.h"
 #include "dbfilop.h"
Index: sr_unix/lke_fileio.c
===================================================================
--- sr_unix/lke_fileio.c	(revision 6)
+++ sr_unix/lke_fileio.c	(revision 45)
@@ -21,7 +21,7 @@
 #include "error.h"
 #include "cli.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "lke_fileio.h"
 
 
Index: sr_unix/mupip_upgrade_standalone.c
===================================================================
--- sr_unix/mupip_upgrade_standalone.c	(revision 6)
+++ sr_unix/mupip_upgrade_standalone.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "iosp.h"
 #include "eintr_wrappers.h"
 #include "ipcrmid.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupip_upgrade_standalone.h"
 #include "gdsroot.h"
 #include "gtm_facility.h"
Index: sr_unix/obj_file.c
===================================================================
--- sr_unix/obj_file.c	(revision 6)
+++ sr_unix/obj_file.c	(revision 45)
@@ -53,7 +53,7 @@
 {
         if (0 < object_file_des)
         {
-		UNLINK(object_file_name);
+		gtm_UNLINK(object_file_name);
 		close(object_file_des);
         }
 }
Index: sr_unix/util_output_cm.c
===================================================================
--- sr_unix/util_output_cm.c	(revision 6)
+++ sr_unix/util_output_cm.c	(revision 45)
@@ -24,7 +24,7 @@
 #include <varargs.h>
 #endif
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "util_out_print_vaparm.h"
 #include "cmi.h"
 
Index: sr_unix/op_fngetsyi.c
===================================================================
--- sr_unix/op_fngetsyi.c	(revision 6)
+++ sr_unix/op_fngetsyi.c	(revision 45)
@@ -12,7 +12,7 @@
 /*** STUB FILE ***/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fngetsyi(mval *keyword,mval *node,mval *ret)
 {
Index: sr_unix/comlist.mk
===================================================================
--- sr_unix/comlist.mk	(revision 6)
+++ sr_unix/comlist.mk	(revision 45)
@@ -14,7 +14,9 @@
 # 2. Define an environment variable gtm_curpro to point to the full path of the prior GT.M installation.
 #    (download and install GT.M binary distribution from SourceForge if you do not have
 #    GT.M installed already).
-# 3. To build debug version with no compiler optimzations -
+# 3. [Optional] Define an environment variable gtm_perl to point to the full path of
+#    a perl executable if you want to embed Perl
+# 4. To build debug version with no compiler optimzations -
 # 		gmake -f sr_unix/comlist.mk -I./sr_unix -I./sr_linux buildtypes=dbg
 #    To build a version enabling optimizations -
 #    		gmake -f sr_unix/comlist.mk -I./sr_unix -I./sr_linux buildtypes=pro
@@ -29,6 +31,23 @@
 ifeq ($(MAKELEVEL),0)
 #the first-level make invocation - rules to create & clean directories and build utilities selectively.
 
+# XXX hack alert - oesi
+# we check if perl-setting have changed and if
+# patch in/out some stuff
+
+ifndef source_checked
+foo=$(shell $(MAKE) -Csr_perl -f perl.mk source-check)
+source_checked=1
+endif
+
+# the target library is libgtmshr.so or libgtmperl.so
+shr_or_perl=shr
+ifdef gtm_perl
+shr_or_perl=perl
+endif
+
+
+   
 ifndef buildtypes
 buildtypes=pro
 endif
@@ -103,7 +122,7 @@
 include gtm_env_sp.mk
 
 # the list of all GT.M executables
-exe_list:=libgtmshr$(gt_ld_shl_suffix) $(exe_list) $(gt_svc_exe)
+exe_list:=libgtm$(shr_or_perl)$(gt_ld_shl_suffix) $(exe_list) $(gt_svc_exe)
 
 
 # In the following code, various categories of source files are filtered from allfiles_list into
@@ -355,12 +374,20 @@
 ../ftok: $(ftok_obj)
 	$(gt-ld)
 
-# build GT.M shared library(libgtmshr) from PIC-compiled .o files
-../libgtmshr$(gt_ld_shl_suffix): gtmshr_symbols.export $(gtmshr_obj) libmumps.a libgnpclient.a libcmisockettcp.a
+ifdef gtm_perl
+perllibs=$(shell $(gtm_perl) -MExtUtils::Embed -eldopts)
+else
+perllibs=
+endif
+
+
+   
+# build GT.M shared library(libgtmshr or libgtmperl) from PIC-compiled .o files
+../libgtm$(shr_or_perl)$(gt_ld_shl_suffix): gtmshr_symbols.export $(gtmshr_obj) libmumps.a libgnpclient.a libcmisockettcp.a
 	rm -f $@
 	@echo "linking $(notdir $@)..."
-	@echo $(gt_ld_linker) $(gt_ld_options) $(gt_ld_shl_options) $(gt_ld_options_gtmshr) -o $@ $(gtmshr_obj) -lmumps -lgnpclient -lcmisockettcp $(gt_ld_syslibs) > ../map/$(notdir $@).map 2>&1
-	@$(gt_ld_linker) $(gt_ld_options) $(gt_ld_shl_options) $(gt_ld_options_gtmshr) -o $@ $(gtmshr_obj) -lmumps -lgnpclient -lcmisockettcp $(gt_ld_syslibs) >> ../map/$(notdir $@).map 2>&1
+	@echo $(gt_ld_linker) $(gt_ld_options) $(gt_ld_shl_options) $(gt_ld_options_gtmshr) -o $@ $(gtmshr_obj) -lmumps -lgnpclient -lcmisockettcp $(perllibs) $(gt_ld_syslibs) > ../map/$(notdir $@).map 2>&1
+	@$(gt_ld_linker) $(gt_ld_options) $(gt_ld_shl_options) $(gt_ld_options_gtmshr) -o $@ $(gtmshr_obj) -lmumps -lgnpclient -lcmisockettcp $(perllibs) $(gt_ld_syslibs) >> ../map/$(notdir $@).map 2>&1
 
 gtcmconfig: $(gtc_list) gtcm_gcore
 	cp -f $^ ..
@@ -441,7 +468,8 @@
 ifdef gtm_curpro
 %_ctl.c:%.msg msg.m
 	gtm_dist=$(gtm_curpro);export gtm_dist;\
-		$(gtm_curpro)/mumps $(filter-out $<, $^);\
+		cp "$(filter-out $<, $^)" . ;\
+		$(gtm_curpro)/mumps ./msg.m;\
 		$(gtm_curpro)/mumps -run msg $< unix
 	@rm -f msg.o
 endif
Index: sr_unix/op_fngetjpi.c
===================================================================
--- sr_unix/op_fngetjpi.c	(revision 6)
+++ sr_unix/op_fngetjpi.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "stringpool.h"
 #include "gtm_times.h"
 #include "gtm_caseconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "is_proc_alive.h"
 
Index: sr_unix/gtm_startup.c
===================================================================
--- sr_unix/gtm_startup.c	(revision 6)
+++ sr_unix/gtm_startup.c	(revision 45)
@@ -53,7 +53,7 @@
 #include "xfer_enum.h"
 #endif
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gt_timer.h"
 #include "io.h"
 #include "dpgbldir.h"
Index: sr_unix/gtmsiginfo.h
===================================================================
--- sr_unix/gtmsiginfo.h	(revision 6)
+++ sr_unix/gtmsiginfo.h	(revision 45)
@@ -49,7 +49,7 @@
 #define DEFER_SUSPEND		1	/* Suspend deferred */
 #define NOW_SUSPEND		2	/* Suspend now; will indicate that we "suspended" ourselves when woken up */
 
-/* States of exit_state
+/* gtm_States of exit_state
  *
  * Normal state is no exit is pending. When we receive a signal, we are either going
  * to go into a pending state (wait until out of crit) or an immediate state (going
Index: sr_unix/mur_cre_file_extfmt.c
===================================================================
--- sr_unix/mur_cre_file_extfmt.c	(revision 6)
+++ sr_unix/mur_cre_file_extfmt.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "gtmio.h"
 #include "io.h"
 #include "io_params.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "iosp.h"
 #include "gtmmsg.h"
 #include "gtm_rename.h"
Index: sr_unix/mutex_sock_cleanup.c
===================================================================
--- sr_unix/mutex_sock_cleanup.c	(revision 6)
+++ sr_unix/mutex_sock_cleanup.c	(revision 45)
@@ -44,7 +44,7 @@
 		close(mutex_sock_fd);
 		mutex_sock_fd = -1;
 	}
-	if ((NULL != mutex_sock_address.sun_path) && (-1 == UNLINK(mutex_sock_address.sun_path))
+	if ((NULL != mutex_sock_address.sun_path) && (-1 == gtm_UNLINK(mutex_sock_address.sun_path))
 		&& (ENOENT != errno))
 	{
 		save_errno = errno;
Index: sr_unix/gds_rundown.c
===================================================================
--- sr_unix/gds_rundown.c	(revision 6)
+++ sr_unix/gds_rundown.c	(revision 45)
@@ -39,7 +39,7 @@
 #include "gtmsource.h"
 #include "aswp.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "send_msg.h"
 #include "change_reg.h"
 #include "compswap.h"
Index: sr_unix/mupip_upgrade.c
===================================================================
--- sr_unix/mupip_upgrade.c	(revision 6)
+++ sr_unix/mupip_upgrade.c	(revision 45)
@@ -45,7 +45,7 @@
 #include "copy.h"
 #include "error.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "gtm_caseconv.h"
 #include "is_file_identical.h"
Index: sr_unix/mupip_set_file.c
===================================================================
--- sr_unix/mupip_set_file.c	(revision 6)
+++ sr_unix/mupip_set_file.c	(revision 45)
@@ -39,7 +39,7 @@
 #include "hashtab.h"
 #include "buddy_list.h"
 #include "tp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupip_set.h"
 #include "mu_rndwn_file.h"
 #include "mupip_exit.h"
Index: sr_unix/op_zedit.c
===================================================================
--- sr_unix/op_zedit.c	(revision 6)
+++ sr_unix/op_zedit.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "eintr_wrappers.h"
 #include "stringpool.h"
 #include "setterm.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	io_pair		io_std_device;
 GBLREF	mstr 		dollar_zsource;
Index: sr_unix/backup_buffer_flush.c
===================================================================
--- sr_unix/backup_buffer_flush.c	(revision 6)
+++ sr_unix/backup_buffer_flush.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "lockconst.h"
 #include "interlock.h"
 #include "gtmio.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupipbckup.h"
 
 GBLREF	uint4	process_id;
Index: sr_unix/gtm_file_remove.c
===================================================================
--- sr_unix/gtm_file_remove.c	(revision 6)
+++ sr_unix/gtm_file_remove.c	(revision 45)
@@ -21,7 +21,7 @@
 {
 	assert(0== fn[fn_len]);
 	*ustatus = SS_NORMAL;	/* used in VMS only */
-	if (-1 == UNLINK(fn))
+	if (-1 == gtm_UNLINK(fn))
 		return errno;
 	return SS_NORMAL;
 }
Index: sr_unix/mupip_exit_handler.c
===================================================================
--- sr_unix/mupip_exit_handler.c	(revision 6)
+++ sr_unix/mupip_exit_handler.c	(revision 45)
@@ -40,7 +40,7 @@
 #include "eintr_wrappers.h"
 #include "repl_log.h"
 #include "gt_timer.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mutex.h"
 #include "gv_rundown.h"
 #include "mu_term_setup.h"
Index: sr_unix/mu_rndwn_all.c
===================================================================
--- sr_unix/mu_rndwn_all.c	(revision 6)
+++ sr_unix/mu_rndwn_all.c	(revision 45)
@@ -43,7 +43,7 @@
 #include "gtmrecv.h"
 #include "gtm_logicals.h"
 #include "min_max.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mu_rndwn_replpool.h"
 #include "mu_rndwn_all.h"
 #include "mu_gv_cur_reg_init.h"
@@ -175,7 +175,7 @@
 		memcpy(fname, nl_addr->fname, MAX_FN_LEN + 1);
 		fname[MAX_FN_LEN] = '\0';			/* make sure the fname is null terminated */
 		fname_len = strlen(fname);
-		if (-1 == Stat(fname, &st_buff))		/* check if there is any such file */
+		if (-1 == gtm_Stat(fname, &st_buff))		/* check if there is any such file */
 		{
 			shmdt((void *)start_addr);
 			free(parm_buff);
Index: sr_unix/gtm_dump_core.c
===================================================================
--- sr_unix/gtm_dump_core.c	(revision 6)
+++ sr_unix/gtm_dump_core.c	(revision 45)
@@ -39,13 +39,13 @@
            make a simplistic attempt to rename it so we can get the most useful info
            possible. */
 
-        if (0 == Stat("core", &fs1))            /* If core exists (and stat command works) */
+        if (0 == gtm_Stat("core", &fs1))            /* If core exists (and stat command works) */
         {
                 status = -1;
                 for (suffix = 1; 0 != status && suffix < 100; ++suffix)
                 {
                         sprintf(&newname[0], "core%d", suffix);         /* Make new file name */
-                        status = Stat(&newname[0], &fs1);               /* This file exist ? */
+                        status = gtm_Stat(&newname[0], &fs1);               /* This file exist ? */
                         if (0 != status)
                                 status = rename("core", &newname[0]);   /* No, attempt the rename */
                         else
Index: sr_unix/fgn_getinfo.c
===================================================================
--- sr_unix/fgn_getinfo.c	(revision 6)
+++ sr_unix/fgn_getinfo.c	(revision 45)
@@ -16,7 +16,7 @@
 
 #include "rtnhdr.h"
 #include "fgncal.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 #include "error.h"
 
Index: sr_unix/mu_rndwn_repl_instance.c
===================================================================
--- sr_unix/mu_rndwn_repl_instance.c	(revision 6)
+++ sr_unix/mu_rndwn_repl_instance.c	(revision 45)
@@ -48,7 +48,7 @@
 #include "eintr_wrappers.h"
 #include "ftok_sems.h"
 #include "mu_rndwn_all.h"
-#include "util.h"
+#include "gtm_util.h"
 #ifdef UNIX
 #include "ipcrmid.h"	/* for sem_rmid() prototype */
 #endif
Index: sr_unix/iomb_close.c
===================================================================
--- sr_unix/iomb_close.c	(revision 6)
+++ sr_unix/iomb_close.c	(revision 45)
@@ -53,7 +53,7 @@
 		if (mb_ptr->del_on_close || (!mb_ptr->prmflg))
 		{
 			path = device->trans_name->dollar_io;
-			if ((status = UNLINK(path)) == -1)
+			if ((status = gtm_UNLINK(path)) == -1)
 				rts_error(VARLSTCNT(1) errno);
 		}
 	}
Index: sr_unix/lke.c
===================================================================
--- sr_unix/lke.c	(revision 6)
+++ sr_unix/lke.c	(revision 45)
@@ -42,7 +42,7 @@
 #include "tp.h"
 #include "repl_msg.h"
 #include "gtmsource.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cache.h"
 #include "gt_timer.h"
 #include "lke.h"
Index: sr_unix/op_fnfgncal.c
===================================================================
--- sr_unix/op_fnfgncal.c	(revision 6)
+++ sr_unix/op_fnfgncal.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "copy.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "fgncal.h"
 #include "gtmci.h"
 #include "gtmxc_types.h"
Index: sr_unix/secshr_client.c
===================================================================
--- sr_unix/secshr_client.c	(revision 6)
+++ sr_unix/secshr_client.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "iosp.h"
 #include "error.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "send_msg.h"
 #include "gtmmsg.h"
 #include "wcs_backoff.h"
@@ -181,7 +181,7 @@
 					ERR_TEXT, 2, RTS_ERROR_STRING(secshr_unbl_start_mesg_code[INVTRANSGTMSECSHR]));
 		}
 		gtmsecshr_pathname.addr[gtmsecshr_pathname.len] = '\0';
-		if (-1 == Stat(gtmsecshr_pathname.addr, &stat_buf))
+		if (-1 == gtm_Stat(gtmsecshr_pathname.addr, &stat_buf))
 			rts_error(VARLSTCNT(8) ERR_SYSCALL, 5, LEN_AND_LIT("stat"), CALLFROM, errno);
 		if ((ROOTUID != stat_buf.st_uid) ||
 			!(stat_buf.st_mode & S_ISUID))
Index: sr_unix/mu_load_input.c
===================================================================
--- sr_unix/mu_load_input.c	(revision 6)
+++ sr_unix/mu_load_input.c	(revision 45)
@@ -25,7 +25,7 @@
 #include "gtmio.h"
 #include "io_params.h"
 #include "gtm_stat.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mu_load_input.h"
 
 #define BUFF_SIZE	65536
Index: sr_unix/op_fnrandom.c
===================================================================
--- sr_unix/op_fnrandom.c	(revision 6)
+++ sr_unix/op_fnrandom.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 #include "gtm_time.h"
 
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 GBLREF int4 process_id;
Index: sr_unix/mupip_set_jnlfile.c
===================================================================
--- sr_unix/mupip_set_jnlfile.c	(revision 6)
+++ sr_unix/mupip_set_jnlfile.c	(revision 45)
@@ -32,7 +32,7 @@
 #include "mupip_set.h"
 #include "mupint.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mu_rndwn_file.h"
 #include "ftok_sems.h"
 
Index: sr_unix/get_lib_dirs.mk
===================================================================
--- sr_unix/get_lib_dirs.mk	(revision 6)
+++ sr_unix/get_lib_dirs.mk	(revision 45)
@@ -10,11 +10,17 @@
 #################################################################
 ############### Define platform-specific directory ring-down ##################################
 
+ifdef gtm_perl
+gt_perl_sp=perl
+else
+gt_perl_sp=
+endif
+
 ifndef usertype
 ifeq ($(gt_os_type), OSF1)
-common_dirs_sp=unix_gnp unix_cm unix port_cm port
+common_dirs_sp=unix_gnp unix_cm unix port_cm port $(gt_perl_sp)
 else
-common_dirs_sp=unix_gnp unix_cm unix_nsb unix port_cm port
+common_dirs_sp=unix_gnp unix_cm unix_nsb unix port_cm port $(gt_perl_sp)
 endif
 gt_os_type=$(shell uname -s)
 gt_machine_type=$(shell uname -m)
Index: sr_unix/source_file.c
===================================================================
--- sr_unix/source_file.c	(revision 6)
+++ sr_unix/source_file.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "io.h"
 #include "io_params.h"
 #include "eintr_wrappers.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "source_file.h"
 #include "zroutines.h"
 
@@ -85,9 +85,15 @@
 			memcpy(source_file_name, ret.str.addr, source_name_len);
 			source_file_name[source_name_len] = 0;
 			p = &source_file_name[plen.p.pblk.b_dir];
+#ifndef WANT_GTM_PERL
+                          /* funny guys MDEFAULT.o, eh, I *DO* all builds within /dev/shm.
+                           * ever seen bind mounts ? man fake-security !!
+                           */
 			if ((plen.p.pblk.b_dir >= sizeof("/dev/") - 1) && !MEMCMP_LIT(source_file_name, "/dev/"))
 				tt_so_do_once = TRUE;
-			else if (plen.p.pblk.b_ext != 2
+                        else
+#endif
+			if (plen.p.pblk.b_ext != 2
 				 || ('M' != p[plen.p.pblk.b_name + 1]  &&  'm' != p[plen.p.pblk.b_name + 1]))
 			{
 				dec_err(VARLSTCNT(4) ERR_FILEPARSE, 2, source_name_len, source_file_name);
Index: sr_unix/set_zstatus.c
===================================================================
--- sr_unix/set_zstatus.c	(revision 6)
+++ sr_unix/set_zstatus.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "mvalconv.h"
 #include "error_trap.h"
 #include "trans_code_cleanup.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 
 GBLREF mval		dollar_zstatus, dollar_zerror;
Index: sr_unix/gtmci_ch.c
===================================================================
--- sr_unix/gtmci_ch.c	(revision 6)
+++ sr_unix/gtmci_ch.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "error_trap.h"
 #include "fgncal.h"
 #include "gtmci.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF  unsigned char		*msp;
 GBLREF  int                     mumps_status;
Index: sr_unix/jnlext_write.c
===================================================================
--- sr_unix/jnlext_write.c	(revision 6)
+++ sr_unix/jnlext_write.c	(revision 45)
@@ -26,7 +26,7 @@
 #include "muprec.h"
 #include "io.h"
 #include "io_params.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF io_pair          io_curr_device;
 static readonly unsigned char open_params_list[] =
Index: sr_unix/op_horolog.c
===================================================================
--- sr_unix/op_horolog.c	(revision 6)
+++ sr_unix/op_horolog.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "gtm_time.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "dollarh.h"
 
 GBLREF spdesc	stringpool;
Index: sr_unix/ctrly_set.c
===================================================================
--- sr_unix/ctrly_set.c	(revision 6)
+++ sr_unix/ctrly_set.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "xfer_enum.h"
 #include "outofband.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "deferred_events.h"
 
 
Index: sr_unix/mu_gvis.c
===================================================================
--- sr_unix/mu_gvis.c	(revision 6)
+++ sr_unix/mu_gvis.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "fileinfo.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "format_targ_key.h"
 #include "mu_gvis.h"
 
Index: sr_unix/rts_error.c
===================================================================
--- sr_unix/rts_error.c	(revision 6)
+++ sr_unix/rts_error.c	(revision 45)
@@ -25,7 +25,7 @@
 #include <errno.h>
 
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF int		gtm_errno;
 GBLREF boolean_t 	created_core;
Index: sr_unix/dse_open.c
===================================================================
--- sr_unix/dse_open.c	(revision 6)
+++ sr_unix/dse_open.c	(revision 45)
@@ -32,8 +32,8 @@
 #include "iosp.h"
 #include "io_params.h"
 #include "stringpool.h"
-#include "util.h"
-#include "op.h"
+#include "gtm_util.h"
+#include "gtm_op.h"
 
 GBLREF int	sys_nerr;
 
Index: sr_unix/mu_signal_process.c
===================================================================
--- sr_unix/mu_signal_process.c	(revision 6)
+++ sr_unix/mu_signal_process.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "gtm_string.h"
 #include "gtm_stdio.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupip_exit.h"
 #include "mupip_stop.h"
 #include "mu_signal_process.h"
Index: sr_unix/gtm_main.c
===================================================================
--- sr_unix/gtm_main.c	(revision 6)
+++ sr_unix/gtm_main.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "gtmimagename.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "tp_timeout.h"
 #include "ctrlc_handler.h"
 #include "mprof.h"
Index: sr_unix/iorm_close.c
===================================================================
--- sr_unix/iorm_close.c	(revision 6)
+++ sr_unix/iorm_close.c	(revision 45)
@@ -58,7 +58,7 @@
 				if (-1 == stat_res)
 					rts_error(VARLSTCNT(1) errno);
 				if (fstatbuf.st_ino == statbuf.st_ino)
-					if (UNLINK(path) == -1)
+					if (gtm_UNLINK(path) == -1)
 						rts_error(VARLSTCNT(1) errno);
 				break;
 			case iop_rename:
@@ -73,7 +73,7 @@
 				if (fstatbuf.st_ino == statbuf.st_ino)
 				{	if (LINK(path, path2) == -1)
 						rts_error(VARLSTCNT(1) errno);
-					if (UNLINK(path) == -1)
+					if (gtm_UNLINK(path) == -1)
 						rts_error(VARLSTCNT(1) errno);
 				}
 				break;
Index: sr_unix/mubgetfil.c
===================================================================
--- sr_unix/mubgetfil.c	(revision 6)
+++ sr_unix/mubgetfil.c	(revision 45)
@@ -30,7 +30,7 @@
 #include "buddy_list.h"
 #include "tp.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_caseconv.h"
 #include "mupip_exit.h"
 
Index: sr_unix/op_fnzparse.c
===================================================================
--- sr_unix/op_fnzparse.c	(revision 6)
+++ sr_unix/op_fnzparse.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "parse_file.h"
 #include "gtm_caseconv.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 #define ZP_DEVICE	1
 #define ZP_DIRECTORY	2
Index: sr_unix/ojstartchild.c
===================================================================
--- sr_unix/ojstartchild.c	(revision 6)
+++ sr_unix/ojstartchild.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "eintr_wrappers.h"
 #include "compiler.h"
 #include "job_addr.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gdsroot.h"
 #include "gtm_facility.h"
 #include "fileinfo.h"
Index: sr_unix/op_fnzpriv.c
===================================================================
--- sr_unix/op_fnzpriv.c	(revision 6)
+++ sr_unix/op_fnzpriv.c	(revision 45)
@@ -12,7 +12,7 @@
 /*** STUB FILE ***/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fnzpriv(mval *prv,mval *ret)
 {
Index: sr_unix/op_zmess.c
===================================================================
--- sr_unix/op_zmess.c	(revision 6)
+++ sr_unix/op_zmess.c	(revision 45)
@@ -17,7 +17,7 @@
 
 #include "fao_parm.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 #ifndef EARLY_VARARGS
 #include <varargs.h>
 #endif
Index: sr_unix/cli.c
===================================================================
--- sr_unix/cli.c	(revision 6)
+++ sr_unix/cli.c	(revision 45)
@@ -20,7 +20,7 @@
 #include <errno.h>
 
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli_parse.h"
 
 /*
Index: sr_unix/t_end_sysops.c
===================================================================
--- sr_unix/t_end_sysops.c	(revision 6)
+++ sr_unix/t_end_sysops.c	(revision 45)
@@ -54,7 +54,7 @@
 #include "error.h"		/* for gtm_fork_n_core() prototype */
 
 /* Include prototypes */
-#include "util.h"
+#include "gtm_util.h"
 #include "send_msg.h"
 #include "bit_set.h"
 #include "bit_clear.h"
Index: sr_unix/extern_func.c
===================================================================
--- sr_unix/extern_func.c	(revision 6)
+++ sr_unix/extern_func.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_unix/ftok_sems.c
===================================================================
--- sr_unix/ftok_sems.c	(revision 6)
+++ sr_unix/ftok_sems.c	(revision 45)
@@ -45,7 +45,7 @@
 #include "do_semop.h"
 #include "ipcrmid.h"
 #include "gtmmsg.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "ftok_sems.h"
 #include "semwt2long_handler.h"
 
Index: sr_unix/op_zattach.c
===================================================================
--- sr_unix/op_zattach.c	(revision 6)
+++ sr_unix/op_zattach.c	(revision 45)
@@ -13,7 +13,7 @@
 
 #include "mdef.h"
 #include "io.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_zattach(mval *v)
 {	error_def(ERR_UNIMPLOP);
Index: sr_unix/ttt.c
===================================================================
--- sr_unix/ttt.c	(revision 6)
+++ sr_unix/ttt.c	(revision 45)
@@ -1,580 +0,0 @@
-/****************************************************************
- *								*
- *	Copyright 2001, 2004 Sanchez Computer Associates, Inc.	*
- *								*
- *	This source code contains the intellectual property	*
- *	of its copyright holder(s), and is made available	*
- *	under a license.  If you do not know the terms of	*
- *	the license, please stop and do not read further.	*
- *								*
- ****************************************************************/
-
-#include "mdef.h"
-#include "vxi.h"
-#include "vxt.h"
-#include "xfer_enum.h"
-LITDEF short ttt[3495] = {
-
-/*    0 */	0,0,0,0,269,2973,2565,502,
-/*    8 */	1965,2550,2589,1661,365,2923,1779,2690,
-/*   16 */	1844,1835,3156,3190,1820,1883,1829,1874,
-/*   24 */	1853,1802,697,712,724,736,778,796,
-/*   32 */	811,840,877,892,910,2675,981,1014,
-/*   40 */	1050,1116,1167,1395,1410,1425,1455,1494,
-/*   48 */	1506,1530,1557,1578,1593,2988,3010,0,
-/*   56 */	0,0,0,517,0,458,0,1647,
-/*   64 */	0,2661,0,0,0,0,0,0,
-/*   72 */	301,377,1943,1949,2357,2384,2393,2490,
-/*   80 */	2428,2419,2505,3062,3146,2610,0,2640,
-/*   88 */	2756,2719,2704,2734,2937,2855,3068,3080,
-/*   96 */	3095,3119,3128,3113,3104,2888,3186,3199,
-/*  104 */	3221,3246,3258,3279,3303,3363,0,0,
-/*  112 */	2538,1925,2803,3444,585,3447,639,2399,
-/*  120 */	2769,472,478,3450,2041,2110,2015,425,
-/*  128 */	2051,2130,1811,2073,2140,3453,1910,1901,
-/*  136 */	3457,1185,3458,297,293,2879,389,3462,
-/*  144 */	3465,3468,2626,3471,3474,3477,3480,3483,
-/*  152 */	3486,2959,0,2514,2197,2174,1374,2165,
-/*  160 */	1961,1793,2465,1679,664,2455,0,0,
-/*  168 */	1980,3137,3165,1362,3089,2063,1675,487,
-/*  176 */	3270,1542,1892,1101,2181,284,2760,559,
-/*  184 */	617,540,595,3234,1029,3214,2603,1919,
-/*  192 */	2529,2617,578,924,2469,3489,2120,3318,
-/*  200 */	3333,3348,449,2484,2752,1620,3384,3375,
-/*  208 */	1203,2951,531,1440,1482,2085,3492,3022,
-/*  216 */	2156,673,754,2786,3177,3046,3032,3039,
-/*  224 */	3028,649,825,2028,963,2002,951,2580,
-/*  232 */	1862,936,996,2097,1332,1275,1260,1314,
-/*  240 */	1230,1242,1287,1215,1299,1347,0,2909,
-/*  248 */	0,852,862,2834,1569,2813,1989,3420,
-/*  256 */	3390,3396,3408,3430,1140,1152,1074,1086,
-/*  264 */	1128,3000,1470,1605,0,VXI_PUSHAB,VXT_VAL,0,
-/*  272 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  280 */	3,VXT_XFER,4 * (short int) xf_add,VXT_END,
-/*  284 */	VXT_IREPL,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_bindparm,
-/*  292 */	VXT_END,
-/*  293 */	VXI_INCL,VXT_VAL,1,VXT_END,
-/*  297 */	VXI_CLRL,VXT_VAL,0,VXT_END,
-/*  301 */	VXI_JSB,VXT_XFER,4 * (short int) xf_break,VXT_END,
-/*  305 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_callb,VXI_BRB,VXT_JMP,
-/*  313 */	1,VXT_END,
-/*  315 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_calll,VXI_JMP,VXT_JMP,
-/*  323 */	1,VXT_END,
-/*  325 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_callw,VXI_BRW,VXT_JMP,
-/*  333 */	1,VXT_END,
-/*  335 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_callspb,VXI_BRB,VXT_JMP,
-/*  343 */	1,VXT_END,
-/*  345 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_callspl,VXI_JMP,VXT_JMP,
-/*  353 */	1,VXT_END,
-/*  355 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_callspw,VXI_BRW,VXT_JMP,
-/*  363 */	1,VXT_END,
-/*  365 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/*  373 */	1,VXT_XFER,4 * (short int) xf_cat,VXT_END,
-/*  377 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  385 */	2,VXT_XFER,4 * (short int) xf_close,VXT_END,
-/*  389 */	VXI_BICB2,VXT_LIT,1,VXT_REG,0x5A,VXI_JSB,VXT_XFER,4 * (short int) xf_dt_false,
-/*  397 */	VXT_END,
-/*  398 */	VXI_TSTL,VXT_VAL,1,VXT_END,
-/*  402 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_mval2bool,
-/*  410 */	VXT_END,
-/*  411 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_mval2mint,
-/*  419 */	VXI_MOVL,VXT_REG,0x50,VXT_VAL,0,VXT_END,
-/*  425 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/*  433 */	4 * (short int) xf_commarg,VXT_END,
-/*  435 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x50,VXI_MOVL,VXT_VAL,1,
-/*  443 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_mint2mval,VXT_END,
-/*  449 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_mval2num,
-/*  457 */	VXT_END,
-/*  458 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/*  466 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_contain,VXT_END,
-/*  472 */	VXI_MOVL,VXT_REG,0x6C,VXT_ADDR,0,VXT_END,
-/*  478 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_currtn,
-/*  486 */	VXT_END,
-/*  487 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/*  495 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_cvtparm,VXT_END,
-/*  502 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  510 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_div,VXT_END,
-/*  517 */	VXI_MOVAB,VXT_VAL,2,VXT_REG,0x51,VXI_MOVAB,VXT_VAL,1,
-/*  525 */	VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_equ,VXT_END,
-/*  531 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_equnul,
-/*  539 */	VXT_END,
-/*  540 */	VXT_IREPAB,VXT_VAL,5,VXI_PUSHL,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/*  548 */	3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_LIT,0,VXI_JSB,
-/*  556 */	VXT_XFER,4 * (short int) xf_exfun,VXT_END,
-/*  559 */	VXT_IREPAB,VXT_VAL,5,VXI_PUSHL,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/*  567 */	3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_JSB,
-/*  575 */	VXT_XFER,4 * (short int) xf_exfun,VXT_END,
-/*  578 */	VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_exfunret,VXT_END,
-/*  585 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/*  593 */	4 * (short int) xf_extcall,VXT_END,
-/*  595 */	VXT_IREPAB,VXT_VAL,5,VXI_PUSHL,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/*  603 */	3,VXI_PUSHL,VXT_LIT,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/*  611 */	VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_extexfun,VXT_END,
-/*  617 */	VXT_IREPAB,VXT_VAL,5,VXI_PUSHL,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/*  625 */	3,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/*  633 */	VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_extexfun,VXT_END,
-/*  639 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/*  647 */	4 * (short int) xf_extjmp,VXT_END,
-/*  649 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  657 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_exp,VXT_END,
-/*  664 */	VXT_IREPL,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_fetch,
-/*  672 */	VXT_END,
-/*  673 */	VXT_IREPAB,VXT_VAL,6,VXI_PUSHL,VXT_VAL,5,VXI_PUSHL,VXT_VAL,
-/*  681 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,
-/*  689 */	VXT_LIT,0,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_fnfgncal,VXT_END,
-/*  697 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHL,VXT_VAL,
-/*  705 */	2,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnascii,VXT_END,
-/*  712 */	VXT_IREPL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/*  720 */	1,VXT_XFER,4 * (short int) xf_fnchar,VXT_END,
-/*  724 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  732 */	2,VXT_XFER,4 * (short int) xf_fndata,VXT_END,
-/*  736 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHL,VXT_VAL,
-/*  744 */	2,VXI_PUSHL,VXT_VAL,3,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/*  752 */	4 * (short int) xf_fnextract,VXT_END,
-/*  754 */	VXT_IREPAB,VXT_VAL,6,VXI_PUSHL,VXT_VAL,5,VXI_PUSHL,VXT_VAL,
-/*  762 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/*  770 */	VXT_VAL,0,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_fnfgncal,VXT_END,
-/*  778 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/*  786 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/*  794 */	4 * (short int) xf_fnfind,VXT_END,
-/*  796 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  804 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnfnumber,VXT_END,
-/*  811 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_MOVAB,VXT_VAL,0,
-/*  819 */	VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_fnget,VXT_END,
-/*  825 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/*  833 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnget2,VXT_END,
-/*  840 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/*  848 */	2,VXT_XFER,4 * (short int) xf_fngvget,VXT_END,
-/*  852 */	VXI_PUSHAB,VXT_VAL,0,VXI_JSB,VXT_XFER,4 * (short int) xf_fngvget1,VXI_TSTL,VXT_REG,
-/*  860 */	0x50,VXT_END,
-/*  862 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/*  870 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngvget2,VXT_END,
-/*  877 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  885 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnj2,VXT_END,
-/*  892 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/*  900 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/*  908 */	4 * (short int) xf_fnj3,VXT_END,
-/*  910 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,1,
-/*  918 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_fnlength,VXT_END,
-/*  924 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  932 */	2,VXT_XFER,4 * (short int) xf_fnlvname,VXT_END,
-/*  936 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,
-/*  944 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnlvnameo2,VXT_END,
-/*  951 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  959 */	2,VXT_XFER,4 * (short int) xf_fnlvprvname,VXT_END,
-/*  963 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,1,VXI_PUSHL,VXT_VAL,
-/*  971 */	3,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,2,VXT_XFER,
-/*  979 */	4 * (short int) xf_fnname,VXT_END,
-/*  981 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  989 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnnext,VXT_END,
-/*  996 */	VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,
-/* 1004 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1012 */	4 * (short int) xf_fno2,VXT_END,
-/* 1014 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1022 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnorder,VXT_END,
-/* 1029 */	VXI_PUSHL,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,
-/* 1037 */	3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 1045 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_fnp1,VXT_END,
-/* 1050 */	VXI_PUSHL,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,
-/* 1058 */	4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/* 1066 */	VXT_VAL,1,VXI_CALLS,VXT_LIT,6,VXT_XFER,4 * (short int) xf_fnpiece,VXT_END,
-/* 1074 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1082 */	2,VXT_XFER,4 * (short int) xf_fnqlength,VXT_END,
-/* 1086 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1094 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnqsubscript,VXT_END,
-/* 1101 */	VXT_IREPAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1109 */	0,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_fnquery,VXT_END,
-/* 1116 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1124 */	2,VXT_XFER,4 * (short int) xf_fnrandom,VXT_END,
-/* 1128 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1136 */	2,VXT_XFER,4 * (short int) xf_fnreverse,VXT_END,
-/* 1140 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1148 */	2,VXT_XFER,4 * (short int) xf_fnstack1,VXT_END,
-/* 1152 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 1160 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnstack2,VXT_END,
-/* 1167 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 1175 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1183 */	4 * (short int) xf_fntext,VXT_END,
-/* 1185 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/* 1193 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1201 */	4 * (short int) xf_fntranslate,VXT_END,
-/* 1203 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/* 1211 */	1,VXT_XFER,4 * (short int) xf_fnview,VXT_END,
-/* 1215 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1223 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitand,VXT_END,
-/* 1230 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/* 1238 */	2,VXT_XFER,4 * (short int) xf_fnzbitcoun,VXT_END,
-/* 1242 */	VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1250 */	1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1258 */	4 * (short int) xf_fnzbitfind,VXT_END,
-/* 1260 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1268 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitget,VXT_END,
-/* 1275 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/* 1283 */	2,VXT_XFER,4 * (short int) xf_fnzbitlen,VXT_END,
-/* 1287 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/* 1295 */	2,VXT_XFER,4 * (short int) xf_fnzbitnot,VXT_END,
-/* 1299 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1307 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitor,VXT_END,
-/* 1314 */	VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1322 */	1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1330 */	4 * (short int) xf_fnzbitset,VXT_END,
-/* 1332 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1340 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitstr,VXT_END,
-/* 1347 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1355 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitxor,VXT_END,
-/* 1362 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/* 1370 */	1,VXT_XFER,4 * (short int) xf_fnzcall,VXT_END,
-/* 1374 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,
-/* 1382 */	3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 1390 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_fnzdate,VXT_END,
-/* 1395 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1403 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzfile,VXT_END,
-/* 1410 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1418 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngetdvi,VXT_END,
-/* 1425 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 1433 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngetjpi,VXT_END,
-/* 1440 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 1448 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngetlki,VXT_END,
-/* 1455 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1463 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngetsyi,VXT_END,
-/* 1470 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1478 */	2,VXT_XFER,4 * (short int) xf_fnzjobexam,VXT_END,
-/* 1482 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1490 */	2,VXT_XFER,4 * (short int) xf_fnzlkid,VXT_END,
-/* 1494 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1502 */	2,VXT_XFER,4 * (short int) xf_fnzm,VXT_END,
-/* 1506 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,
-/* 1514 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/* 1522 */	VXT_VAL,1,VXI_CALLS,VXT_LIT,6,VXT_XFER,4 * (short int) xf_fnzparse,VXT_END,
-/* 1530 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1538 */	2,VXT_XFER,4 * (short int) xf_fnzpid,VXT_END,
-/* 1542 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1550 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzprevious,VXT_END,
-/* 1557 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1565 */	2,VXT_XFER,4 * (short int) xf_fnzpriv,VXT_END,
-/* 1569 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_fnzqgblmod,
-/* 1577 */	VXT_END,
-/* 1578 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1586 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzsearch,VXT_END,
-/* 1593 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1601 */	2,VXT_XFER,4 * (short int) xf_fnzsetprv,VXT_END,
-/* 1605 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 1613 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzsigproc,VXT_END,
-/* 1620 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,6,VXI_PUSHAB,VXT_VAL,
-/* 1628 */	5,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,
-/* 1636 */	VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,7,
-/* 1644 */	VXT_XFER,4 * (short int) xf_fnztrnlnm,VXT_END,
-/* 1647 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/* 1655 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_follow,VXT_END,
-/* 1661 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,1,
-/* 1669 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_forcenum,VXT_END,
-/* 1675 */	VXI_JSB,VXT_XFER,4 * (short int) xf_forchk1,VXT_END,
-/* 1679 */	VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1687 */	1,VXI_JSB,VXT_XFER,4 * (short int) xf_forinit,VXT_END,
-/* 1692 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_forlcldob,VXI_BRB,VXT_JMP,
-/* 1700 */	1,VXT_END,
-/* 1702 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_forlcldol,VXI_JMP,VXT_JMP,
-/* 1710 */	1,VXT_END,
-/* 1712 */	VXI_PUSHL,VXT_VAL,2,VXI_JSB,VXT_XFER,4 * (short int) xf_forlcldow,VXI_BRW,VXT_JMP,
-/* 1720 */	1,VXT_END,
-/* 1722 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_JMP,1,VXI_PUSHAB,VXT_VAL,
-/* 1730 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_JSB,
-/* 1738 */	VXT_XFER,4 * (short int) xf_forloop,VXT_END,
-/* 1741 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_JMP,1,VXI_PUSHAB,VXT_VAL,
-/* 1749 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_JSB,
-/* 1757 */	VXT_XFER,4 * (short int) xf_forloop,VXT_END,
-/* 1760 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_JMP,1,VXI_PUSHAB,VXT_VAL,
-/* 1768 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_JSB,
-/* 1776 */	VXT_XFER,4 * (short int) xf_forloop,VXT_END,
-/* 1779 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_getindx,
-/* 1787 */	VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,VXT_END,
-/* 1793 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_gettruth,
-/* 1801 */	VXT_END,
-/* 1802 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvdata,
-/* 1810 */	VXT_END,
-/* 1811 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_gvextnam,
-/* 1819 */	VXT_END,
-/* 1820 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvget,
-/* 1828 */	VXT_END,
-/* 1829 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_gvkill,VXT_END,
-/* 1835 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_gvnaked,
-/* 1843 */	VXT_END,
-/* 1844 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_gvname,
-/* 1852 */	VXT_END,
-/* 1853 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvnext,
-/* 1861 */	VXT_END,
-/* 1862 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/* 1870 */	2,VXT_XFER,4 * (short int) xf_gvo2,VXT_END,
-/* 1874 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvorder,
-/* 1882 */	VXT_END,
-/* 1883 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvput,
-/* 1891 */	VXT_END,
-/* 1892 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvquery,
-/* 1900 */	VXT_END,
-/* 1901 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvrectarg,
-/* 1909 */	VXT_END,
-/* 1910 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvsavtarg,
-/* 1918 */	VXT_END,
-/* 1919 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_gvzwithdraw,VXT_END,
-/* 1925 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_IREPAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/* 1933 */	3,VXI_PUSHL,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,
-/* 1941 */	4 * (short int) xf_gvzwrite,VXT_END,
-/* 1943 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_halt,VXT_END,
-/* 1949 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1957 */	1,VXT_XFER,4 * (short int) xf_hang,VXT_END,
-/* 1961 */	VXI_JSB,VXT_XFER,4 * (short int) xf_hardret,VXT_END,
-/* 1965 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1973 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_idiv,VXT_END,
-/* 1980 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_igetsrc,
-/* 1988 */	VXT_END,
-/* 1989 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1997 */	1,VXI_JSB,VXT_XFER,4 * (short int) xf_inddevparms,VXT_END,
-/* 2002 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2010 */	0,VXI_JSB,VXT_XFER,4 * (short int) xf_indfnname,VXT_END,
-/* 2015 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2023 */	1,VXI_JSB,VXT_XFER,4 * (short int) xf_indfun,VXT_END,
-/* 2028 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2036 */	0,VXI_JSB,VXT_XFER,4 * (short int) xf_indget,VXT_END,
-/* 2041 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2049 */	4 * (short int) xf_indglvn,VXT_END,
-/* 2051 */	VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_indlvadr,VXI_MOVL,VXT_REG,
-/* 2059 */	0x50,VXT_ADDR,0,VXT_END,
-/* 2063 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2071 */	4 * (short int) xf_indlvarg,VXT_END,
-/* 2073 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/* 2081 */	1,VXT_XFER,4 * (short int) xf_indname,VXT_END,
-/* 2085 */	VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_indlvnamadr,VXI_MOVL,VXT_REG,
-/* 2093 */	0x50,VXT_ADDR,0,VXT_END,
-/* 2097 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2105 */	0,VXI_JSB,VXT_XFER,4 * (short int) xf_indo2,VXT_END,
-/* 2110 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2118 */	4 * (short int) xf_indpat,VXT_END,
-/* 2120 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2128 */	4 * (short int) xf_indrzshow,VXT_END,
-/* 2130 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2138 */	4 * (short int) xf_indset,VXT_END,
-/* 2140 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 2148 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_indtext,VXT_END,
-/* 2156 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_iocontrol,
-/* 2164 */	VXT_END,
-/* 2165 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_iretmvad,
-/* 2173 */	VXT_END,
-/* 2174 */	VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_iretmval,VXT_END,
-/* 2181 */	VXI_JSB,VXT_XFER,4 * (short int) xf_isformal,VXT_END,
-/* 2185 */	VXI_BRB,VXT_JMP,1,VXT_END,
-/* 2189 */	VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2193 */	VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2197 */	VXI_JMP,VXT_VAL,1,VXT_END,
-/* 2201 */	VXI_BEQL,VXT_JMP,1,VXT_END,
-/* 2205 */	VXI_BNEQ,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2212 */	VXI_BNEQ,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2219 */	VXI_BGEQ,VXT_JMP,1,VXT_END,
-/* 2223 */	VXI_BLSS,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2230 */	VXI_BLSS,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2237 */	VXI_BGTR,VXT_JMP,1,VXT_END,
-/* 2241 */	VXI_BLEQ,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2248 */	VXI_BLEQ,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2255 */	VXI_BLEQ,VXT_JMP,1,VXT_END,
-/* 2259 */	VXI_BGTR,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2266 */	VXI_BGTR,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2273 */	VXI_BLSS,VXT_JMP,1,VXT_END,
-/* 2277 */	VXI_BGEQ,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2284 */	VXI_BGEQ,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2291 */	VXI_BNEQ,VXT_JMP,1,VXT_END,
-/* 2295 */	VXI_BNEQ,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2302 */	VXI_BEQL,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2309 */	VXI_BLBC,VXT_REG,0x5A,VXT_JMP,1,VXT_END,
-/* 2315 */	VXI_BLBS,VXT_REG,0x5A,VXT_LIT,6,VXI_JMP,VXT_JMP,1,
-/* 2323 */	VXT_END,
-/* 2324 */	VXI_BLBS,VXT_REG,0x5A,VXT_LIT,3,VXI_BRW,VXT_JMP,1,
-/* 2332 */	VXT_END,
-/* 2333 */	VXI_BLBS,VXT_REG,0x5A,VXT_JMP,1,VXT_END,
-/* 2339 */	VXI_BLBC,VXT_REG,0x5A,VXT_LIT,6,VXI_JMP,VXT_JMP,1,
-/* 2347 */	VXT_END,
-/* 2348 */	VXI_BLBC,VXT_REG,0x5A,VXT_LIT,3,VXI_BRW,VXT_JMP,1,
-/* 2356 */	VXT_END,
-/* 2357 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_IREPAB,VXT_VAL,7,VXI_PUSHL,VXT_VAL,
-/* 2365 */	6,VXI_PUSHAB,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHL,
-/* 2373 */	VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,
-/* 2381 */	VXT_XFER,4 * (short int) xf_job,VXT_END,
-/* 2384 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_kill,
-/* 2392 */	VXT_END,
-/* 2393 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_killall,VXT_END,
-/* 2399 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2407 */	3,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_labaddr,VXI_MOVL,VXT_REG,
-/* 2415 */	0x50,VXT_ADDR,0,VXT_END,
-/* 2419 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_lckdecr,
-/* 2427 */	VXT_END,
-/* 2428 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_lckincr,
-/* 2436 */	VXT_END,
-/* 2437 */	VXI_MOVAB,VXT_JMP,1,VXT_ADDR,0,VXT_END,
-/* 2443 */	VXI_MOVAB,VXT_JMP,1,VXT_ADDR,0,VXT_END,
-/* 2449 */	VXI_MOVAB,VXT_JMP,1,VXT_ADDR,0,VXT_END,
-/* 2455 */	VXT_IREPL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2463 */	4 * (short int) xf_linefetch,VXT_END,
-/* 2465 */	VXI_JSB,VXT_XFER,4 * (short int) xf_linestart,VXT_END,
-/* 2469 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/* 2477 */	2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_lkname,VXT_END,
-/* 2484 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_lkinit,VXT_END,
-/* 2490 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 2498 */	2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_lkname,VXT_END,
-/* 2505 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_lock,
-/* 2513 */	VXT_END,
-/* 2514 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_IREPAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 2522 */	2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_lvpatwrite,VXT_END,
-/* 2529 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_lvzwithdraw,
-/* 2537 */	VXT_END,
-/* 2538 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,
-/* 2546 */	1,VXT_XFER,4 * (short int) xf_lvzwrite,VXT_END,
-/* 2550 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2558 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_flt_mod,VXT_END,
-/* 2565 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2573 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_mul,VXT_END,
-/* 2580 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_namechk,
-/* 2588 */	VXT_END,
-/* 2589 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,1,
-/* 2597 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_neg,VXT_END,
-/* 2603 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_newintrinsic,VXT_END,
-/* 2610 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_newvar,VXT_END,
-/* 2617 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_nullexp,
-/* 2625 */	VXT_END,
-/* 2626 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/* 2634 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_numcmp,VXT_END,
-/* 2640 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/* 2648 */	3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 2656 */	VXT_LIT,4,VXT_XFER,4 * (short int) xf_open,VXT_END,
-/* 2661 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/* 2669 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_pattern,VXT_END,
-/* 2675 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2683 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_population,VXT_END,
-/* 2690 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_putindx,
-/* 2698 */	VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,VXT_END,
-/* 2704 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHL,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2712 */	0,VXI_CALLS,VXT_LIT,2,VXT_XFER,4 * (short int) xf_rdone,VXT_END,
-/* 2719 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHL,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2727 */	0,VXI_CALLS,VXT_LIT,2,VXT_XFER,4 * (short int) xf_read,VXT_END,
-/* 2734 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 2742 */	1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,3,VXT_XFER,
-/* 2750 */	4 * (short int) xf_readfl,VXT_END,
-/* 2752 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_END,
-/* 2756 */	VXI_JSB,VXT_XFER,4 * (short int) xf_ret,VXT_END,
-/* 2760 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_retarg,
-/* 2768 */	VXT_END,
-/* 2769 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 2777 */	2,VXT_XFER,4 * (short int) xf_rhdaddr,VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,
-/* 2785 */	VXT_END,
-/* 2786 */	VXI_PUSHL,VXT_LIT,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 2794 */	2,VXT_XFER,4 * (short int) xf_rhdaddr,VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,
-/* 2802 */	VXT_END,
-/* 2803 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2811 */	4 * (short int) xf_rterror,VXT_END,
-/* 2813 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 2821 */	2,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 2829 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_setextract,VXT_END,
-/* 2834 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/* 2842 */	4,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 2850 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_setp1,VXT_END,
-/* 2855 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/* 2863 */	3,VXI_PUSHAB,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/* 2871 */	VXT_VAL,1,VXI_CALLS,VXT_LIT,6,VXT_XFER,4 * (short int) xf_setpiece,VXT_END,
-/* 2879 */	VXI_BISB2,VXT_LIT,1,VXT_REG,0x5A,VXI_JSB,VXT_XFER,4 * (short int) xf_dt_true,
-/* 2887 */	VXT_END,
-/* 2888 */	VXI_PUSHL,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/* 2896 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,3,VXI_CALLS,
-/* 2904 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_setzbrk,VXT_END,
-/* 2909 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/* 2917 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_sorts_after,VXT_END,
-/* 2923 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_srchindx,
-/* 2931 */	VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,VXT_END,
-/* 2937 */	VXI_MOVAB,VXT_VAL,2,VXT_REG,0x51,VXI_MOVAB,VXT_VAL,1,
-/* 2945 */	VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_sto,VXT_END,
-/* 2951 */	VXI_MOVC3,VXT_LIT,16,VXT_VAL,2,VXT_VAL,1,VXT_END,
-/* 2959 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_MOVAB,VXT_VAL,0,
-/* 2967 */	VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_sto,VXT_END,
-/* 2973 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2981 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_sub,VXT_END,
-/* 2988 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 2996 */	2,VXT_XFER,4 * (short int) xf_svget,VXT_END,
-/* 3000 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 3008 */	4 * (short int) xf_psvput,VXT_END,
-/* 3010 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3018 */	2,VXT_XFER,4 * (short int) xf_svput,VXT_END,
-/* 3022 */	VXI_MOVL,VXT_REG,0x50,VXT_REG,0x5A,VXT_END,
-/* 3028 */	VXI_JSB,VXT_XFER,4 * (short int) xf_tcommit,VXT_END,
-/* 3032 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_trollback,VXT_END,
-/* 3039 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_trestart,VXT_END,
-/* 3046 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/* 3054 */	2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_tstart,VXT_END,
-/* 3062 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_unlock,VXT_END,
-/* 3068 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3076 */	2,VXT_XFER,4 * (short int) xf_use,VXT_END,
-/* 3080 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_view,
-/* 3088 */	VXT_END,
-/* 3089 */	VXI_CMPL,VXT_VAL,1,VXT_VAL,2,VXT_END,
-/* 3095 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_write,
-/* 3103 */	VXT_END,
-/* 3104 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_wteol,
-/* 3112 */	VXT_END,
-/* 3113 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_wtff,VXT_END,
-/* 3119 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_wtone,
-/* 3127 */	VXT_END,
-/* 3128 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_wttab,
-/* 3136 */	VXT_END,
-/* 3137 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_xkill,
-/* 3145 */	VXT_END,
-/* 3146 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 3154 */	4 * (short int) xf_xnew,VXT_END,
-/* 3156 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_zallocate,
-/* 3164 */	VXT_END,
-/* 3165 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3173 */	1,VXT_XFER,4 * (short int) xf_zattach,VXT_END,
-/* 3177 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_zcompile,
-/* 3185 */	VXT_END,
-/* 3186 */	VXI_JSB,VXT_XFER,4 * (short int) xf_zcont,VXT_END,
-/* 3190 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_zdeallocate,
-/* 3198 */	VXT_END,
-/* 3199 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 3207 */	1,VXI_CALLS,VXT_LIT,2,VXT_XFER,4 * (short int) xf_zedit,VXT_END,
-/* 3214 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_zg1,VXT_END,
-/* 3221 */	VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 3229 */	1,VXI_JSB,VXT_XFER,4 * (short int) xf_zgoto,VXT_END,
-/* 3234 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3242 */	2,VXT_XFER,4 * (short int) xf_zhelp,VXT_END,
-/* 3246 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3254 */	2,VXT_XFER,4 * (short int) xf_zlink,VXT_END,
-/* 3258 */	VXT_IREPAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,2,VXI_CALLS,VXT_VAL,
-/* 3266 */	1,VXT_XFER,4 * (short int) xf_zmess,VXT_END,
-/* 3270 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_zprevious,
-/* 3278 */	VXT_END,
-/* 3279 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHL,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,
-/* 3287 */	4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/* 3295 */	VXT_VAL,1,VXI_CALLS,VXT_LIT,5,VXT_XFER,4 * (short int) xf_zprint,VXT_END,
-/* 3303 */	VXI_PUSHL,VXT_LIT,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 3311 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_zshow,VXT_END,
-/* 3318 */	VXI_PUSHAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 3326 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_zshow,VXT_END,
-/* 3333 */	VXI_PUSHL,VXT_LIT,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3341 */	2,VXT_XFER,4 * (short int) xf_zstep,VXI_JSB,VXT_XFER,4 * (short int) xf_zcont,VXT_END,
-/* 3348 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3356 */	2,VXT_XFER,4 * (short int) xf_zstep,VXI_JSB,VXT_XFER,4 * (short int) xf_zcont,VXT_END,
-/* 3363 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3371 */	1,VXT_XFER,4 * (short int) xf_zsystem,VXT_END,
-/* 3375 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_ztcommit,
-/* 3383 */	VXT_END,
-/* 3384 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_ztstart,VXT_END,
-/* 3390 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_merge,VXT_END,
-/* 3396 */	VXI_PUSHL,VXT_LIT,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3404 */	2,VXT_XFER,4 * (short int) xf_merge_arg,VXT_END,
-/* 3408 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3416 */	2,VXT_XFER,4 * (short int) xf_merge_arg,VXT_END,
-/* 3420 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,2,VXI_JSB,VXT_XFER,
-/* 3428 */	4 * (short int) xf_indmerge,VXT_END,
-/* 3430 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_m_srchindx,
-/* 3438 */	VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,VXT_END,
-/* 3444 */	305,325,315,2185,2193,2189,2437,2449,
-/* 3452 */	2443,0,0,0,435,411,402,0,
-/* 3460 */	0,398,1722,1760,1741,2333,2348,2339,
-/* 3468 */	2309,2324,2315,2201,2212,2205,2291,2302,
-/* 3476 */	2295,2237,2248,2241,2255,2266,2259,2273,
-/* 3484 */	2284,2277,2219,2230,2223,1692,1712,1702,
-/* 3492 */	335,355,345};
Index: sr_port_cm/gtcmtr_lke_showrep.c
===================================================================
--- sr_port_cm/gtcmtr_lke_showrep.c	(revision 6)
+++ sr_port_cm/gtcmtr_lke_showrep.c	(revision 45)
@@ -33,7 +33,7 @@
 #include "filestruct.h"
 #include "lke.h"
 #include "cmi.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtcmtr_lke.h"
 #include "gtcmtr_lke_show.h"
 #include "iosp.h"
Index: sr_port_cm/gtcmtr_lke_clearreq.c
===================================================================
--- sr_port_cm/gtcmtr_lke_clearreq.c	(revision 6)
+++ sr_port_cm/gtcmtr_lke_clearreq.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "cmmdef.h"
 #include "mlkdef.h"
 #include "cmi.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "iosp.h"
 #include "gtcmtr_lke.h"
 #include "gtcmtr_lke_clear.h"
Index: sr_port_cm/gtcmtr_lke_showreq.c
===================================================================
--- sr_port_cm/gtcmtr_lke_showreq.c	(revision 6)
+++ sr_port_cm/gtcmtr_lke_showreq.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "filestruct.h"
 #include "lke.h"
 #include "cmi.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtcmtr_lke.h"
 #include "gtcmtr_lke_show.h"
 #include "iosp.h"
Index: sr_port_cm/gvcmy_open_ch.c
===================================================================
--- sr_port_cm/gvcmy_open_ch.c	(revision 6)
+++ sr_port_cm/gvcmy_open_ch.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "gdsblk.h"
 #include "gdsfhead.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	gv_key	*gv_currkey, *gv_altkey;
 GBLREF	gd_addr	*gd_header;
Index: sr_port_cm/gvcmz_neterr.c
===================================================================
--- sr_port_cm/gvcmz_neterr.c	(revision 6)
+++ sr_port_cm/gvcmz_neterr.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "gtm_string.h"
 #include "gvcmy_close.h"
 #include "gvcmz.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "dpgbldir.h"
 #include "callg.h"
 
Index: sr_port_cm/gtcmtr_lke_clearrep.c
===================================================================
--- sr_port_cm/gtcmtr_lke_clearrep.c	(revision 6)
+++ sr_port_cm/gtcmtr_lke_clearrep.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "cmmdef.h"
 #include "mlkdef.h"
 #include "cmi.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "iosp.h"
 #include "gtcmtr_lke.h"
 #include "gtcmtr_lke_clear.h"
Index: sr_port_cm/gvcmy_open.c
===================================================================
--- sr_port_cm/gvcmy_open.c	(revision 6)
+++ sr_port_cm/gvcmy_open.c	(revision 45)
@@ -39,7 +39,7 @@
 #include "gvcmz.h"
 #include "copy.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 0)
+++ ChangeLog	(revision 45)
@@ -0,0 +1,217 @@
+Revision history for GT.M changes in this perl-enabled tree
+$Id$
+
+  - ok, we have $ZPERLTYPE and - surprise
+    - sv_reftype(...) was the function
+    I looked for - oesi
+
+  - "released" 44
+    
+  - tried to implement "ref" but ended up by
+    implementing $ZPERLSCALAR which returns
+    the scalar representation of a mstrSVRV
+    Not good, adding $ZPERLTYPE later - oesi
+
+  - added full iconv-support for interaction
+      between Perl and GT.M
+      $ZPERLICONV("...") - oesi
+
+  - fixed "PerlArray" I/O to support parameter
+      changes on "USE". - oesi
+
+  - added GTM::GlobalTie - oesi
+
+  - fixed prototypes for g_* - oesi
+
+  - hacked in reference support in mvals - oesi
+
+  - cleaned up the array writer. It now
+      uses "PERLARRAY" namespace and supports
+      the following I/O parameters:
+      -  ZPUSH (default)  -> append to array on write
+      -  ZUNSHIFT         -> insert at array begin on write
+      -  ZSHIFT (default) -> shifts the array on read
+      -  ZPOP             -> pops the array on read
+
+  - added a sr_perl/typemap mval/mstr - oesi
+  
+  - disabled MDEFAULT.o for /dev/shm -
+      since I build in /dev/shm - oesi
+
+  - tree is now under subversion, GT.M source
+      is in vendor branch :) - oesi
+
+  - added tstart/tcommit/trollback/trestart
+      they work, but not much fun without global
+      support - oesi
+
+  - imported tty-hack from my Cac module
+      will be removed again soon - oesi
+
+  - changed the indent-mode for this ChangeLog - oesi
+
+  - added sr_perl/gen_sv_access.pl, this script
+      parses svnames.h, op_svput.c and op_svget.c, generates
+      an XS-file with correct signature and POD documentation
+      beside the stuff required for %EXPORT_TAGS.
+      gtm_perl_callin.xs includes the
+      output gen_sv_access.xs - oesi
+
+  - started with the perl-side sr_perl/GTM is the module
+      directory. Startup works! - oesi
+
+  - sr_unix/gtmshr_symbols.exp now handled by patch-manager
+      we generate gtm_perl_callin.exp by parsing
+      gtm_perl_callin.c and we add boot_GTM and all XS
+      functions to the export-list on perl builds
+      we require this for bootstrapping the GTM module
+      if perl is "master" - oesi
+
+  - target library is now libgtmperl.* instead of libgtmshr.*
+      on perl-enabled builds. (GTMSHR_IMAGE_NAME is modified) - oesi
+
+  - found and fixed (in my tree) a bug in sr_port/op_fnreverse.c
+      notifed Sanchez - oesi
+      
+  - default prompt is GTM-PERL> on perl-enabled builds
+      this is a warning :) - oesi
+
+  - ported to 4.4.004
+      - ioperlAV_wteol uses now int4 instead of short - oesi
+
+  - sr_unix_nsb/opcode_def.h handled by patch-manager - oesi
+
+  - sr_unix_port/opcode_def.h handled by patch-manager - oesi
+
+  - sr_port/merrors.msg handled by patch-manager - oesi
+
+  - sr_unix_nsb/ttt.txt handled by patch-manager - oesi
+
+  - sr_unix/ttt.txt handled by patch-manager - oesi
+
+  - added a patch-manager, sr_perl/gtm-patch
+      this tool patches in/out perl support of files
+      that do not support preprocessing - oesi
+
+  - created perl.mk in sr_perl directory
+      it creates xs_init.c gtm_perl_callin.c and regnerates ttt.c
+      gtm_perl_callin.xs is the file where all call-in stuff resides - oesi
+
+  - created sr_perl directory
+      moved all perl-specific files there - oesi
+
+  - added PERLINIT/PERLALLOC/PERLDIE/PERLUNDEF/PERLREF to merrors.msg
+       needed for op_fnzperleval and SV* mval* conversion stuff - oesi
+
+  - added op_fnzperleval - oesi
+
+  - added M-I/O interface to Perl arrays(!) - oesi
+
+  - renamed op.h to gtm_op.h
+       name clash with perl includes - oesi
+
+  - renamed opcode.h to gtm_opcode.h
+       name clash with perl includes - oesi
+
+  - renamed util.h to gtm_util.h
+       name clash with perl includes - oesi
+
+  - renamed Stat #define to gtm_Stat globally
+       #define clash with perl includes - oesi
+
+  - renamed UNLINK #define to gtm_UNLINK globally
+       #define clash with perl includes -oesi
+
+0.00 Sun Apr  4 00:21:08 MEST 2004
+  - started from scratch with GT.M cvs - oesi
+
+List of authors in this ChangeLog:
+
+oesi - Stefan Traby <stefan@hello-penguin.com>
+
+If you modify stuff in this tree please add your name and email
+address above. GPL requires that you maintain a ChangeLog.
+As maintainer of this tree I only accept contributions from
+people that signed the "LICENSE AGREEMENT FOR DEVELOPED WORKS".
+see:
+http://sourceforge.net/docman/display_doc.php?docid=5735&group_id=11026
+The tree is dual-licensed GPL/Sanchez - I want that the tree
+goes into GT.M core in the future. This requires that Sanchez
+can use it in their commercial products.
+
+Style for modifications/short design overview:
+
+ALL Perl additions to .c and .h files should be within
+#ifdef WANT_GTM_PERL
+#endif
+except if they are under ./sr_perl/
+
+WANT_GTM_PERL is defined if
+"gtm_perl" environment points to a perl executable at built
+time. In Makefiles use stuff like this:
+
+ifdef gtm_perl
+perllibs=$(shell $(gtm_perl) -MExtUtils::Embed -eldopts)
+else
+perllibs=
+endif
+
+The primary goal is that a built without "gtm_perl"
+set works. This dramatically increases the chance
+that this tree makes it into GT.M core.
+
+If you want to "patch" files that don't support
+conditionals like "ifdef gtm_perl" or "#ifdef WANT_GTM_PERL"
+you MUST use the "patch-gtm" script in the sr_perl
+directory.
+
+Do not include "perl.h" or "EXTERN.h".
+include "gtm_perl.h".
+
+if you call-out to perl, invoke the
+GTM_PERL_INIT;
+macro (defined in gtm_perl.h) before.
+I choosed to delay perl-startup until it's needed.
+You don't need it if you *know* that the perl-engine
+is up.
+For example the I/O stuff for perl arrays uses
+GTM_PERL_INIT in it's open function. there is no
+need to use it read/write and related functions.
+
+for call-in invoke the
+GTM_GTM_INIT;
+macro - I choosed to delay GT.M init if it's embedded in
+Perl.
+
+Note: make sure that call-in/call-out code works under following
+conditions:
+  a) if GT.M is "master" (outside)
+  b) if Perl is "master" (outside)
+  c) if call-in/call-outs are deeply nested
+ 
+This tree will support nested exception-unwinding
+on both sides (M and Perl).
+If Perl "dies" within call-out at outer perl-level
+rts_error PERLDIE should be raised including
+the scalar value of perls ERRSV.
+On the other side if no $ZT is set if in M and it's
+call-in - the GT.M error message should be raised in perl
+like the following pseudo-M/perl code would do:
+die 'M-EXCEPTION: '.$zstatus.
+
+If you change interfaces that affect Sanchez please document
+*why* you've changed the stuff.
+The only two reason to change GT.M core-stuff without asking them are:
+  a) you are fixing a serious bug inside GT.M - please inform Sanchez anyway
+  b) you fix an incompatibility between Perl and GT.M and
+     you can't work-arround it easily without touching GT.M code.
+
+Note that the call-in stuff has to be "standard" XS-code
+that gets compiled when GT.M is built.
+It's in "sr_perl/gtm_perl_callin.xs".
+  
+Read sr_perl/gtm_perl.h - it contains more informations.
+
+Have fun, oesi
+
+EOF

Property changes on: ChangeLog
___________________________________________________________________
Name: svn:keywords
   + Id

Index: sr_port/op_fnfind.c
===================================================================
--- sr_port/op_fnfind.c	(revision 6)
+++ sr_port/op_fnfind.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "matchc.h"
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 /*
  * -----------------------------------------------
  * op_fnfind()
Index: sr_port/op_gvzwithdraw.c
===================================================================
--- sr_port/op_gvzwithdraw.c	(revision 6)
+++ sr_port/op_gvzwithdraw.c	(revision 45)
@@ -21,7 +21,7 @@
 #include "gvcmx.h"
 #include "gvusr.h"
 #include "sgnl.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF gv_namehead	*gv_target;
 GBLREF gd_region	*gv_cur_region;
Index: sr_port/jobinterrupt_process.c
===================================================================
--- sr_port/jobinterrupt_process.c	(revision 6)
+++ sr_port/jobinterrupt_process.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "error.h"
 #include "indir_enum.h"
 #include "rtnhdr.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "stack_frame.h"
 #include "hashdef.h"
 #include "lv_val.h"
Index: sr_port/skan_rnum.c
===================================================================
--- sr_port/skan_rnum.c	(revision 6)
+++ sr_port/skan_rnum.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "gdsfhead.h"
 #include "gdsblk.h"
 #include "copy.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "skan_rnum.h"
 
Index: sr_port/op_newvar.c
===================================================================
--- sr_port/op_newvar.c	(revision 6)
+++ sr_port/op_newvar.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include "tp_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gtm_string.h"
 
 GBLREF mv_stent		*mv_chain;
Index: sr_port/resolve_ref.c
===================================================================
--- sr_port/resolve_ref.c	(revision 6)
+++ sr_port/resolve_ref.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "cmd_qlf.h"
 #include "mmemory.h"
 #include "resolve_lab.h"
Index: sr_port/op_div.c
===================================================================
--- sr_port/op_div.c	(revision 6)
+++ sr_port/op_div.c	(revision 45)
@@ -15,7 +15,7 @@
 #include "stringpool.h"
 #include "eb_muldiv.h"
 #include "promodemo.h"
-#include "op.h"
+#include "gtm_op.h"
 
 LITREF int4	ten_pwr[];
 LITREF mval	literal_zero;
Index: sr_port/op_fngvget2.c
===================================================================
--- sr_port/op_fngvget2.c	(revision 6)
+++ sr_port/op_fngvget2.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 LITREF mval		literal_null;
 
Index: sr_port/dse_r_dmp.c
===================================================================
--- sr_port/dse_r_dmp.c	(revision 6)
+++ sr_port/dse_r_dmp.c	(revision 45)
@@ -21,7 +21,7 @@
 #include "gdsblk.h"
 #include "cli.h"
 #include "dse.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "skan_offset.h"
 #include "skan_rnum.h"
 
Index: sr_port/op_fnj2.c
===================================================================
--- sr_port/op_fnj2.c	(revision 6)
+++ sr_port/op_fnj2.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: sr_port/op_open.c
===================================================================
--- sr_port/op_open.c	(revision 6)
+++ sr_port/op_open.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "iosp.h"
 #include "io_params.h"
 #include "cryptdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "trans_log_name.h"
 
 
Index: sr_port/op_fnchar.c
===================================================================
--- sr_port/op_fnchar.c	(revision 6)
+++ sr_port/op_fnchar.c	(revision 45)
@@ -20,7 +20,7 @@
 #ifdef __MVS__
 #include "gtm_unistd.h"
 #endif
-#include "op.h"
+#include "gtm_op.h"
 #include <varargs.h>
 #include "ebc_xlat.h"
 
Index: sr_port/skan_offset.c
===================================================================
--- sr_port/skan_offset.c	(revision 6)
+++ sr_port/skan_offset.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "gdsfhead.h"
 #include "gdsblk.h"
 #include "copy.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "skan_offset.h"
 
Index: sr_port/dse_exit.c
===================================================================
--- sr_port/dse_exit.c	(revision 6)
+++ sr_port/dse_exit.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "error.h"
 #include "iosp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse_exit.h"
 
 void dse_exit(void)
Index: sr_port/f_zsigproc.c
===================================================================
--- sr_port/f_zsigproc.c	(revision 6)
+++ sr_port/f_zsigproc.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/mur_get_options.c
===================================================================
--- sr_port/mur_get_options.c	(revision 6)
+++ sr_port/mur_get_options.c	(revision 45)
@@ -34,7 +34,7 @@
 #include "muprec.h"
 #include "cli.h"
 #include "min_max.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_caseconv.h"
 #include "mupip_exit.h"
 #include "gtm_bintim.h"
Index: sr_port/gtm_newintrinsic.c
===================================================================
--- sr_port/gtm_newintrinsic.c	(revision 6)
+++ sr_port/gtm_newintrinsic.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "tp_frame.h"
 #include "gtm_string.h"
 #include "gtm_newintrinsic.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF mv_stent		*mv_chain;
 GBLREF unsigned char	*stackbase, *stacktop, *msp, *stackwarn;
Index: sr_port/op_setextract.c
===================================================================
--- sr_port/op_setextract.c	(revision 6)
+++ sr_port/op_setextract.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 #include "stringpool.h"
 #include "min_max.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc		stringpool;
 
Index: sr_port/op_lock.c
===================================================================
--- sr_port/op_lock.c	(revision 6)
+++ sr_port/op_lock.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "cmidef.h"
 #include "hashdef.h"
 #include "cmmdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 
 /*
Index: sr_port/m_zbreak.c
===================================================================
--- sr_port/m_zbreak.c	(revision 6)
+++ sr_port/m_zbreak.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "advancewindow.h"
Index: sr_port/op_indfnname.c
===================================================================
--- sr_port/op_indfnname.c	(revision 6)
+++ sr_port/op_indfnname.c	(revision 45)
@@ -13,11 +13,11 @@
 #include "hashdef.h"
 #include "toktyp.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "advancewindow.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF char window_token;
 GBLREF mval **ind_result_sp, **ind_result_top;
Index: sr_port/op_indglvn.c
===================================================================
--- sr_port/op_indglvn.c	(revision 6)
+++ sr_port/op_indglvn.c	(revision 45)
@@ -13,11 +13,11 @@
 #include "hashdef.h"
 #include "lv_val.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	bool	undef_inhibit;
 GBLREF	symval	*curr_symval;
Index: sr_port/op_ztcommit.c
===================================================================
--- sr_port/op_ztcommit.c	(revision 6)
+++ sr_port/op_ztcommit.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "jnl.h"
 #include "repl_msg.h"
 #include "gtmsource.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "jnl_write.h"
 #include "wcs_timer_start.h"
 #include "tp_change_reg.h"
Index: sr_port/m_use.c
===================================================================
--- sr_port/m_use.c	(revision 6)
+++ sr_port/m_use.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "io_params.h"
 #include "indir_enum.h"
Index: sr_port/m_if.c
===================================================================
--- sr_port/m_if.c	(revision 6)
+++ sr_port/m_if.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mdq.h"
Index: sr_port/op_fntranslate.c
===================================================================
--- sr_port/op_fntranslate.c	(revision 6)
+++ sr_port/op_fntranslate.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: sr_port/jobinterrupt_event.c
===================================================================
--- sr_port/jobinterrupt_event.c	(revision 6)
+++ sr_port/jobinterrupt_event.c	(revision 45)
@@ -27,7 +27,7 @@
 
 #include "gtm_stdio.h"
 #include "io.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "xfer_enum.h"
 #include "outofband.h"
 #include "deferred_events.h"
Index: sr_port/op_setpiece.c
===================================================================
--- sr_port/op_setpiece.c	(revision 6)
+++ sr_port/op_setpiece.c	(revision 45)
@@ -13,7 +13,7 @@
 
 #include "gtm_string.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "matchc.h"
 
 GBLREF spdesc stringpool;
Index: sr_port/op_read.c
===================================================================
--- sr_port/op_read.c	(revision 6)
+++ sr_port/op_read.c	(revision 45)
@@ -15,7 +15,7 @@
 #include "iosp.h"
 #include "iotimer.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "ebc_xlat.h"
 
 GBLREF io_pair		io_curr_device;
Index: sr_port/gtmsource_secnd_update.c
===================================================================
--- sr_port/gtmsource_secnd_update.c	(revision 6)
+++ sr_port/gtmsource_secnd_update.c	(revision 45)
@@ -40,7 +40,7 @@
 #include "gtm_stdio.h"
 #include "repl_shutdcode.h"
 #include "repl_sem.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF jnlpool_addrs 	jnlpool;
 GBLREF boolean_t	update_disable;
Index: sr_port/dse_chng_fhead.c
===================================================================
--- sr_port/dse_chng_fhead.c	(revision 6)
+++ sr_port/dse_chng_fhead.c	(revision 45)
@@ -38,7 +38,7 @@
 #include "cli.h"
 #include "timersp.h"
 #include "jnl.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_caseconv.h"
 #include "gt_timer.h"
 #include "timers.h"
Index: sr_port/f_justify.c
===================================================================
--- sr_port/f_justify.c	(revision 6)
+++ sr_port/f_justify.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/op_ztstart.c
===================================================================
--- sr_port/op_ztstart.c	(revision 6)
+++ sr_port/op_ztstart.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "gdsfhead.h"
 #include "filestruct.h"
 #include "jnl.h"
-#include "op.h"
+#include "gtm_op.h"
 
 #define JNL_FENCE_MAX_LEVELS	255
 
Index: sr_port/m_zstep.c
===================================================================
--- sr_port/m_zstep.c	(revision 6)
+++ sr_port/m_zstep.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "zstep.h"
 #include "toktyp.h"
 #include "nametabtyp.h"
Index: sr_port/emit_code.c
===================================================================
--- sr_port/emit_code.c	(revision 6)
+++ sr_port/emit_code.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gtm_stdio.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "vxi.h"
 #include "vxt.h"
Index: sr_port/iosocket_poolinit.c
===================================================================
--- sr_port/iosocket_poolinit.c	(revision 6)
+++ sr_port/iosocket_poolinit.c	(revision 45)
@@ -25,7 +25,7 @@
 #include "iotcpdef.h"
 #include "gt_timer.h"
 #include "iosocketdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF  d_socket_struct         *socket_pool;
 
Index: sr_port/op_fnstack1.c
===================================================================
--- sr_port/op_fnstack1.c	(revision 6)
+++ sr_port/op_fnstack1.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mv_stent.h"
 #include "error_trap.h"
 
Index: sr_port/m_do.c
===================================================================
--- sr_port/m_do.c	(revision 6)
+++ sr_port/m_do.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "mdq.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mmemory.h"
Index: sr_port/dse_exhaus.c
===================================================================
--- sr_port/dse_exhaus.c	(revision 6)
+++ sr_port/dse_exhaus.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "gdsblk.h"
 #include "dsefind.h"
 #include "copy.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 /* Include prototypes */
Index: sr_port/op_exp.c
===================================================================
--- sr_port/op_exp.c	(revision 6)
+++ sr_port/op_exp.c	(revision 45)
@@ -18,7 +18,7 @@
 #include <math.h>
 #endif
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 #define ACCUR_PERCENT	0.00000000000000055
Index: sr_port/m_zhelp.c
===================================================================
--- sr_port/m_zhelp.c	(revision 6)
+++ sr_port/m_zhelp.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "advancewindow.h"
Index: sr_port/op_fnzjobexam.c
===================================================================
--- sr_port/op_fnzjobexam.c	(revision 6)
+++ sr_port/op_fnzjobexam.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "jobexam_process.h"
 
 void op_fnzjobexam(mval *prelimSpec, mval *finalSpec)
Index: sr_port/mu_int_reg_ch.c
===================================================================
--- sr_port/mu_int_reg_ch.c	(revision 6)
+++ sr_port/mu_int_reg_ch.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #ifdef UNIX
 #include "ftok_sems.h"
 GBLREF gd_region	*gv_cur_region;
Index: sr_port/op_fnname.c
===================================================================
--- sr_port/op_fnname.c	(revision 6)
+++ sr_port/op_fnname.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "mv_stent.h"
 #include "fnname.h"
 #include <varargs.h>
-#include "op.h"
+#include "gtm_op.h"
 #include "gvsub2str.h"
 
 GBLREF gv_key		*gv_currkey;
Index: sr_port/m_zlink.c
===================================================================
--- sr_port/m_zlink.c	(revision 6)
+++ sr_port/m_zlink.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "svnames.h"
Index: sr_port/m_else.c
===================================================================
--- sr_port/m_else.c	(revision 6)
+++ sr_port/m_else.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/namelook.c
===================================================================
--- sr_port/namelook.c	(revision 6)
+++ sr_port/namelook.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "nametabtyp.h"
 #include "gtm_caseconv.h"
Index: sr_port/op_commarg.c
===================================================================
--- sr_port/op_commarg.c	(revision 6)
+++ sr_port/op_commarg.c	(revision 45)
@@ -15,12 +15,12 @@
 #include "toktyp.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "advancewindow.h"
 #include "cache.h"
 #include "do_indir_do.h"
-#include "op.h"
+#include "gtm_op.h"
 
 #define INDIR(a, b, c) b()
 int
Index: sr_port/m_zcontinue.c
===================================================================
--- sr_port/m_zcontinue.c	(revision 6)
+++ sr_port/m_zcontinue.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/op_fnzbitor.c
===================================================================
--- sr_port/op_fnzbitor.c	(revision 6)
+++ sr_port/op_fnzbitor.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: sr_port/m_quit.c
===================================================================
--- sr_port/m_quit.c	(revision 6)
+++ sr_port/m_quit.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 #include "indir_enum.h"
Index: sr_port/goframes.c
===================================================================
--- sr_port/goframes.c	(revision 6)
+++ sr_port/goframes.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 
-#include "op.h"
+#include "gtm_op.h"
 #include "get_ret_targ.h"
 #include "rtnhdr.h"		/* needed for golevel.h */
 #include "stack_frame.h"	/* needed for golevel.h */
Index: sr_port/op_zstep.c
===================================================================
--- sr_port/op_zstep.c	(revision 6)
+++ sr_port/op_zstep.c	(revision 45)
@@ -15,7 +15,7 @@
 #include "stack_frame.h"
 #include "xfer_enum.h"
 #include "indir_enum.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF int		(* volatile xfer_table[])();
 GBLREF stack_frame	*frame_pointer;
Index: sr_port/strexpr.c
===================================================================
--- sr_port/strexpr.c	(revision 6)
+++ sr_port/strexpr.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 GBLREF unsigned short int expr_depth;
 GBLREF triple *expr_start, *expr_start_orig;
Index: sr_port/op_indget.c
===================================================================
--- sr_port/op_indget.c	(revision 6)
+++ sr_port/op_indget.c	(revision 45)
@@ -15,11 +15,11 @@
 #include "lv_val.h"
 #include "toktyp.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "mdq.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "underr.h"
 
 GBLREF	symval	*curr_symval;
Index: sr_port/op_indo2.c
===================================================================
--- sr_port/op_indo2.c	(revision 6)
+++ sr_port/op_indo2.c	(revision 45)
@@ -14,12 +14,12 @@
 #include "lv_val.h"
 #include "toktyp.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "mdq.h"
 #include "advancewindow.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "underr.h"
 
 GBLREF char window_token, director_token;
Index: sr_port/lke_show.c
===================================================================
--- sr_port/lke_show.c	(revision 6)
+++ sr_port/lke_show.c	(revision 45)
@@ -26,7 +26,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "filestruct.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "longcpy.h"
 #include "gtcmtr_lke.h"
 #include "lke.h"
Index: sr_port/fetch.c
===================================================================
--- sr_port/fetch.c	(revision 6)
+++ sr_port/fetch.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include "lookup_variable.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF stack_frame *frame_pointer;
 
Index: sr_port/nref.c
===================================================================
--- sr_port/nref.c	(revision 6)
+++ sr_port/nref.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "toktyp.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "advancewindow.h"
 
Index: sr_port/op_bindparm.c
===================================================================
--- sr_port/op_bindparm.c	(revision 6)
+++ sr_port/op_bindparm.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "mv_stent.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 
 #include <varargs.h>
 
Index: sr_port/op_readfl.c
===================================================================
--- sr_port/op_readfl.c	(revision 6)
+++ sr_port/op_readfl.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "iosp.h"
 #include "iotimer.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "ebc_xlat.h"
 
 GBLREF io_pair		io_curr_device;
Index: sr_port/gtmsource_showbacklog.c
===================================================================
--- sr_port/gtmsource_showbacklog.c	(revision 6)
+++ sr_port/gtmsource_showbacklog.c	(revision 45)
@@ -34,7 +34,7 @@
 #include "gtmsource.h"
 #include "repl_dbg.h"
 #include "repl_shutdcode.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	jnlpool_addrs		jnlpool;
 GBLREF	gtmsource_options_t	gtmsource_options;
Index: sr_port/compiler_startup.c
===================================================================
--- sr_port/compiler_startup.c	(revision 6)
+++ sr_port/compiler_startup.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "cmd_qlf.h"
 #include "mdq.h"
 #include "cgp.h"
Index: sr_port/numexpr.c
===================================================================
--- sr_port/numexpr.c	(revision 6)
+++ sr_port/numexpr.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 GBLREF unsigned short int expr_depth;
 GBLREF triple *expr_start, *expr_start_orig;
Index: sr_port/coerce.c
===================================================================
--- sr_port/coerce.c	(revision 6)
+++ sr_port/coerce.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "mvalconv.h"
 
Index: sr_port/print_exit_stats.c
===================================================================
--- sr_port/print_exit_stats.c	(revision 6)
+++ sr_port/print_exit_stats.c	(revision 45)
@@ -14,7 +14,7 @@
 
 #include "gtmdbglvl.h"
 #include "print_exit_stats.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "cache.h"
 
 GBLREF	uint4		gtmDebugLevel;		/* Debug level (0 = using default sm module so with
Index: sr_port/actuallist.c
===================================================================
--- sr_port/actuallist.c	(revision 6)
+++ sr_port/actuallist.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/f_fnzbitset.c
===================================================================
--- sr_port/f_fnzbitset.c	(revision 6)
+++ sr_port/f_fnzbitset.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/mupip_reorg.c
===================================================================
--- sr_port/mupip_reorg.c	(revision 6)
+++ sr_port/mupip_reorg.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "iosp.h"
 #include "cli.h"
 #include "mu_reorg.h"
-#include "util.h"
+#include "gtm_util.h"
 
 /* Prototypes */
 #include "mupip_reorg.h"
Index: sr_port/dse_getki.c
===================================================================
--- sr_port/dse_getki.c	(revision 6)
+++ sr_port/dse_getki.c	(revision 45)
@@ -21,12 +21,12 @@
 #include "gdsfhead.h"
 #include "min_max.h"          /* needed for init_root_gv.h */
 #include "init_root_gv.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "stringpool.h"
 #include "dse.h"
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "format_targ_key.h"
 
 GBLREF gv_key		*gv_currkey;
Index: sr_port/op_fnlvnameo2.c
===================================================================
--- sr_port/op_fnlvnameo2.c	(revision 6)
+++ sr_port/op_fnlvnameo2.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 void op_fnlvnameo2(mval *src,mval *dst,mval *direct)
Index: sr_port/op_fnzm.c
===================================================================
--- sr_port/op_fnzm.c	(revision 6)
+++ sr_port/op_fnzm.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "stringpool.h"
 #include "gtmmsg.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 #define MAX_MSG_SIZE 256
Index: sr_port/f_mint_mstr.c
===================================================================
--- sr_port/f_mint_mstr.c	(revision 6)
+++ sr_port/f_mint_mstr.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/m_ztcommit.c
===================================================================
--- sr_port/m_ztcommit.c	(revision 6)
+++ sr_port/m_ztcommit.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/op_killall.c
===================================================================
--- sr_port/op_killall.c	(revision 6)
+++ sr_port/op_killall.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "hashdef.h"
 #include "lv_val.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF symval *curr_symval;
 
Index: sr_port/mu_int_blk.c
===================================================================
--- sr_port/mu_int_blk.c	(revision 6)
+++ sr_port/mu_int_blk.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "subscript.h"
 #include "spec_type.h"
 #include "mmemory.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gdsbml.h"
 #include "gtmmsg.h"
 #include "get_spec.h"
Index: sr_port/m_view.c
===================================================================
--- sr_port/m_view.c	(revision 6)
+++ sr_port/m_view.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "toktyp.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "advancewindow.h"
 #include "cmd.h"
Index: sr_port/mu_dwngrd_header.c
===================================================================
--- sr_port/mu_dwngrd_header.c	(revision 6)
+++ sr_port/mu_dwngrd_header.c	(revision 45)
@@ -34,7 +34,7 @@
 #ifdef UNIX
 #include "mutex.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 #include "mu_dwngrd_header.h"
 
 #if defined(UNIX)
Index: sr_port/job_addr.c
===================================================================
--- sr_port/job_addr.c	(revision 6)
+++ sr_port/job_addr.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "rtnhdr.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "job_addr.h"
 #include "zbreak.h"
 
Index: sr_port/op_dt_true.c
===================================================================
--- sr_port/op_dt_true.c	(revision 6)
+++ sr_port/op_dt_true.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	int dollar_truth;
 
Index: sr_port/f_qlength.c
===================================================================
--- sr_port/f_qlength.c	(revision 6)
+++ sr_port/f_qlength.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 
 GBLREF char window_token;
Index: sr_port/f_stack.c
===================================================================
--- sr_port/f_stack.c	(revision 6)
+++ sr_port/f_stack.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/lvzwr_out.c
===================================================================
--- sr_port/lvzwr_out.c	(revision 6)
+++ sr_port/lvzwr_out.c	(revision 45)
@@ -36,7 +36,7 @@
 #include "gvname_info.h"
 #include "lvname_info.h"
 #include "op_merge.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gtmmsg.h"
 #include "sgnl.h"
 
Index: sr_port/put_tsiz.c
===================================================================
--- sr_port/put_tsiz.c	(revision 6)
+++ sr_port/put_tsiz.c	(revision 45)
@@ -13,7 +13,7 @@
 
 #include "gtm_string.h"
 
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "compiler.h"
 #include "mmemory.h"
 
Index: sr_port/op_wtone.c
===================================================================
--- sr_port/op_wtone.c	(revision 6)
+++ sr_port/op_wtone.c	(revision 45)
@@ -13,7 +13,7 @@
 #include "stringpool.h"
 #include "io.h"
 #include "iosp.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "ebc_xlat.h"
 
 GBLREF io_pair		io_curr_device;
Index: sr_port/put_mvar.c
===================================================================
--- sr_port/put_mvar.c	(revision 6)
+++ sr_port/put_mvar.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 GBLDEF triple *curr_fetch_trip, *curr_fetch_opr;
 GBLDEF int4 curr_fetch_count;
Index: sr_port/m_zdeallocate.c
===================================================================
--- sr_port/m_zdeallocate.c	(revision 6)
+++ sr_port/m_zdeallocate.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "iotimer.h"
 #include "indir_enum.h"
Index: sr_port/op_indname.c
===================================================================
--- sr_port/op_indname.c	(revision 6)
+++ sr_port/op_indname.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "compiler.h"
 #include "stringpool.h"
 #include <varargs.h>
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: sr_port/f_zdate.c
===================================================================
--- sr_port/f_zdate.c	(revision 6)
+++ sr_port/f_zdate.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/op_lkinit.c
===================================================================
--- sr_port/op_lkinit.c	(revision 6)
+++ sr_port/op_lkinit.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "cmidef.h"
 #include "gvcmz.h"
 
Index: sr_port/op_fngvget.c
===================================================================
--- sr_port/op_fngvget.c	(revision 6)
+++ sr_port/op_fngvget.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_get.h"
 #include "gvcmx.h"
 #include "gvusr.h"
Index: sr_port/m_zwithdraw.c
===================================================================
--- sr_port/m_zwithdraw.c	(revision 6)
+++ sr_port/m_zwithdraw.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "cmd.h"
Index: sr_port/op_wtff.c
===================================================================
--- sr_port/op_wtff.c	(revision 6)
+++ sr_port/op_wtff.c	(revision 45)
@@ -12,7 +12,7 @@
 
 #include "mdef.h"
 #include "io.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF io_pair		io_curr_device;
 GBLREF io_desc		*active_device;
Index: sr_port/mupip_set.c
===================================================================
--- sr_port/mupip_set.c	(revision 6)
+++ sr_port/mupip_set.c	(revision 45)
@@ -25,7 +25,7 @@
 #include "iosp.h"
 #include "error.h"
 #include "mupint.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupipbckup.h"
 #include "mupip_exit.h"
 #include "mu_getlst.h"
Index: sr_port/cre_jnl_file.c
===================================================================
--- sr_port/cre_jnl_file.c	(revision 6)
+++ sr_port/cre_jnl_file.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "filestruct.h"
 #include "jnl.h"
 #include "gtmio.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 #include "send_msg.h"
 #include "iosp.h"
Index: sr_port/dse_chng_rhead.c
===================================================================
--- sr_port/dse_chng_rhead.c	(revision 6)
+++ sr_port/dse_chng_rhead.c	(revision 45)
@@ -34,7 +34,7 @@
 #include "t_end.h"
 #include "t_begin_crit.h"
 #include "gvcst_blk_build.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "t_abort.h"
 
 GBLREF char		*update_array, *update_array_ptr;
Index: sr_port/expr.c
===================================================================
--- sr_port/expr.c	(revision 6)
+++ sr_port/expr.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 GBLDEF unsigned short int expr_depth;
 
Index: sr_port/shrink_trips.c
===================================================================
--- sr_port/shrink_trips.c	(revision 6)
+++ sr_port/shrink_trips.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_stdio.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "cgp.h"
 #include "gtmdbglvl.h"
Index: sr_port/mu_int_reg.c
===================================================================
--- sr_port/mu_int_reg.c	(revision 6)
+++ sr_port/mu_int_reg.c	(revision 45)
@@ -22,7 +22,7 @@
 #include "gdsbml.h"
 #include "jnl.h"		/* needed for WCSFLU_* macros */
 #include "sleep_cnt.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gvcst_init.h"
 #include "change_reg.h"
 #include "longcpy.h"
Index: sr_port/gtm_util.h
===================================================================
--- sr_port/gtm_util.h	(revision 0)
+++ sr_port/gtm_util.h	(revision 45)
@@ -0,0 +1,60 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001, 2002 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#ifndef UTIL_included
+#define UTIL_included
+
+boolean_t util_is_log_open(void);
+
+#ifdef VMS
+#include <descrip.h>
+
+/* While the maximum for OPER_LOG_SIZE is 1906 (found from experimentation), we
+   set it's maximum to 1904 being the largest 4 byte aligned size we can use. This
+   4 byte aligned size is necessary to make the header length calculation done as
+   sizeof(oper) - sizeof(oper.text) work correctly. If a size is used that is not
+   4 byte aligned, this calculation will incorrectly contain the compiler pad chars
+   causing garbage at the end of operator log lines. SE 9/2001
+*/
+#define	OPER_LOG_SIZE 1904
+
+typedef struct
+{
+	unsigned int	req_code : 08;
+	unsigned int	target   : 24;
+	uint4		mess_code;
+	char		text[OPER_LOG_SIZE];
+} oper_msg_struct;
+
+void util_in_open(struct dsc$descriptor_s *file_prompt);
+void util_out_open(struct dsc$descriptor_s *file_prompt);
+void util_log_open(char *filename, uint4 len);
+#else
+void util_in_open(void *);
+#endif
+
+#define OUT_BUFF_SIZE	2048
+#define	NOFLUSH		0
+#define FLUSH		1
+#define RESET		2
+#define OPER		4
+#define SPRINT		5
+#define HEX8		8
+#define HEX16		16
+
+void util_cm_print();
+void util_exit_handler(void);
+void util_out_close(void);
+void util_out_print();
+void util_out_send_oper(char *addr, unsigned int len);
+void util_out_write(unsigned char *addr, unsigned int len);
+
+#endif /* UTIL_included */
Index: sr_port/secshr_db_clnup.c
===================================================================
--- sr_port/secshr_db_clnup.c	(revision 6)
+++ sr_port/secshr_db_clnup.c	(revision 45)
@@ -49,7 +49,7 @@
 #ifdef UNIX
 #include "aswp.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 #include "compswap.h"
 #ifdef UNIX
 #include "mutex.h"
Index: sr_port/lkglvn.c
===================================================================
--- sr_port/lkglvn.c	(revision 6)
+++ sr_port/lkglvn.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "subscript.h"
 #include "advancewindow.h"
Index: sr_port/f_order1.c
===================================================================
--- sr_port/f_order1.c	(revision 6)
+++ sr_port/f_order1.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mdq.h"
Index: sr_port/f_zprevious.c
===================================================================
--- sr_port/f_zprevious.c	(revision 6)
+++ sr_port/f_zprevious.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mdq.h"
Index: sr_port/ex_tail.c
===================================================================
--- sr_port/ex_tail.c	(revision 6)
+++ sr_port/ex_tail.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "mmemory.h"
 
Index: sr_port/f_fnumber.c
===================================================================
--- sr_port/f_fnumber.c	(revision 6)
+++ sr_port/f_fnumber.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "mdq.h"
 #include "advancewindow.h"
Index: sr_port/m_set.c
===================================================================
--- sr_port/m_set.c	(revision 6)
+++ sr_port/m_set.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "nametabtyp.h"
 #include "toktyp.h"
Index: sr_port/comp_init.c
===================================================================
--- sr_port/comp_init.c	(revision 6)
+++ sr_port/comp_init.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "compiler.h"
 #include "stringpool.h"
 #include "mv_stent.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "cgp.h"
 #include "lb_init.h"
 
Index: sr_port/op_idiv.c
===================================================================
--- sr_port/op_idiv.c	(revision 6)
+++ sr_port/op_idiv.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "arit.h"
 #include "eb_muldiv.h"
 #include "promodemo.h"
-#include "op.h"
+#include "gtm_op.h"
 
 LITREF int4	ten_pwr[];
 LITREF mval	literal_zero;
Index: sr_port/f_qsubscript.c
===================================================================
--- sr_port/f_qsubscript.c	(revision 6)
+++ sr_port/f_qsubscript.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/op_dt_get.c
===================================================================
--- sr_port/op_dt_get.c	(revision 6)
+++ sr_port/op_dt_get.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	int dollar_truth;
 
Index: sr_port/op_zst_over.c
===================================================================
--- sr_port/op_zst_over.c	(revision 6)
+++ sr_port/op_zst_over.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "xfer_enum.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF int 		(* volatile xfer_table[])();
 GBLREF bool 		neterr_pending;
Index: sr_port/oc_tab_graphic.c
===================================================================
--- sr_port/oc_tab_graphic.c	(revision 6)
+++ sr_port/oc_tab_graphic.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 LITDEF char *oc_tab_graphic[] =
 {
Index: sr_port/m_tcommit.c
===================================================================
--- sr_port/m_tcommit.c	(revision 6)
+++ sr_port/m_tcommit.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/dse_rmsb.c
===================================================================
--- sr_port/dse_rmsb.c	(revision 6)
+++ sr_port/dse_rmsb.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "gdsfhead.h"
 #include "dse.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF sgmnt_addrs	*cs_addrs;
 GBLREF gd_region	*gv_cur_region;
Index: sr_port/op_trestart.c
===================================================================
--- sr_port/op_trestart.c	(revision 6)
+++ sr_port/op_trestart.c	(revision 45)
@@ -26,7 +26,7 @@
 #include "jnl.h"
 #include "tp.h"
 #include "tp_restart.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	unsigned char	t_fail_hist[CDB_MAX_TRIES];
 GBLREF	unsigned int	t_tries;
Index: sr_port/m_open.c
===================================================================
--- sr_port/m_open.c	(revision 6)
+++ sr_port/m_open.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "iotimer.h"
Index: sr_port/dse_eval.c
===================================================================
--- sr_port/dse_eval.c	(revision 6)
+++ sr_port/dse_eval.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 #define MAX_UTIL_LEN 32
Index: sr_port/gtmsource_get_opt.c
===================================================================
--- sr_port/gtmsource_get_opt.c	(revision 6)
+++ sr_port/gtmsource_get_opt.c	(revision 45)
@@ -38,7 +38,7 @@
 #include "gtmsource.h"
 #include "cli.h"
 #include "gtm_stdio.h"
-#include "util.h"
+#include "gtm_util.h"
 
 #define MAX_SECONDARY_LEN 	(MAX_HOST_NAME_LEN + 11) /* +11 for ':' and
 							  * port number */
Index: sr_port/mu_put_gvdata.c
===================================================================
--- sr_port/mu_put_gvdata.c	(revision 6)
+++ sr_port/mu_put_gvdata.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mupip_put_gvdata.h"
 
 void mupip_put_gvdata(char *cp,int len)
Index: sr_port/m_lock.c
===================================================================
--- sr_port/m_lock.c	(revision 6)
+++ sr_port/m_lock.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "iotimer.h"
 #include "indir_enum.h"
Index: sr_port/op_zalloc2.c
===================================================================
--- sr_port/op_zalloc2.c	(revision 6)
+++ sr_port/op_zalloc2.c	(revision 45)
@@ -21,7 +21,7 @@
 #include "locklits.h"
 #include "mlkdef.h"
 #include "t_retry.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mlk_lock.h"
 #include "mlk_bckout.h"
 #include "mlk_pvtblk_delete.h"
Index: sr_port/m_kill.c
===================================================================
--- sr_port/m_kill.c	(revision 6)
+++ sr_port/m_kill.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "advancewindow.h"
Index: sr_port/mu_int_maps.c
===================================================================
--- sr_port/mu_int_maps.c	(revision 6)
+++ sr_port/mu_int_maps.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gdsbml.h"
 #include "copy.h"
 #include "mu_int_maps.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupint.h"
 
 /* Include prototypes */
Index: sr_port/io.h
===================================================================
--- sr_port/io.h	(revision 6)
+++ sr_port/io.h	(revision 45)
@@ -62,6 +62,9 @@
 	ff,		/* fifo device  */
 	tcp,		/* TCP socket  */
 	gtmsocket,	/* socket device, socket is already used by sys/socket.h */
+#ifdef WANT_GTM_PERL
+        perlAV,         /* perl Array special device */
+#endif
 	n_io_dev_types	/* terminator	*/
 };
 
@@ -179,7 +182,11 @@
  *      1. ioff_open() is an extra routine
  */
 
+#ifdef WANT_GTM_PERL
+#define ioxx(X) ioxx_##X(tt);ioxx_##X(mt);ioxx_##X(rm);ioxx_##X(mb);ioxx_##X(nl);ioxx_##X(us);ioxx_##X(tcp);ioxx_##X(socket);ioxx_##X(perlAV)
+#else
 #define ioxx(X) ioxx_##X(tt);ioxx_##X(mt);ioxx_##X(rm);ioxx_##X(mb);ioxx_##X(nl);ioxx_##X(us);ioxx_##X(tcp);ioxx_##X(socket)
+#endif
 #define xxdlr(X) xx_iocontrol(X);xx_dlr_device(X);xx_dlr_key(X)
 
 /* prototypes for dispatch functions */
Index: sr_port/mur_output_record.c
===================================================================
--- sr_port/mur_output_record.c	(revision 6)
+++ sr_port/mur_output_record.c	(revision 45)
@@ -28,8 +28,8 @@
 #include "buddy_list.h"
 #include "muprec.h"
 #include "copy.h"
-#include "util.h"
-#include "op.h"
+#include "gtm_util.h"
+#include "gtm_op.h"
 #include "tp_set_sgm.h"
 #include "cache.h"
 #include "gtmmsg.h"
Index: sr_port/op_lvzwrite.c
===================================================================
--- sr_port/op_lvzwrite.c	(revision 6)
+++ sr_port/op_lvzwrite.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "zwrite.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include <varargs.h>
 #include "gtm_maxstr.h"
Index: sr_port/op_oldvar.c
===================================================================
--- sr_port/op_oldvar.c	(revision 6)
+++ sr_port/op_oldvar.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "mv_stent.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF mv_stent *mv_chain;
 GBLREF unsigned char *msp;
Index: sr_port/oc_tab.c
===================================================================
--- sr_port/oc_tab.c	(revision 6)
+++ sr_port/oc_tab.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 LITDEF octabstruct oc_tab[] =
 {
Index: sr_port/tp_restart.c
===================================================================
--- sr_port/tp_restart.c	(revision 6)
+++ sr_port/tp_restart.c	(revision 45)
@@ -40,7 +40,7 @@
 #include "gtm_stdio.h"
 #include "gtm_stdlib.h"		/* for ATOI */
 #include "send_msg.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "io.h"
 #include "targ_alloc.h"
 #include "getzposition.h"
Index: sr_port/m_trollback.c
===================================================================
--- sr_port/m_trollback.c	(revision 6)
+++ sr_port/m_trollback.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "indir_enum.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/f_text.c
===================================================================
--- sr_port/f_text.c	(revision 6)
+++ sr_port/f_text.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "cmd_qlf.h"
Index: sr_port/m_zedit.c
===================================================================
--- sr_port/m_zedit.c	(revision 6)
+++ sr_port/m_zedit.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "svnames.h"
Index: sr_port/mupip_set_journal.c
===================================================================
--- sr_port/mupip_set_journal.c	(revision 6)
+++ sr_port/mupip_set_journal.c	(revision 45)
@@ -40,7 +40,7 @@
 #include "mupip_set.h"
 #include "eintr_wrappers.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gvcst_init.h"
 #include "mu_rndwn_file.h"
 #include "dbfilop.h"
Index: sr_port/eintr_wrappers.h
===================================================================
--- sr_port/eintr_wrappers.h	(revision 6)
+++ sr_port/eintr_wrappers.h	(revision 45)
@@ -211,7 +211,7 @@
 {						\
 	do					\
 	{					\
-	   RC = Stat(PATH, INFO);		\
+	   RC = gtm_Stat(PATH, INFO);		\
 	} while(-1 == RC && EINTR == errno);	\
 }
 
Index: sr_port/fgncal_unwind.c
===================================================================
--- sr_port/fgncal_unwind.c	(revision 6)
+++ sr_port/fgncal_unwind.c	(revision 45)
@@ -13,7 +13,7 @@
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include "mv_stent.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "fgncal.h"
 
 GBLDEF unsigned char *fgncal_stack;
Index: sr_port/m_read.c
===================================================================
--- sr_port/m_read.c	(revision 6)
+++ sr_port/m_read.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "iotimer.h"
Index: sr_port/mu_int_getkey.c
===================================================================
--- sr_port/mu_int_getkey.c	(revision 6)
+++ sr_port/mu_int_getkey.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "gtm_ctype.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupint.h"
 #include "mvalconv.h"
 
Index: sr_port/do_indir_do.c
===================================================================
--- sr_port/do_indir_do.c	(revision 6)
+++ sr_port/do_indir_do.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "indir_enum.h"
 #include "cmd_qlf.h"
 #include "gtm_caseconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "do_indir_do.h"
 
 LITREF	char			ctypetab[NUM_ASCII_CHARS];
Index: sr_port/op_zsystem.c
===================================================================
--- sr_port/op_zsystem.c	(revision 6)
+++ sr_port/op_zsystem.c	(revision 45)
@@ -33,7 +33,7 @@
 #include "tp.h"
 #include "send_msg.h"
 #include "gtmmsg.h"		/* for gtm_putmsg() prototype */
-#include "op.h"
+#include "gtm_op.h"
 #include "change_reg.h"
 #include "setterm.h"
 #include "getzposition.h"
Index: sr_port/op_xkill.c
===================================================================
--- sr_port/op_xkill.c	(revision 6)
+++ sr_port/op_xkill.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "hashdef.h"
 #include "lv_val.h"
-#include "op.h"
+#include "gtm_op.h"
 #include <varargs.h>
 
 typedef struct
Index: sr_port/m_goto.c
===================================================================
--- sr_port/m_goto.c	(revision 6)
+++ sr_port/m_goto.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "mdq.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mmemory.h"
Index: sr_port/f_get.c
===================================================================
--- sr_port/f_get.c	(revision 6)
+++ sr_port/f_get.c	(revision 45)
@@ -12,7 +12,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "indir_enum.h"
 #include "mdq.h"
Index: sr_port/gvzwr_var.c
===================================================================
--- sr_port/gvzwr_var.c	(revision 6)
+++ sr_port/gvzwr_var.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "zwrite.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "outofband.h"
 #include "numcmp.h"
 #include "patcode.h"
Index: sr_port/op_fnpiece.c
===================================================================
--- sr_port/op_fnpiece.c	(revision 6)
+++ sr_port/op_fnpiece.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "matchc.h"
 
 /*
Index: sr_port/dse_rest.c
===================================================================
--- sr_port/dse_rest.c	(revision 6)
+++ sr_port/dse_rest.c	(revision 45)
@@ -26,7 +26,7 @@
 #include "init_root_gv.h"
 #include "filestruct.h"
 #include "jnl.h"
-#include "util.h"
+#include "gtm_util.h"
 
 /* Include prototypes */
 #include "t_qread.h"
Index: sr_port/mupip_create.c
===================================================================
--- sr_port/mupip_create.c	(revision 6)
+++ sr_port/mupip_create.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "gdsfhead.h"
 #include "cli.h"
 #include "iosp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupip_exit.h"
 #include "mupip_create.h"
 #include "mu_cre_file.h"
Index: sr_port/gvzwr_fini.c
===================================================================
--- sr_port/gvzwr_fini.c	(revision 6)
+++ sr_port/gvzwr_fini.c	(revision 45)
@@ -22,7 +22,7 @@
 #include "zshow.h"
 #include "zwrite.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "change_reg.h"
 #include "patcode.h"
 #include "sgnl.h"
Index: sr_port/op_hardret.c
===================================================================
--- sr_port/op_hardret.c	(revision 6)
+++ sr_port/op_hardret.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "unwind_nocounts.h"
 #include "dm_setup.h"
 
Index: sr_port/f_two_mstrs.c
===================================================================
--- sr_port/f_two_mstrs.c	(revision 6)
+++ sr_port/f_two_mstrs.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/op_gvo2.c
===================================================================
--- sr_port/op_gvo2.c	(revision 6)
+++ sr_port/op_gvo2.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 void op_gvo2(mval *dst,mval *direct)
Index: sr_port/put_cdlt.c
===================================================================
--- sr_port/put_cdlt.c	(revision 6)
+++ sr_port/put_cdlt.c	(revision 45)
@@ -13,7 +13,7 @@
 
 #include "gtm_string.h"
 
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "compiler.h"
 #include "mmemory.h"
 
Index: sr_port/op_fnzbitxor.c
===================================================================
--- sr_port/op_fnzbitxor.c	(revision 6)
+++ sr_port/op_fnzbitxor.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: sr_port/gvn.c
===================================================================
--- sr_port/gvn.c	(revision 6)
+++ sr_port/gvn.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "subscript.h"
 #include "mdq.h"
Index: sr_port/mu_int_err.c
===================================================================
--- sr_port/mu_int_err.c	(revision 6)
+++ sr_port/mu_int_err.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "mupint.h"
 #include "min_max.h"
 #include "init_root_gv.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "print_target.h"
 #include "gtmmsg.h"
 
Index: sr_port/mdb_condition_handler.c
===================================================================
--- sr_port/mdb_condition_handler.c	(revision 6)
+++ sr_port/mdb_condition_handler.c	(revision 45)
@@ -60,13 +60,13 @@
 #include "zwrite.h"
 #include "cache.h"
 #include "objlabel.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "dpgbldir.h"
 #include "preemptive_ch.h"
 #include "show_source_line.h"
 #include "trans_code_cleanup.h"
 #include "dm_setup.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "tp_restart.h"
 #include "dollar_zlevel.h"
 #include "error_trap.h"
Index: sr_port/dse_adstar.c
===================================================================
--- sr_port/dse_adstar.c	(revision 6)
+++ sr_port/dse_adstar.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "t_end.h"
 #include "t_begin_crit.h"
 #include "gvcst_blk_build.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "t_abort.h"
 
 GBLREF char		*update_array, *update_array_ptr;
Index: sr_port/pattab.c
===================================================================
--- sr_port/pattab.c	(revision 6)
+++ sr_port/pattab.c	(revision 45)
@@ -89,7 +89,7 @@
 #ifdef UNIX
 #include "eintr_wrappers.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 #include "trans_log_name.h"
 
 #define	MAXPATNAM	256
Index: sr_port/m_close.c
===================================================================
--- sr_port/m_close.c	(revision 6)
+++ sr_port/m_close.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "io_params.h"
 #include "indir_enum.h"
Index: sr_port/mupip_set_jnlfile_aux.c
===================================================================
--- sr_port/mupip_set_jnlfile_aux.c	(revision 6)
+++ sr_port/mupip_set_jnlfile_aux.c	(revision 45)
@@ -30,7 +30,7 @@
 #include "mupip_set.h"
 #include "mupint.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mu_rndwn_file.h"
 #include "gtm_file_stat.h"
 #include "mu_gv_cur_reg_init.h"
Index: sr_port/dse_page.c
===================================================================
--- sr_port/dse_page.c	(revision 6)
+++ sr_port/dse_page.c	(revision 45)
@@ -15,7 +15,7 @@
 #include "fileinfo.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 void dse_page(void)
Index: sr_port/op_gvget.c
===================================================================
--- sr_port/op_gvget.c	(revision 6)
+++ sr_port/op_gvget.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "gvcmx.h"
 #include "gvusr.h"
 #include "sgnl.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF gv_namehead	*gv_target;
 GBLREF gd_region	*gv_cur_region;
Index: sr_port/m_merge.c
===================================================================
--- sr_port/m_merge.c	(revision 6)
+++ sr_port/m_merge.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "nametabtyp.h"
 #include "toktyp.h"
Index: sr_port/t_ch.c
===================================================================
--- sr_port/t_ch.c	(revision 6)
+++ sr_port/t_ch.c	(revision 45)
@@ -22,7 +22,7 @@
 #include "ast.h"
 #include "send_msg.h"
 #include "t_commit_cleanup.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "have_crit.h"
 
 GBLREF	boolean_t		created_core;
Index: sr_port/op_fnzsigproc.c
===================================================================
--- sr_port/op_fnzsigproc.c	(revision 6)
+++ sr_port/op_fnzsigproc.c	(revision 45)
@@ -23,7 +23,7 @@
 #include <signal.h>
 #include <stdlib.h>
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fnzsigproc(int pid, int signum, mval *retcode)
 {
Index: sr_port/m_trestart.c
===================================================================
--- sr_port/m_trestart.c	(revision 6)
+++ sr_port/m_trestart.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/op_setp1.c
===================================================================
--- sr_port/op_setp1.c	(revision 6)
+++ sr_port/op_setp1.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "stringpool.h"
 #include "min_max.h"
 #include "fnpc.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF fnpc_area	fnpca;			/* The $piece cache area */
 GBLREF spdesc		stringpool;
Index: sr_port/zshow_svn.c
===================================================================
--- sr_port/zshow_svn.c	(revision 6)
+++ sr_port/zshow_svn.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "buddy_list.h"		/* needed for tp.h */
 #include "iottdef.h"		/* needed for tp.h */
 #include "tp.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "zroutines.h"
 #include "getstorage.h"
Index: sr_port/op_gvdata.c
===================================================================
--- sr_port/op_gvdata.c	(revision 6)
+++ sr_port/op_gvdata.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gvcmx.h"
 #include "gvusr.h"
 #include "sgnl.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF gv_namehead	*gv_target;
 GBLREF gd_region	*gv_cur_region;
Index: sr_port/get_frame_place_mcode.c
===================================================================
--- sr_port/get_frame_place_mcode.c	(revision 6)
+++ sr_port/get_frame_place_mcode.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "cache.h"
 #include "cache_cleanup.h"
 
-#include "op.h"			/* for op_fntext() prototype */
+#include "gtm_op.h"			/* for op_fntext() prototype */
 
 GBLREF	stack_frame		*frame_pointer;
 GBLREF	stack_frame		*error_frame;
Index: sr_port/op_gvorder.c
===================================================================
--- sr_port/op_gvorder.c	(revision 6)
+++ sr_port/op_gvorder.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_data.h"
 #include "gvcst_order.h"
 #include "change_reg.h"
Index: sr_port/resolve_blocks.c
===================================================================
--- sr_port/resolve_blocks.c	(revision 6)
+++ sr_port/resolve_blocks.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "resolve_blocks.h"
 
Index: sr_port/gtmrecv_poll_actions.c
===================================================================
--- sr_port/gtmrecv_poll_actions.c	(revision 6)
+++ sr_port/gtmrecv_poll_actions.c	(revision 45)
@@ -51,7 +51,7 @@
 #ifdef REPL_RECVR_HELP_UPD
 #include "error.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 #include "tp_change_reg.h"
 
 #ifdef REPL_RECVR_HELP_UPD
Index: sr_port/op_xnew.c
===================================================================
--- sr_port/op_xnew.c	(revision 6)
+++ sr_port/op_xnew.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "hashdef.h"
 #include "lv_val.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include <varargs.h>
Index: sr_port/op_setzbrk.c
===================================================================
--- sr_port/op_setzbrk.c	(revision 6)
+++ sr_port/op_setzbrk.c	(revision 45)
@@ -21,7 +21,7 @@
 #include "xfer_enum.h"
 #include "indir_enum.h"
 #include "cachectl.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "fix_pages.h"
 #include "io.h"
 #include "inst_flush.h"
Index: sr_port/intexpr.c
===================================================================
--- sr_port/intexpr.c	(revision 6)
+++ sr_port/intexpr.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 GBLREF unsigned short int expr_depth;
 GBLREF triple *expr_start, *expr_start_orig;
Index: sr_port/gtm_op.h
===================================================================
--- sr_port/gtm_op.h	(revision 0)
+++ sr_port/gtm_op.h	(revision 45)
@@ -0,0 +1,232 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001, 2004 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#ifndef OP_INCLUDED
+#define OP_INCLUDED
+
+boolean_t op_gvqueryget(mval *key, mval *val);
+int op_dt_get(void);
+void op_fnzdate(mval *src, mval *fmt, mval *mo_str, mval *day_str, mval *dst);
+int op_fnzsearch(mval *file, mint indx, mval *ret);		/***type int added***/
+bool op_gvget(mval *v);
+int op_incrlock(int timeout);
+int op_lock(int timeout);
+int op_open(mval *device, mval *devparms, int timeout, mval *mspace);
+int op_rdone(mval *v, int4 timeout);
+int op_readfl(mval *v, int4 length, int4 timeout);
+int op_read(mval *v, int4 timeout);
+int op_zallocate(int timeout);		/***type int added***/
+int op_fngvget1(mval *v);
+int op_zalloc2(int4 timeout, uint4 auxown);
+int op_zallocate(int timeout);
+void op_unwind(void);
+void op_break(void);
+void op_lvpatwrite();
+void op_killall(void);
+void op_gvzwithdraw(void);
+void op_gvkill(void);
+void op_cat();
+void op_close(mval *v, mval *p);
+void op_commarg(mval *v, unsigned char argcode);
+void op_decrlock(int4 timeout);
+void op_dmoe(void);
+void op_div(mval *u, mval *v, mval *q);
+void op_exp(mval *u, mval* v, mval *p);
+int4 op_fnfind(mval *src, mval *del, mint first, mval *dst);
+void op_fnfnumber(mval *src,mval *fmt,mval *dst);
+void op_fnj2(mval *src,int len,mval *dst);
+void op_fnj3(mval *src,int width,int fract,mval *dst);
+void op_fnlvname(mval *src, mval *dst);
+void op_fnlvnameo2(mval *src,mval *dst,mval *direct);
+void op_fnfgncal();
+#ifdef __sun
+int op_fnfgncal_rpc();	/* typ to keep the compiler happy as set into xfer_table, which is int */
+#endif
+void op_fngvget(mval *v, mval *def);
+void op_fngetjpi(mint jpid, mval *kwd, mval *ret);
+void op_fnlvprvname(mval *src, mval *dst);
+void op_fnname();
+void op_fnqlength(mval *name, mval *subscripts);
+void op_fnqsubscript(mval *name, int seq, mval *subscript);
+void op_fnrandom(int4 interval, mval *ret);
+void op_fnreverse(mval *src, mval *dst);
+#ifdef WANT_GTM_PERL
+void op_fnzperlcall(int argc, ...);
+void op_fnzperleval(mval *src, mval *dst);
+void op_fnzperliconv(mval *src, mval *dst);
+void op_fnzperlmeth(int argc, ...);
+void op_fnzperlscalar(mval *src, mval *dst);
+void op_fnzperltype(mval *src, mval *dst);
+void op_fnzperlunref(mval *src, mval *dst);
+#endif
+void op_fnstack1(int level, mval *result);
+void op_fnstack2(int level, mval *info, mval *result);
+void op_fnview();
+void op_fnpiece(mval *src, mval *del, int first, int last, mval *dst, boolean_t srcisliteral);
+void op_fnquery();
+void op_fntext(mval *label, int int_exp, mval *rtn, mval *ret);
+void op_fnzbitand(mval *dst, mval *bitstr1, mval *bitstr2);
+void op_fnzbitcoun(mval *dst, mval *bitstr);
+void op_fnzbitget(mval *dst, mval *bitstr, int pos);
+void op_fnzbitlen(mval *dst, mval *bitstr);
+void op_fnzbitor(mval *dst, mval *bitstr1, mval *bitstr2);
+void op_fnzbitstr(mval *bitstr, int size, int truthval);
+void op_fnzjobexam(mval *prelimSpec, mval *finalSpec);
+void op_fnzsigproc(int processid, int signum, mval *retcode);
+void op_fnzlkid(mint boolex, mval *retval);
+void op_fnzqgblmod(mval *v);
+void op_fnztrnlnm(mval *name,mval *table,int4 ind,mval *mode,mval *case_blind,mval *item,mval *ret);
+void op_fnzcall();
+void op_fnzpid(mint boolexpr,mval *ret);
+void op_fnzpriv(mval *prv,mval *ret);
+void op_fngetsyi(mval *keyword,mval *node,mval *ret);
+void op_gvdata(mval *v);
+void op_gvextnam();
+void op_gvnaked();
+void op_gvname();
+void op_gvnext(mval *v);
+void op_gvorder(mval *v);
+void op_gvo2(mval *dst,mval *direct);
+void op_gvput(mval *var);
+void op_gvquery(mval *v);
+void op_gvrectarg(mval *v);
+void op_halt(void);
+void op_hang(mval *num);
+void op_hardret(void);
+void op_horolog(mval *s);
+int op_incrlock(int timeout);
+void op_iocontrol();
+void op_indrzshow(mval *s1,mval *s2);
+void op_iretmval(mval *v);
+int op_job();
+void op_killall(void);
+void op_lkinit(void);
+void op_lkname();
+void op_mul(mval *u, mval *v, mval *p);
+void op_newvar(uint4 arg1);
+void op_newintrinsic(int intrtype);
+void op_oldvar(void);
+void op_population(mval *arg1, mval *arg2, mval *dst);
+void op_rterror(int4 sig, boolean_t subrtn);
+void op_setp1(mval *src, int delim, mval *expr, int ind, mval *dst);
+void op_setpiece(mval *src, mval *del, mval *expr, int4 first, int4 last, mval *dst);
+void op_fnzsetprv(mval *prv,mval *ret);
+void op_fnztrnlnm(mval *name,mval *table,int4 ind,mval *mode,mval *case_blind,mval *item,mval *ret);
+void op_setzbrk(mval *rtn, mval *lab, int offset, mval *act, int cnt);
+void op_sqlinddo(mstr *m_init_rtn);
+void op_sub(mval *u, mval *v, mval *s);
+void op_svget(int varnum, mval *v);
+void op_svput(int varnum, mval *v);
+void op_tcommit(void);
+void op_trollback(int rb_levels);
+void op_tstart();
+void op_unlock(void);
+void op_use(mval *v, mval *p);
+void op_view();
+void op_write(mval *v);
+void op_wteol(int4 n);
+void op_wtff(void);
+void op_wtone(unsigned char c);
+void op_wttab(mint x);
+void op_xkill();
+void op_xnew();
+void op_zattach(mval *);
+void op_zcompile(mval *v);
+void op_zcont(void);
+void op_zdealloc2(int4 timeout, uint4 auxown);
+void op_zdeallocate(int4 timeout);
+void op_zedit(mval *v, mval *p);
+void op_zhelp_xfr(mval *subject, mval *lib);
+void op_zlink(mval *v, mval *quals);
+void op_zmess();
+void op_zprevious(mval *v);
+void op_zprint(mval *rtn,mval *start_label,int start_int_exp,mval *end_label,int end_int_exp);
+void op_zst_break(void);
+void op_zstep(uint4 code, mval *action);
+void op_zsystem(mval *v);
+void op_ztcommit(int4 n);
+void op_ztstart(void);
+#ifdef UNIX
+int op_fetchintrrpt(), op_startintrrpt(), op_forintrrpt();
+#elif defined(VMS)
+void op_fetchintrrpt(), op_startintrrpt(), op_forintrrpt();
+#else
+#error unsupported platform
+#endif
+int op_forchk1(), op_forloop();
+int op_zstepfetch(), op_zstepstart(), op_zstzbfetch(), op_zstzbstart();
+int op_mproflinestart(), op_mproflinefetch(), op_mprofforloop();
+int op_linefetch(), op_linestart(), op_zbfetch(), op_zbstart(), op_ret(), op_retarg();
+int opp_ret();
+int op_zst_fet_over(), op_zst_st_over(), op_zstzb_st_over(), opp_zstepret(), opp_zstepretarg();
+int op_zstzb_fet_over(), opp_zst_over_ret(), opp_zst_over_retarg();
+#ifndef __MVS__
+void fetch();
+#else
+void gtm_fetch();
+#endif
+void add_mvals(mval *u, mval *v, int subtraction, mval *result);
+void op_bindparm();
+void op_add(mval *u, mval *v, mval *s);
+void op_sub(mval *u, mval *v, mval *s);
+void op_cvtparm(int iocode, mval *src, mval *dst);
+void op_dmode(void);
+void op_dt_false(void);
+void op_dt_store(int truth_value);
+void op_dt_true(void);
+void op_fnascii(int4 num, mval *in, mval *out);
+void op_fnchar();
+void op_fnget2(mval *dst, mval *src, mval *defval);
+void op_fngetdvi(mval *device, mval *keyword, mval *ret);
+void op_fngetlki(mval *lkid_mval, mval *keyword, mval *ret);
+int op_fngvget2(mval *res, mval *val, mval *optional);
+void op_fnp1(mval *src, int del, int trgpcidx, mval *dst, boolean_t srcisliteral);
+#ifdef DEBUG
+void print_fnpc_stats(void);
+#endif
+void op_fntranslate(mval *src,mval *in_str,mval *out_str,mval *dst);
+void op_fnzbitfind(mval *dst, mval *bitstr, int truthval, int pos);
+void op_fnzbitnot(mval *dst,mval *bitstr);
+void op_fnzbitset(mval *dst, mval *bitstr, int pos, int truthval);
+void op_fnzbitxor(mval *dst, mval *bitstr1, mval *bitstr2);
+void op_fnzfile(mval *name,mval *key,mval *ret);
+void op_fnzm(mint x,mval *v);
+void op_fnzparse(mval *file, mval *field, mval *def1, mval *def2, mval *type, mval *ret);
+void op_fnzsqlexpr(mval *value, mval *target);
+void op_fnzsqlfield(int findex, mval *target);
+void op_gvsavtarg(mval *v);
+void op_gvzwrite();
+void op_idiv(mval *u, mval *v, mval *q);
+void op_igetsrc(mval *v);
+int op_lock2(int4 timeout, unsigned char laflag);
+void op_inddevparms(mval *devpsrc, int4 ok_iop_parms, mval *devpiopl);
+void op_indfnname(mval *dst, mval *target, int value);
+void op_indfun(mval *v, mint argcode, mval *dst);
+void op_indget(mval *dst, mval *target, mval *value);
+void op_indglvn(mval *v,mval *dst);
+void op_indlvadr(mval *target);
+void op_indlvarg(mval *v,mval *dst);
+void op_indlvnamadr(mval *target);
+void op_indmerge(mval *glvn_mv, mval *arg1_or_arg2);
+void op_indname();
+void op_indpat(mval *v, mval *dst);
+void op_indo2(mval *dst, mval *target, mval *value);
+void op_indset(mval *target, mval *value);
+void op_indtext(mval *lab, mint offset, mval *rtn, mval *dst);
+void op_lvzwrite();
+void op_nullexp(mval *v);
+int op_open_dummy(mval *v, mval *p, int t, mval *mspace);
+void op_setextract(mval *src, mval *expr, int schar, int echar, mval *dst);
+void op_trestart(int newlevel);
+void op_zst_over(void);
+void op_zstepret(void);
+
+#endif
Index: sr_port/op_close.c
===================================================================
--- sr_port/op_close.c	(revision 6)
+++ sr_port/op_close.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "io.h"
 #include "iosp.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "trans_log_name.h"
 
 GBLREF io_log_name	*io_root_log_name;
Index: sr_port/mupip_recover.c
===================================================================
--- sr_port/mupip_recover.c	(revision 6)
+++ sr_port/mupip_recover.c	(revision 45)
@@ -40,7 +40,7 @@
 #include "cli.h"
 #include "error.h"
 #include "stp_parms.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "send_msg.h"
 #include "tp_restart.h"
 #include "tp_change_reg.h"
Index: sr_port/mur_back_process.c
===================================================================
--- sr_port/mur_back_process.c	(revision 6)
+++ sr_port/mur_back_process.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "filestruct.h"
 #include "jnl.h"
 #include "copy.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "hashdef.h"
 #include "buddy_list.h"
 #include "muprec.h"
Index: sr_port/gtm_unistd.h
===================================================================
--- sr_port/gtm_unistd.h	(revision 6)
+++ sr_port/gtm_unistd.h	(revision 45)
@@ -42,7 +42,7 @@
 
 #define LINK		link
 
-#define UNLINK		unlink
+#define gtm_UNLINK		unlink
 
 #define TTYNAME		ttyname
 
Index: sr_port/op_merge.c
===================================================================
--- sr_port/op_merge.c	(revision 6)
+++ sr_port/op_merge.c	(revision 45)
@@ -57,14 +57,14 @@
 #include "lvname_info.h"
 #include "op_merge.h"
 #include "gvsub2str.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "stringpool.h"
 #include "outofband.h"
 #include "gtmmsg.h"
 #include "format_targ_key.h"
 #include "sgnl.h"
-#include "util.h"
+#include "gtm_util.h"
 
 #define UNDO_ACTIVE_LV										\
 {												\
Index: sr_port/code_gen.c
===================================================================
--- sr_port/code_gen.c	(revision 6)
+++ sr_port/code_gen.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "cgp.h"
 #include "cmd_qlf.h"
Index: sr_port/name_glvn.c
===================================================================
--- sr_port/name_glvn.c	(revision 6)
+++ sr_port/name_glvn.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "subscript.h"
 #include "fnname.h"
Index: sr_port/mur_output_show.c
===================================================================
--- sr_port/mur_output_show.c	(revision 6)
+++ sr_port/mur_output_show.c	(revision 45)
@@ -29,7 +29,7 @@
 #include "hashtab.h"
 #include "muprec.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #ifdef VMS
 #include <descrip.h>
 #include <jpidef.h>
@@ -193,7 +193,7 @@
 	util_out_print(" End Transaction!_!_      !10UL [0x!XL]", TRUE, DOUBLE_ARG(header->eov_tn));
 	util_out_print(" Align size!_!_!_!16UL [0x!XL] bytes", TRUE, DOUBLE_ARG(header->alignsize));
 	util_out_print(" Epoch Interval!_!_!_!_!8UL", TRUE, EPOCH_SECOND2SECOND(header->epoch_interval));
-	util_out_print(" Replication State!_!_!_  !AD", TRUE, 6, (header->repl_state == repl_closed ? "CLOSED" : "  OPEN"));
+	util_out_print(" Replication gtm_State!_!_!_  !AD", TRUE, 6, (header->repl_state == repl_closed ? "CLOSED" : "  OPEN"));
 	util_out_print(" Updates Disabled on Secondary!_!_   !AD", TRUE, 5, (header->update_disabled ? " TRUE" : "FALSE"));
 	util_out_print(" Jnlfile SwitchLimit!_!_!16UL [0x!XL] blocks", TRUE, DOUBLE_ARG(header->autoswitchlimit));
 	util_out_print(" Jnlfile Allocation!_!_!16UL [0x!XL] blocks", TRUE, DOUBLE_ARG(header->jnl_alq));
Index: sr_port/m_zallocate.c
===================================================================
--- sr_port/m_zallocate.c	(revision 6)
+++ sr_port/m_zallocate.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "iotimer.h"
 #include "indir_enum.h"
Index: sr_port/op_fnview.c
===================================================================
--- sr_port/op_fnview.c	(revision 6)
+++ sr_port/op_fnview.c	(revision 45)
@@ -36,7 +36,7 @@
 #ifndef EARLY_VARARGS
 #include <varargs.h>
 #endif
-#include "op.h"
+#include "gtm_op.h"
 #include "patcode.h"
 #include "mvalconv.h"
 
Index: sr_port/op_indlvnamadr.c
===================================================================
--- sr_port/op_indlvnamadr.c	(revision 6)
+++ sr_port/op_indlvnamadr.c	(revision 45)
@@ -11,12 +11,12 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "indir_enum.h"
 #include "advancewindow.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF char	window_token;
 GBLREF mident	window_ident;
Index: sr_port/linetail.c
===================================================================
--- sr_port/linetail.c	(revision 6)
+++ sr_port/linetail.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "toktyp.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "advancewindow.h"
 #include "cmd.h"
 
Index: sr_port/dse_over.c
===================================================================
--- sr_port/dse_over.c	(revision 6)
+++ sr_port/dse_over.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "jnl.h"
 #include "io.h"
 #include "iosp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 /* Include prototypes */
Index: sr_port/region_init_ch.c
===================================================================
--- sr_port/region_init_ch.c	(revision 6)
+++ sr_port/region_init_ch.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 
 CONDITION_HANDLER(region_init_ch)
 {
Index: sr_port/lke_showlock.c
===================================================================
--- sr_port/lke_showlock.c	(revision 6)
+++ sr_port/lke_showlock.c	(revision 45)
@@ -38,7 +38,7 @@
 #include "cmidef.h"
 #include "hashdef.h"
 #include "cmmdef.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "lke.h"
 #include "is_proc_alive.h"
 #include "real_len.h"		/* for real_len() prototype */
Index: sr_port/lastchance2.c
===================================================================
--- sr_port/lastchance2.c	(revision 6)
+++ sr_port/lastchance2.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "io.h"
 #include "iosp.h"
 #include "jnl.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	gd_region	*gv_cur_region;
 GBLREF	int4		exi_condition;
Index: sr_port/io_init.c
===================================================================
--- sr_port/io_init.c	(revision 6)
+++ sr_port/io_init.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "iosp.h"
 #include "io_params.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "term_setup.h"
 #include "trans_log_name.h"
 /***************** GLOBAL DATA FOR THE MUMPS IO SYSTEM *******************/
Index: sr_port/dse_dmp_fhead.c
===================================================================
--- sr_port/dse_dmp_fhead.c	(revision 6)
+++ sr_port/dse_dmp_fhead.c	(revision 45)
@@ -36,12 +36,12 @@
 #include "filestruct.h"
 #include "jnl.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 #include "dse_puttime.h"
 #include "gtmmsg.h"
 #include "stringpool.h"		/* for GET_CURR_TIME_IN_DOLLARH_AND_ZDATE macro */
-#include "op.h"
+#include "gtm_op.h"
 
 #define MAX_UTIL_LEN    	64
 #define NEXT_EPOCH_TIME_SPACES	"                   " /* 19 spaces, we have 19 character field width to output Next Epoch Time */
Index: sr_port/dump_record.c
===================================================================
--- sr_port/dump_record.c	(revision 6)
+++ sr_port/dump_record.c	(revision 45)
@@ -27,10 +27,10 @@
 #include "copy.h"
 #include "min_max.h"          /* needed for init_root_gv.h */
 #include "init_root_gv.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 #include "print_target.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLDEF bool             wide_out;
 GBLDEF char             patch_comp_key[MAX_KEY_SZ + 1];
Index: sr_port/f_zcall.c
===================================================================
--- sr_port/f_zcall.c	(revision 6)
+++ sr_port/f_zcall.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/op_trollback.c
===================================================================
--- sr_port/op_trollback.c	(revision 6)
+++ sr_port/op_trollback.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "tp_frame.h"
 #include "tp_timeout.h"
 #include "tp_unwind.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "jobinterrupt_process.h"
 
 GBLREF	short		dollar_tlevel, dollar_trestart;
Index: sr_port/op_gvnaked.c
===================================================================
--- sr_port/op_gvnaked.c	(revision 6)
+++ sr_port/op_gvnaked.c	(revision 45)
@@ -29,7 +29,7 @@
 #include "tp.h"
 #include "mv_stent.h"		/* for COPY_SUBS_TO_GVCURRKEY macro */
 #include "subscript.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_root_search.h"
 #include "format_targ_key.h"
 #include "gvsub2str.h"
Index: sr_port/gtmsource_poll_actions.c
===================================================================
--- sr_port/gtmsource_poll_actions.c	(revision 6)
+++ sr_port/gtmsource_poll_actions.c	(revision 45)
@@ -39,7 +39,7 @@
 #include "gtmsource_heartbeat.h"
 #include "jnl.h"
 #include "repl_filter.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "repl_comm.h"
 #include "eintr_wrappers.h"
 #ifdef UNIX
@@ -136,7 +136,7 @@
 		repl_log(gtmsource_log_fp, TRUE, TRUE, "Starting stats log to %s\n", gtmsource_local->statslog_file);
 		repl_log(gtmsource_statslog_fp, TRUE, TRUE, "Begin statistics logging\n");
 #else
-		repl_log(gtmsource_log_fp, TRUE, TRUE, "Stats logging not supported on VMS\n");
+		repl_log(gtmsource_log_fp, TRUE, TRUE, "gtm_Stats logging not supported on VMS\n");
 #endif
 
 	} else if (gtmsource_logstats && !gtmsource_local->statslog)
Index: sr_port/f_find.c
===================================================================
--- sr_port/f_find.c	(revision 6)
+++ sr_port/f_find.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/mubclnup.c
===================================================================
--- sr_port/mubclnup.c	(revision 6)
+++ sr_port/mubclnup.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "hashtab.h"		/* needed for tp.h */
 #include "buddy_list.h"		/* needed for tp.h */
 #include "tp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 
 GBLREF 	spdesc 		stringpool;
@@ -77,7 +77,7 @@
 					if (ptr->backup_fd > 2)
 					{
 						close(ptr->backup_fd);
-						UNLINK(ptr->backup_tempfile);
+						gtm_UNLINK(ptr->backup_tempfile);
 					}
 #elif defined(VMS)
 					temp_fab = cc$rms_fab;
Index: sr_port/op_population.c
===================================================================
--- sr_port/op_population.c	(revision 6)
+++ sr_port/op_population.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 void	op_population(mval *arg1, mval *arg2, mval *dst)
Index: sr_port/io_dev_dispatch.h
===================================================================
--- sr_port/io_dev_dispatch.h	(revision 6)
+++ sr_port/io_dev_dispatch.h	(revision 45)
@@ -25,4 +25,7 @@
 	iotype(ioff, iorm, nil),
 	iotype(iotcp, iotcp, iotcp),
 	iotype(iosocket, iosocket, iosocket)
+#ifdef WANT_GTM_PERL
+      , iotype(ioperlAV, ioperlAV, nil)
+#endif
 };
Index: sr_port/mupip_set_journal_newstate.c
===================================================================
--- sr_port/mupip_set_journal_newstate.c	(revision 6)
+++ sr_port/mupip_set_journal_newstate.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "jnl.h"
 #include "mupip_set.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 
 GBLREF	gd_region		*gv_cur_region;
Index: sr_port/mur_close_files.c
===================================================================
--- sr_port/mur_close_files.c	(revision 6)
+++ sr_port/mur_close_files.c	(revision 45)
@@ -46,7 +46,7 @@
 #include "mu_rndwn_replpool.h"
 #include "ftok_sems.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 
 #define WARN_STATUS(jctl)									\
 if (SS_NORMAL != jctl->status)									\
Index: sr_port/op_gvname.c
===================================================================
--- sr_port/op_gvname.c	(revision 6)
+++ sr_port/op_gvname.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "buddy_list.h"		/* needed for tp.h */
 #include "tp.h"
 #include "mv_stent.h"		/* for COPY_SUBS_TO_GVCURRKEY macro */
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_root_search.h"
 #include "format_targ_key.h"
 #include "gvsub2str.h"
Index: sr_port/dse_dmp.c
===================================================================
--- sr_port/dse_dmp.c	(revision 6)
+++ sr_port/dse_dmp.c	(revision 45)
@@ -22,7 +22,7 @@
 #include "cli.h"
 #include "dse.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLDEF enum dse_fmt	dse_dmp_format = CLOSED_FMT;
 
Index: sr_port/m_ztstart.c
===================================================================
--- sr_port/m_ztstart.c	(revision 6)
+++ sr_port/m_ztstart.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/jmp_opto.c
===================================================================
--- sr_port/jmp_opto.c	(revision 6)
+++ sr_port/jmp_opto.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "jmp_opto.h"
 
Index: sr_port/bool_expr.c
===================================================================
--- sr_port/bool_expr.c	(revision 6)
+++ sr_port/bool_expr.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 GBLREF unsigned short int expr_depth;
 GBLREF triple *expr_start, *expr_start_orig;
Index: sr_port/m_tstart.c
===================================================================
--- sr_port/m_tstart.c	(revision 6)
+++ sr_port/m_tstart.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "nametabtyp.h"
 #include "indir_enum.h"
Index: sr_port/op_unwind.c
===================================================================
--- sr_port/op_unwind.c	(revision 6)
+++ sr_port/op_unwind.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "tp_frame.h"
 #include "cache.h"
 #include "objlabel.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "error_trap.h"
 
 GBLREF	void		(*unw_prof_frame_ptr)(void);
Index: sr_port/gtmrecv.c
===================================================================
--- sr_port/gtmrecv.c	(revision 6)
+++ sr_port/gtmrecv.c	(revision 45)
@@ -48,7 +48,7 @@
 #include "repl_filter.h"
 #include "error.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "is_proc_alive.h"
 #include "repl_msg.h"
 #include "gtmsource.h"
Index: sr_port/op_fnascii.c
===================================================================
--- sr_port/op_fnascii.c	(revision 6)
+++ sr_port/op_fnascii.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void	op_fnascii(int4 num, mval *in, mval *out)
 {	int	k ;
Index: sr_port/f_data.c
===================================================================
--- sr_port/f_data.c	(revision 6)
+++ sr_port/f_data.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mdq.h"
Index: sr_port/op_fngvget1.c
===================================================================
--- sr_port/op_fngvget1.c	(revision 6)
+++ sr_port/op_fngvget1.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_get.h"
 #include "gvcmx.h"
 #include "gvusr.h"
Index: sr_port/mupip_backup.c
===================================================================
--- sr_port/mupip_backup.c	(revision 6)
+++ sr_port/mupip_backup.c	(revision 45)
@@ -55,7 +55,7 @@
 #include "eintr_wrappers.h"
 #endif
 #include "gtm_file_stat.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_caseconv.h"
 #include "gt_timer.h"
 #include "gvcst_init.h"
Index: sr_port/f_char.c
===================================================================
--- sr_port/f_char.c	(revision 6)
+++ sr_port/f_char.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "stringpool.h"
 #include "advancewindow.h"
Index: sr_port/f_zqgblmod.c
===================================================================
--- sr_port/f_zqgblmod.c	(revision 6)
+++ sr_port/f_zqgblmod.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mdq.h"
Index: sr_port/mur_forward.c
===================================================================
--- sr_port/mur_forward.c	(revision 6)
+++ sr_port/mur_forward.c	(revision 45)
@@ -33,7 +33,7 @@
 #include "mur_jnl_ext.h"
 #include "iosp.h"
 #include "gtmmsg.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mu_gv_stack_init.h"
 #include "targ_alloc.h"
 #include "tp_change_reg.h"
Index: sr_port/gtmrecv_statslog.c
===================================================================
--- sr_port/gtmrecv_statslog.c	(revision 6)
+++ sr_port/gtmrecv_statslog.c	(revision 45)
@@ -36,7 +36,7 @@
 #include "repl_dbg.h"
 #include "repl_shutdcode.h"
 #include "repl_sem.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	recvpool_addrs		recvpool;
 GBLREF	gtmrecv_options_t	gtmrecv_options;
Index: sr_port/gtmsource_statslog.c
===================================================================
--- sr_port/gtmsource_statslog.c	(revision 6)
+++ sr_port/gtmsource_statslog.c	(revision 45)
@@ -38,7 +38,7 @@
 #include "repl_dbg.h"
 #include "repl_shutdcode.h"
 #include "repl_sem.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	jnlpool_addrs		jnlpool;
 GBLREF	gtmsource_options_t	gtmsource_options;
Index: sr_port/dse_crit.c
===================================================================
--- sr_port/dse_crit.c	(revision 6)
+++ sr_port/dse_crit.c	(revision 45)
@@ -27,7 +27,7 @@
 #ifdef UNIX
 #include "mutex.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF sgmnt_addrs		*cs_addrs;
 GBLREF gd_region		*gv_cur_region;
Index: sr_port/mur_read_file.c
===================================================================
--- sr_port/mur_read_file.c	(revision 6)
+++ sr_port/mur_read_file.c	(revision 45)
@@ -42,7 +42,7 @@
 #include "iosp.h"
 #include "copy.h"
 #include "eintr_wrappers.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 
 error_def(ERR_JNLBADLABEL);
Index: sr_port/mu_extr_gblout.c
===================================================================
--- sr_port/mu_extr_gblout.c	(revision 6)
+++ sr_port/mu_extr_gblout.c	(revision 45)
@@ -34,7 +34,7 @@
 #include "cdb_sc.h"
 #include "copy.h"
 #include "mlkdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_expand_key.h"
 #include "format_targ_key.h"
 #include "zshow.h"
Index: sr_port/f_translate.c
===================================================================
--- sr_port/f_translate.c	(revision 6)
+++ sr_port/f_translate.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/op_indpat.c
===================================================================
--- sr_port/op_indpat.c	(revision 6)
+++ sr_port/op_indpat.c	(revision 45)
@@ -11,12 +11,12 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "cache.h"
 #include "compile_pattern.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF short int source_column;
 GBLREF mval **ind_result_sp, **ind_result_top;
Index: sr_port/m_zgoto.c
===================================================================
--- sr_port/m_zgoto.c	(revision 6)
+++ sr_port/m_zgoto.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "mdq.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mmemory.h"
Index: sr_port/op_fnqsubscript.c
===================================================================
--- sr_port/op_fnqsubscript.c	(revision 6)
+++ sr_port/op_fnqsubscript.c	(revision 45)
@@ -11,7 +11,7 @@
 #include "mdef.h"
 #include "error.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "is_canonic_name.h"
 
 GBLREF spdesc stringpool;
Index: sr_port/op_dt_store.c
===================================================================
--- sr_port/op_dt_store.c	(revision 6)
+++ sr_port/op_dt_store.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	int dollar_truth;
 
Index: sr_port/mur_put_aimg_rec.c
===================================================================
--- sr_port/mur_put_aimg_rec.c	(revision 6)
+++ sr_port/mur_put_aimg_rec.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "hashdef.h"
 #include "buddy_list.h"
 #include "muprec.h"
-#include "util.h"
+#include "gtm_util.h"
 
 /* Include prototypes */
 #include "t_qread.h"
Index: sr_port/jobexam_process.c
===================================================================
--- sr_port/jobexam_process.c	(revision 6)
+++ sr_port/jobexam_process.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gtm_stdio.h"
 #include "error.h"
 #include "io_params.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "io.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
@@ -30,7 +30,7 @@
 #include "send_msg.h"
 #include "callg.h"
 #include "zshow.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "hashdef.h"
 #include "lv_val.h"
 #include "mv_stent.h"
Index: sr_port/op_svget.c
===================================================================
--- sr_port/op_svget.c	(revision 6)
+++ sr_port/op_svget.c	(revision 45)
@@ -32,7 +32,7 @@
 #include "buddy_list.h"		/* needed for tp.h */
 #include "tp.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "zroutines.h"
 #include "getstorage.h"
Index: sr_port/alloc_reg.c
===================================================================
--- sr_port/alloc_reg.c	(revision 6)
+++ sr_port/alloc_reg.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "gtmdbglvl.h"
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "alloc_reg.h"
 #include "cdbg_dump.h"
 
Index: sr_port/lke_clearlock.c
===================================================================
--- sr_port/lke_clearlock.c	(revision 6)
+++ sr_port/lke_clearlock.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "cmidef.h"
 #include "hashdef.h"
 #include "cmmdef.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "lke.h"
 #include "cmi.h"
 #include "gvcmz.h"
Index: sr_port/dse_maps.c
===================================================================
--- sr_port/dse_maps.c	(revision 6)
+++ sr_port/dse_maps.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "buddy_list.h"		/* needed for tp.h */
 #include "tp.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupipbckup.h"
 #include "dse.h"
 
Index: sr_port/mur_blocks_free.c
===================================================================
--- sr_port/mur_blocks_free.c	(revision 6)
+++ sr_port/mur_blocks_free.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "buddy_list.h"
 #include "muprec.h"
 #include "iosp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dbfilop.h"
 
 GBLREF sgmnt_data_ptr_t	cs_data;
Index: sr_port/m_zprint.c
===================================================================
--- sr_port/m_zprint.c	(revision 6)
+++ sr_port/m_zprint.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "advancewindow.h"
Index: sr_port/m_new.c
===================================================================
--- sr_port/m_new.c	(revision 6)
+++ sr_port/m_new.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "svnames.h"
Index: sr_port/op_cat.c
===================================================================
--- sr_port/op_cat.c	(revision 6)
+++ sr_port/op_cat.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include <varargs.h>
 
 #define MAX_NUM_LEN 64
Index: sr_port/f_zparse.c
===================================================================
--- sr_port/f_zparse.c	(revision 6)
+++ sr_port/f_zparse.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/dse_b_dmp.c
===================================================================
--- sr_port/dse_b_dmp.c	(revision 6)
+++ sr_port/dse_b_dmp.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "gdsbml.h"
 #include "cli.h"
 #include "dse.h"
-#include "util.h"
+#include "gtm_util.h"
 
 /* Include prototypes */
 #include "t_qread.h"
Index: sr_port/op_iretmval.c
===================================================================
--- sr_port/op_iretmval.c	(revision 6)
+++ sr_port/op_iretmval.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "underr.h"
 
 GBLREF mval **ind_result_sp, **ind_result_array;
Index: sr_port/op_fnget2.c
===================================================================
--- sr_port/op_fnget2.c	(revision 6)
+++ sr_port/op_fnget2.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fnget2(mval *dst, mval *src, mval *defval)
 {
Index: sr_port/gtmsource_stopfilter.c
===================================================================
--- sr_port/gtmsource_stopfilter.c	(revision 6)
+++ sr_port/gtmsource_stopfilter.c	(revision 45)
@@ -38,7 +38,7 @@
 #include "repl_dbg.h"
 #include "repl_shutdcode.h"
 #include "repl_sem.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	jnlpool_addrs		jnlpool;
 GBLREF	gtmsource_options_t	gtmsource_options;
Index: sr_port/op_add.c
===================================================================
--- sr_port/op_add.c	(revision 6)
+++ sr_port/op_add.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "arit.h"
-#include "op.h"
+#include "gtm_op.h"
 
 LITREF int4	ten_pwr[] ;
 
Index: sr_port/m_zshow.c
===================================================================
--- sr_port/m_zshow.c	(revision 6)
+++ sr_port/m_zshow.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mlkdef.h"
Index: sr_port/op_use.c
===================================================================
--- sr_port/op_use.c	(revision 6)
+++ sr_port/op_use.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "io.h"
 #include "iosp.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "trans_log_name.h"
 
 GBLREF io_pair		io_curr_device;
Index: sr_port/m_zmessage.c
===================================================================
--- sr_port/m_zmessage.c	(revision 6)
+++ sr_port/m_zmessage.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "advancewindow.h"
Index: sr_port/gtmrecv_changelog.c
===================================================================
--- sr_port/gtmrecv_changelog.c	(revision 6)
+++ sr_port/gtmrecv_changelog.c	(revision 45)
@@ -33,7 +33,7 @@
 #include "repl_dbg.h"
 #include "repl_shutdcode.h"
 #include "repl_sem.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	recvpool_addrs		recvpool;
 GBLREF	gtmrecv_options_t	gtmrecv_options;
Index: sr_port/ins_errtriple.c
===================================================================
--- sr_port/ins_errtriple.c	(revision 6)
+++ sr_port/ins_errtriple.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 
 GBLREF triple *curtchain,pos_in_chain;
Index: sr_port/put_tval.c
===================================================================
--- sr_port/put_tval.c	(revision 6)
+++ sr_port/put_tval.c	(revision 45)
@@ -15,7 +15,7 @@
 #include "gtm_stdio.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 #define	TEMP_TVAL_PREFIX_NAME	"#T%"
 
Index: sr_port/entryref.c
===================================================================
--- sr_port/entryref.c	(revision 6)
+++ sr_port/entryref.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 #include "mlabel2xtern.h"
Index: sr_port/xfer.h
===================================================================
--- sr_port/xfer.h	(revision 6)
+++ sr_port/xfer.h	(revision 45)
@@ -105,6 +105,15 @@
 XFER(xf_fnzfile, op_fnzfile),
 XFER(xf_fnzm, op_fnzm),
 XFER(xf_fnzparse, op_fnzparse),
+#ifdef WANT_GTM_PERL
+XFER(xf_fnzperlcall, op_fnzperlcall),
+XFER(xf_fnzperleval, op_fnzperleval),
+XFER(xf_fnzperliconv, op_fnzperliconv),
+XFER(xf_fnzperlmeth, op_fnzperlmeth),
+XFER(xf_fnzperlscalar, op_fnzperlscalar),
+XFER(xf_fnzperltype, op_fnzperltype),
+XFER(xf_fnzperlunref, op_fnzperlunref),
+#endif
 XFER(xf_fnzpid, op_fnzpid),
 XFER(xf_fnzpriv, op_fnzpriv),
 XFER(xf_fnzsearch, op_fnzsearch),
Index: sr_port/op_inddevparms.c
===================================================================
--- sr_port/op_inddevparms.c	(revision 6)
+++ sr_port/op_inddevparms.c	(revision 45)
@@ -14,13 +14,13 @@
 #include "hashdef.h"
 #include "lv_val.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "io_params.h"
 #include "cache.h"
 #include "deviceparameters.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF mval	**ind_result_sp, **ind_result_top;
 GBLREF char	window_token;
Index: sr_port/gtmsource_changelog.c
===================================================================
--- sr_port/gtmsource_changelog.c	(revision 6)
+++ sr_port/gtmsource_changelog.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "gtmsource.h"
 #include "repl_dbg.h"
 #include "repl_sem.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	jnlpool_addrs		jnlpool;
 GBLREF	gtmsource_options_t	gtmsource_options;
Index: sr_port/put_lit.c
===================================================================
--- sr_port/put_lit.c	(revision 6)
+++ sr_port/put_lit.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "mdq.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mmemory.h"
 
 GBLREF int mlitmax;
Index: sr_port/util_base_ch.c
===================================================================
--- sr_port/util_base_ch.c	(revision 6)
+++ sr_port/util_base_ch.c	(revision 45)
@@ -28,7 +28,7 @@
 #include "lke.h"
 #include "dpgbldir.h"
 #include "preemptive_ch.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF boolean_t		need_core;
 GBLREF boolean_t		created_core;
Index: sr_port/op_halt.c
===================================================================
--- sr_port/op_halt.c	(revision 6)
+++ sr_port/op_halt.c	(revision 45)
@@ -16,7 +16,7 @@
 #ifdef VMS
 #  include <ssdef.h>
 #endif
-#include "op.h"
+#include "gtm_op.h"
 
 void op_halt(void)
 {
Index: sr_port/op_fnj3.c
===================================================================
--- sr_port/op_fnj3.c	(revision 6)
+++ sr_port/op_fnj3.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "arit.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 LITREF int4 ten_pwr[];
Index: sr_port/dse_f_blk.c
===================================================================
--- sr_port/dse_f_blk.c	(revision 6)
+++ sr_port/dse_f_blk.c	(revision 45)
@@ -25,7 +25,7 @@
 #include "dsefind.h"
 #include "cli.h"
 #include "copy.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 /* Include prototypes*/
Index: sr_port/f_zechar.c
===================================================================
--- sr_port/f_zechar.c	(revision 6)
+++ sr_port/f_zechar.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "stringpool.h"
 #include "gtm_iconv.h"
Index: sr_port/dse_f_free.c
===================================================================
--- sr_port/dse_f_free.c	(revision 6)
+++ sr_port/dse_f_free.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "gdsfhead.h"
 #include "gdsblk.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gdsbml.h"
 #include "bmm_find_free.h"
 #include "dse.h"
Index: sr_port/bx_boolop.c
===================================================================
--- sr_port/bx_boolop.c	(revision 6)
+++ sr_port/bx_boolop.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mmemory.h"
 
 void bx_boolop(triple *t, bool jmp_type_one, bool jmp_to_next, bool sense, oprtype *addr)
Index: sr_port/f_name.c
===================================================================
--- sr_port/f_name.c	(revision 6)
+++ sr_port/f_name.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "indir_enum.h"
 #include "advancewindow.h"
Index: sr_port/m_job.c
===================================================================
--- sr_port/m_job.c	(revision 6)
+++ sr_port/m_job.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "iotimer.h"
Index: sr_port/util_ch.c
===================================================================
--- sr_port/util_ch.c	(revision 6)
+++ sr_port/util_ch.c	(revision 45)
@@ -13,7 +13,7 @@
 #include <signal.h>
 #include "error.h"
 #include "preemptive_ch.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF VSIG_ATOMIC_T	util_interrupt;
 
Index: sr_port/rwformat.c
===================================================================
--- sr_port/rwformat.c	(revision 6)
+++ sr_port/rwformat.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 #include "stringpool.h"
Index: sr_port/comp_fini.c
===================================================================
--- sr_port/comp_fini.c	(revision 6)
+++ sr_port/comp_fini.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "stringpool.h"
 #include "mv_stent.h"
 #include "cgp.h"
Index: sr_port/start_for_fetches.c
===================================================================
--- sr_port/start_for_fetches.c	(revision 6)
+++ sr_port/start_for_fetches.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 GBLREF triple	*curr_fetch_trip, *curr_fetch_opr;
 GBLREF int4	curr_fetch_count;
Index: sr_port/op_newintrinsic.c
===================================================================
--- sr_port/op_newintrinsic.c	(revision 6)
+++ sr_port/op_newintrinsic.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "gtm_newintrinsic.h"
 #include "dollar_zlevel.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "svnames.h"
 #include "gdsroot.h"
 #include "gtm_facility.h"
Index: sr_port/updproc.c
===================================================================
--- sr_port/updproc.c	(revision 6)
+++ sr_port/updproc.c	(revision 45)
@@ -69,8 +69,8 @@
 #include <xab.h>
 #include <prtdef.h>
 #endif
-#include "util.h"
-#include "op.h"
+#include "gtm_util.h"
+#include "gtm_op.h"
 #include "gvcst_init.h"
 #include "targ_alloc.h"
 #include "dpgbldir.h"
Index: sr_port/op_gvzwrite.c
===================================================================
--- sr_port/op_gvzwrite.c	(revision 6)
+++ sr_port/op_gvzwrite.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "gdsfhead.h"
 #include "zwrite.h"
 #include <varargs.h>
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "gtm_maxstr.h"
 
Index: sr_port/f_piece.c
===================================================================
--- sr_port/f_piece.c	(revision 6)
+++ sr_port/f_piece.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/gtmrecv_showbacklog.c
===================================================================
--- sr_port/gtmrecv_showbacklog.c	(revision 6)
+++ sr_port/gtmrecv_showbacklog.c	(revision 45)
@@ -32,7 +32,7 @@
 #include "gtmrecv.h"
 #include "repl_dbg.h"
 #include "repl_shutdcode.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	recvpool_addrs		recvpool;
 GBLREF	gtmrecv_options_t	gtmrecv_options;
Index: sr_port/f_ztrnlnm.c
===================================================================
--- sr_port/f_ztrnlnm.c	(revision 6)
+++ sr_port/f_ztrnlnm.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/performcaslatchcheck.c
===================================================================
--- sr_port/performcaslatchcheck.c	(revision 6)
+++ sr_port/performcaslatchcheck.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "mdef.h"
 #include "compswap.h"
 #include "lockconst.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "is_proc_alive.h"
 #include "performcaslatchcheck.h"
 #ifdef UNIX
Index: sr_port/op_zallocate.c
===================================================================
--- sr_port/op_zallocate.c	(revision 6)
+++ sr_port/op_zallocate.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 /*
  * -----------------------------------------------
  * This routine is a one-argument front-end for op_zallocate
Index: sr_port/dse_m_rest.c
===================================================================
--- sr_port/dse_m_rest.c	(revision 6)
+++ sr_port/dse_m_rest.c	(revision 45)
@@ -37,7 +37,7 @@
 #include "gdsfhead.h"
 #include "gdsblk.h"
 #include "copy.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gdsbml.h"
 #include "dse.h"
 
Index: sr_port/op_fnzbitfind.c
===================================================================
--- sr_port/op_fnzbitfind.c	(revision 6)
+++ sr_port/op_fnzbitfind.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_fnzbitfind(mval *dst, mval *bitstr, int truthval, int pos)
 {
Index: sr_port/op_zcont.c
===================================================================
--- sr_port/op_zcont.c	(revision 6)
+++ sr_port/op_zcont.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF stack_frame *frame_pointer;
 
Index: sr_port/lvzwr_var.c
===================================================================
--- sr_port/lvzwr_var.c	(revision 6)
+++ sr_port/lvzwr_var.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "zshow.h"
 #include "collseq.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "outofband.h"
 #include "do_xform.h"
 #include "numcmp.h"
Index: sr_port/op_lvpatwrite.c
===================================================================
--- sr_port/op_lvpatwrite.c	(revision 6)
+++ sr_port/op_lvpatwrite.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "gdsfhead.h"
 #include "zwrite.h"
 #include <varargs.h>
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "gtm_maxstr.h"
 
Index: sr_port/dse_all.c
===================================================================
--- sr_port/dse_all.c	(revision 6)
+++ sr_port/dse_all.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "gtm_stdio.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "gdsroot.h"
 #include "gt_timer.h"
Index: sr_port/dse_f_reg.c
===================================================================
--- sr_port/dse_f_reg.c	(revision 6)
+++ sr_port/dse_f_reg.c	(revision 45)
@@ -21,7 +21,7 @@
 #include "filestruct.h"
 #include "min_max.h"		/* needed for init_root_gv.h */
 #include "init_root_gv.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "dse.h"
 
Index: sr_port/zshow_params.h
===================================================================
--- sr_port/zshow_params.h	(revision 6)
+++ sr_port/zshow_params.h	(revision 45)
@@ -31,6 +31,9 @@
 zshow_fil,
 zshow_fixed,
 zshow_host,
+#ifdef WANT_GTM_PERL
+zshow_iconv,
+#endif
 zshow_inse,
 zshow_lab,
 zshow_leng,
@@ -58,6 +61,12 @@
 zshow_uic,
 zshow_wait,
 zshow_wchk,
+#ifdef WANT_GTM_PERL
+zshow_zpop,
+zshow_zpush,
+zshow_zshift,
+zshow_zunshift,
+#endif
 zshow_width,
 zshow_write
 };
Index: sr_port/jobinterrupt_process_cleanup.c
===================================================================
--- sr_port/jobinterrupt_process_cleanup.c	(revision 6)
+++ sr_port/jobinterrupt_process_cleanup.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "dm_setup.h"
 #include "error.h"
 #include "error_trap.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_string.h"
 #include "gtmmsg.h"
 #include "jobinterrupt_process_cleanup.h"
Index: sr_port/op_fnreverse.c
===================================================================
--- sr_port/op_fnreverse.c	(revision 6)
+++ sr_port/op_fnreverse.c	(revision 45)
@@ -10,7 +10,7 @@
 
 #include "mdef.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
@@ -32,9 +32,9 @@
 	int	lcnt;
         char    *in, *out;
 
+	MV_FORCE_STR(src);
         if (stringpool.free + src->str.len > stringpool.top)
                 stp_gcol(src->str.len);
-	MV_FORCE_STR(src);
         out = (char *)stringpool.free;
         stringpool.free += src->str.len;
         in = src->str.addr + src->str.len * sizeof(char);
Index: sr_port/dse_cache.c
===================================================================
--- sr_port/dse_cache.c	(revision 6)
+++ sr_port/dse_cache.c	(revision 45)
@@ -23,10 +23,10 @@
 #include "jnl.h"
 #include "cli.h"
 #include "gdsblk.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 #include "stringpool.h"		/* for GET_CURR_TIME_IN_DOLLARH_AND_ZDATE macro */
-#include "op.h"			/* for op_fnzdate and op_horolog prototype */
+#include "gtm_op.h"			/* for op_fnzdate and op_horolog prototype */
 #include "wcs_recover.h"	/* for wcs_recover prototype */
 
 GBLREF gd_region	*gv_cur_region;
Index: sr_port/op_fnzbitset.c
===================================================================
--- sr_port/op_fnzbitset.c	(revision 6)
+++ sr_port/op_fnzbitset.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: sr_port/op_fnstack2.c
===================================================================
--- sr_port/op_fnstack2.c	(revision 6)
+++ sr_port/op_fnstack2.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "dollar_zlevel.h"
 #include "mv_stent.h"
 #include "error_trap.h"
Index: sr_port/m_zwatch.c
===================================================================
--- sr_port/m_zwatch.c	(revision 6)
+++ sr_port/m_zwatch.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "advancewindow.h"
Index: sr_port/mu_reorg.c
===================================================================
--- sr_port/mu_reorg.c	(revision 6)
+++ sr_port/mu_reorg.c	(revision 45)
@@ -53,9 +53,9 @@
 #include "t_end.h"
 #include "t_retry.h"
 #include "mupip_reorg.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "t_begin.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_rtsib.h"
 #include "gvcst_search.h"
 #include "gvcst_bmp_mark_free.h"
Index: sr_port/op_indfun.c
===================================================================
--- sr_port/op_indfun.c	(revision 6)
+++ sr_port/op_indfun.c	(revision 45)
@@ -14,9 +14,9 @@
 #include <limits.h>
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 
 UNIX_ONLY(GBLREF) VMS_ONLY(LITREF) int (*indir_fcn[])();
 GBLREF mval **ind_result_sp, **ind_result_top;
Index: sr_port/make_commarg.c
===================================================================
--- sr_port/make_commarg.c	(revision 6)
+++ sr_port/make_commarg.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 
 #ifdef DEBUG
Index: sr_port/m_xecute.c
===================================================================
--- sr_port/m_xecute.c	(revision 6)
+++ sr_port/m_xecute.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mmemory.h"
Index: sr_port/op_dt_false.c
===================================================================
--- sr_port/op_dt_false.c	(revision 6)
+++ sr_port/op_dt_false.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	int dollar_truth;
 
Index: sr_port/f_order.c
===================================================================
--- sr_port/f_order.c	(revision 6)
+++ sr_port/f_order.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "fnorder.h"
Index: sr_port/flt_mod.c
===================================================================
--- sr_port/flt_mod.c	(revision 6)
+++ sr_port/flt_mod.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "mdef.h"
 
 #include "arit.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "eb_muldiv.h"
 #include "promodemo.h"
 #include "flt_mod.h"
Index: sr_port/op_incrlock.c
===================================================================
--- sr_port/op_incrlock.c	(revision 6)
+++ sr_port/op_incrlock.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 
 #include "locklits.h"
-#include "op.h"
+#include "gtm_op.h"
 
 /*
  * -----------------------------------------------
Index: sr_port/deferred_events.c
===================================================================
--- sr_port/deferred_events.c	(revision 6)
+++ sr_port/deferred_events.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "interlock.h"
 #include "lockconst.h"
 #include "add_inter.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "iott_wrterr.h"
 
 #ifdef DEBUG_DEFERRED
Index: sr_port/op_fnlvname.c
===================================================================
--- sr_port/op_fnlvname.c	(revision 6)
+++ sr_port/op_fnlvname.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "hashdef.h"
 #include "lv_val.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 GBLREF symval *curr_symval;
Index: sr_port/tt_write_error_set.c
===================================================================
--- sr_port/tt_write_error_set.c	(revision 6)
+++ sr_port/tt_write_error_set.c	(revision 45)
@@ -13,7 +13,7 @@
 #include "xfer_enum.h"
 #include "outofband.h"
 #include "deferred_events.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "iott_wrterr.h"
 
 
Index: sr_port/lvn.c
===================================================================
--- sr_port/lvn.c	(revision 6)
+++ sr_port/lvn.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "subscript.h"
 #include "advancewindow.h"
Index: sr_port/cli_port.c
===================================================================
--- sr_port/cli_port.c	(revision 6)
+++ sr_port/cli_port.c	(revision 45)
@@ -19,7 +19,7 @@
 #include <errno.h>
 
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 
 /* A lot of stuff that can be made portable across unix and vvms cli.c needs to be moved into this module.
  * For a start, cli_str_to_hex() is moved in. At least cli_get_str(), cli_get_int(), cli_get_num() can be moved in later.
Index: sr_port/zshow_zwrite.c
===================================================================
--- sr_port/zshow_zwrite.c	(revision 6)
+++ sr_port/zshow_zwrite.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "mlkdef.h"
 #include "zshow.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 GBLREF uint4 pat_everything[];
Index: sr_port/compiler.h
===================================================================
--- sr_port/compiler.h	(revision 6)
+++ sr_port/compiler.h	(revision 45)
@@ -329,6 +329,10 @@
 int f_qsubscript(oprtype *a, opctype op);
 int f_query (oprtype *a, opctype op);
 int f_reverse(oprtype *a, opctype op);
+#ifdef WANT_GTM_PERL
+int f_zperleval(oprtype *a, opctype op);
+int f_perlva( oprtype *a, opctype op);
+#endif
 int f_select(oprtype *a, opctype op);
 int f_stack(oprtype *a, opctype op);
 int f_text(oprtype *a, opctype op);
Index: sr_port/eval_expr.c
===================================================================
--- sr_port/eval_expr.c	(revision 6)
+++ sr_port/eval_expr.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 #include "compile_pattern.h"
Index: sr_port/dse_range.c
===================================================================
--- sr_port/dse_range.c	(revision 6)
+++ sr_port/dse_range.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "cli.h"
 #include "copy.h"
 #include "min_max.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 /* Include prototypes */
Index: sr_port/put_ilit.c
===================================================================
--- sr_port/put_ilit.c	(revision 6)
+++ sr_port/put_ilit.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "compiler.h"
 
 oprtype put_ilit(mint x)
Index: sr_port/start_fetches.c
===================================================================
--- sr_port/start_fetches.c	(revision 6)
+++ sr_port/start_fetches.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 
 GBLREF triple *curr_fetch_trip, *curr_fetch_opr;
 GBLREF int4 curr_fetch_count;
Index: sr_port/op_indlvarg.c
===================================================================
--- sr_port/op_indlvarg.c	(revision 6)
+++ sr_port/op_indlvarg.c	(revision 45)
@@ -11,11 +11,11 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	mval	**ind_result_sp, **ind_result_top;
 LITREF	char	ctypetab[NUM_ASCII_CHARS];
Index: sr_port/indirection.c
===================================================================
--- sr_port/indirection.c	(revision 6)
+++ sr_port/indirection.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "subscript.h"
 #include "advancewindow.h"
Index: sr_port/op_zcompile.c
===================================================================
--- sr_port/op_zcompile.c	(revision 6)
+++ sr_port/op_zcompile.c	(revision 45)
@@ -13,7 +13,7 @@
 #include "stp_parms.h"
 #include "stringpool.h"
 #include "cmd_qlf.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "source_file.h"
 #include "cli.h"
 
Index: sr_port/mupfndfil.c
===================================================================
--- sr_port/mupfndfil.c	(revision 6)
+++ sr_port/mupfndfil.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "gdsfhead.h"
 #include "filestruct.h"
 #include "jnl.h"
-#include "util.h"
+#include "gtm_util.h"
 #if defined(UNIX)
 #include "parse_file.h"
 #include "is_raw_dev.h"
Index: sr_port/wrtcatopt.c
===================================================================
--- sr_port/wrtcatopt.c	(revision 6)
+++ sr_port/wrtcatopt.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 
 #define STO_LPX(X) (*lpx && (*lpx < lptop) ? (*++(*lpx) = ((X)->operand[0].oprval.tref->opcode == OC_LIT) ? (X): 0) : 0)
Index: sr_port/op_gvextnam.c
===================================================================
--- sr_port/op_gvextnam.c	(revision 6)
+++ sr_port/op_gvextnam.c	(revision 45)
@@ -32,7 +32,7 @@
 #include "gdsfhead.h"
 #include "filestruct.h"
 #include "gbldirnam.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "format_targ_key.h"
 #include "gvsub2str.h"
 #include "dpgbldir.h"
Index: sr_port/lvzwr_fini.c
===================================================================
--- sr_port/lvzwr_fini.c	(revision 6)
+++ sr_port/lvzwr_fini.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "zwrite.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "patcode.h"
 
 GBLREF symval *curr_symval;
Index: sr_port/op_unlock.c
===================================================================
--- sr_port/op_unlock.c	(revision 6)
+++ sr_port/op_unlock.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "gdsfhead.h"
 #include "mlkdef.h"
 #include "tp_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mlk_pvtblk_delete.h"
 #include "mlk_unlock.h"
 #include "gvcmx.h"
Index: sr_port/mupip_freeze.c
===================================================================
--- sr_port/mupip_freeze.c	(revision 6)
+++ sr_port/mupip_freeze.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "hashtab.h"		/* needed for tp.h */
 #include "buddy_list.h"		/* needed for tp.h */
 #include "tp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gt_timer.h"
 #include "mupipbckup.h"
 #include "gvcst_init.h"
Index: sr_port/dse_chng_bhead.c
===================================================================
--- sr_port/dse_chng_bhead.c	(revision 6)
+++ sr_port/dse_chng_bhead.c	(revision 45)
@@ -47,7 +47,7 @@
 #ifdef UNIX
 #include "process_deferred_stale.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 #include "t_abort.h"
 
 GBLREF char		*update_array, *update_array_ptr;
Index: sr_port/dse_integ.c
===================================================================
--- sr_port/dse_integ.c	(revision 6)
+++ sr_port/dse_integ.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "gdsblk.h"
 #include "gdsfhead.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 /* Include prototypes */
Index: sr_port/op_gvput.c
===================================================================
--- sr_port/op_gvput.c	(revision 6)
+++ sr_port/op_gvput.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "gdsfhead.h"
 #include "gdsblk.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_put.h"
 #include "change_reg.h"
 #include "format_targ_key.h"
Index: sr_port/op_zprevious.c
===================================================================
--- sr_port/op_zprevious.c	(revision 6)
+++ sr_port/op_zprevious.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_data.h"
 #include "gvcst_zprevious.h"
 #include "change_reg.h"
Index: sr_port/op_zstepret.c
===================================================================
--- sr_port/op_zstepret.c	(revision 6)
+++ sr_port/op_zstepret.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "zstep.h"
 #include "xfer_enum.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF int 	(* volatile xfer_table[])();
 GBLREF bool	neterr_pending;
Index: sr_port/mupip_integ.c
===================================================================
--- sr_port/mupip_integ.c	(revision 6)
+++ sr_port/mupip_integ.c	(revision 45)
@@ -30,7 +30,7 @@
 #include "buddy_list.h"		/* needed for tp.h */
 #include "tp.h"
 #include "mu_int_maps.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupipbckup.h"
 #include "dbfilop.h"
 #include "targ_alloc.h"
Index: sr_port/op_zst_break.c
===================================================================
--- sr_port/op_zst_break.c	(revision 6)
+++ sr_port/op_zst_break.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "stack_frame.h"
 #include "xfer_enum.h"
 #include "indir_enum.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "io.h"
 
 GBLREF stack_frame	*frame_pointer;
Index: sr_port/op_fnquery.c
===================================================================
--- sr_port/op_fnquery.c	(revision 6)
+++ sr_port/op_fnquery.c	(revision 45)
@@ -22,7 +22,7 @@
 #include "mv_stent.h"
 #include "collseq.h"
 #include "compiler.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "do_xform.h"
 #include "q_rtsib.h"
 #include "q_nxt_val_node.h"
Index: sr_port/m_zsystem.c
===================================================================
--- sr_port/m_zsystem.c	(revision 6)
+++ sr_port/m_zsystem.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "cmd.h"
Index: sr_port/iop.h
===================================================================
--- sr_port/iop.h	(revision 6)
+++ sr_port/iop.h	(revision 45)
@@ -194,4 +194,13 @@
 IOP_DESC(177, iop_bigrecord, 0, IOP_OPEN_OK, 0),
 IOP_DESC(178, iop_nobigrecord, 0, IOP_OPEN_OK, 0),
 IOP_DESC(179, iop_rfm, IOP_VAR_SIZE, IOP_OPEN_OK, IOP_SRC_STR),
+#ifdef WANT_GTM_PERL
+IOP_DESC(180, iop_zpop, 0, IOP_OPEN_OK|IOP_USE_OK, 0),
+IOP_DESC(181, iop_zpush, 0, IOP_OPEN_OK|IOP_USE_OK, 0),
+IOP_DESC(182, iop_zshift, 0, IOP_OPEN_OK|IOP_USE_OK, 0),
+IOP_DESC(183, iop_zunshift, 0, IOP_OPEN_OK|IOP_USE_OK, 0),
+IOP_DESC(184, iop_iconv, IOP_VAR_SIZE, IOP_OPEN_OK | IOP_USE_OK, IOP_SRC_STR),
+IOP_DESC(185, n_iops, 0, 0, 0)
+#else
 IOP_DESC(180, n_iops, 0, 0, 0)
+#endif
Index: sr_port/op_gvquery.c
===================================================================
--- sr_port/op_gvquery.c	(revision 6)
+++ sr_port/op_gvquery.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_query.h"
 #include "format_targ_key.h"
 #include "gvcmx.h"
Index: sr_port/op_gvsavtarg.c
===================================================================
--- sr_port/op_gvsavtarg.c	(revision 6)
+++ sr_port/op_gvsavtarg.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF gd_addr		*gd_targ_addr;
 GBLREF gv_key		*gv_currkey;
Index: sr_port/dse_rmrec.c
===================================================================
--- sr_port/dse_rmrec.c	(revision 6)
+++ sr_port/dse_rmrec.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "copy.h"
 #include "filestruct.h"
 #include "jnl.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "skan_offset.h"
 #include "skan_rnum.h"
 #include "dse.h"
Index: sr_port/mur_report_error.c
===================================================================
--- sr_port/mur_report_error.c	(revision 6)
+++ sr_port/mur_report_error.c	(revision 45)
@@ -25,7 +25,7 @@
 #include "muprec.h"
 #include "iosp.h"
 #include "copy.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 
 GBLREF	mur_opt_struct	mur_options;
Index: sr_port/op_gvnext.c
===================================================================
--- sr_port/op_gvnext.c	(revision 6)
+++ sr_port/op_gvnext.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_order.h"
 #include "gvsub2str.h"
 #include "gvcmx.h"
Index: sr_port/unw_mv_ent.c
===================================================================
--- sr_port/unw_mv_ent.c	(revision 6)
+++ sr_port/unw_mv_ent.c	(revision 45)
@@ -24,7 +24,7 @@
 #include "dpgbldir.h"
 #include "dpgbldir_sysops.h"
 #include "error_trap.h"		/* for STACK_ZTRAP_EXPLICIT_NULL macro */
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF symval			*curr_symval;
 GBLREF sbs_blk			*sbs_blk_hdr;
Index: sr_port/mupip_extend.c
===================================================================
--- sr_port/mupip_extend.c	(revision 6)
+++ sr_port/mupip_extend.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "io.h"
 #include "gtmsecshr.h"
 #endif
-#include "util.h"
+#include "gtm_util.h"
 #include "cli.h"
 #include "gvcst_init.h"
 #include "mupip_exit.h"
Index: sr_port/f_fnzbitfind.c
===================================================================
--- sr_port/f_fnzbitfind.c	(revision 6)
+++ sr_port/f_fnzbitfind.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/op_lock2.c
===================================================================
--- sr_port/op_lock2.c	(revision 6)
+++ sr_port/op_lock2.c	(revision 45)
@@ -33,7 +33,7 @@
 #include "rel_quant.h"
 #include "lckclr.h"
 #include "wake_alarm.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF	bool		out_of_time;
 GBLREF	bool		remlkreq;
Index: sr_port/op_hang.c
===================================================================
--- sr_port/op_hang.c	(revision 6)
+++ sr_port/op_hang.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "arit.h"
 #include "gt_timer.h"
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "outofband.h"
 #include "rel_quant.h"
 
Index: sr_port/op_gvrectarg.c
===================================================================
--- sr_port/op_gvrectarg.c	(revision 6)
+++ sr_port/op_gvrectarg.c	(revision 45)
@@ -26,7 +26,7 @@
 #include "hashtab.h"		/* needed for tp.h */
 #include "buddy_list.h"		/* needed for tp.h */
 #include "tp.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_root_search.h"
 #include "tp_set_sgm.h"
 
Index: sr_port/dse_f_key.c
===================================================================
--- sr_port/dse_f_key.c	(revision 6)
+++ sr_port/dse_f_key.c	(revision 45)
@@ -19,7 +19,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "dse.h"
 
 GBLREF short int	patch_path_count;
Index: sr_port/mupip_set_journal_parse.c
===================================================================
--- sr_port/mupip_set_journal_parse.c	(revision 6)
+++ sr_port/mupip_set_journal_parse.c	(revision 45)
@@ -29,7 +29,7 @@
 #include "iosp.h"
 #include "jnl.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 
 error_def(ERR_BFRQUALREQ);
Index: sr_port/f_zgetsyi.c
===================================================================
--- sr_port/f_zgetsyi.c	(revision 6)
+++ sr_port/f_zgetsyi.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/f_zjobexam.c
===================================================================
--- sr_port/f_zjobexam.c	(revision 6)
+++ sr_port/f_zjobexam.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/tp_timeout.c
===================================================================
--- sr_port/tp_timeout.c	(revision 6)
+++ sr_port/tp_timeout.c	(revision 45)
@@ -60,7 +60,7 @@
 #include "xfer_enum.h"
 #include "tp_timeout.h"
 #include "deferred_events.h"
-#include "op.h"
+#include "gtm_op.h"
 
 /* ------------------------------------------------------------------
  * Macro for timer ID
Index: sr_port/unwind_nocounts.c
===================================================================
--- sr_port/unwind_nocounts.c	(revision 6)
+++ sr_port/unwind_nocounts.c	(revision 45)
@@ -13,7 +13,7 @@
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include "tp_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "unwind_nocounts.h"
 
 GBLREF stack_frame	*frame_pointer;
Index: sr_port/glvn.c
===================================================================
--- sr_port/glvn.c	(revision 6)
+++ sr_port/glvn.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "mdq.h"
 
Index: sr_port/tp_unwind.c
===================================================================
--- sr_port/tp_unwind.c	(revision 6)
+++ sr_port/tp_unwind.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "mlkdef.h"
 #include "hashdef.h"
 #include "lv_val.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "tp_unwind.h"
 #include "mlk_pvtblk_delete.h"	/* for prototype */
 #include "mlk_unlock.h"		/* for prototype */
Index: sr_port/op_fnzbitstr.c
===================================================================
--- sr_port/op_fnzbitstr.c	(revision 6)
+++ sr_port/op_fnzbitstr.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc	stringpool;
 
Index: sr_port/op_fnzprevious.c
===================================================================
--- sr_port/op_fnzprevious.c	(revision 6)
+++ sr_port/op_fnzprevious.c	(revision 45)
@@ -15,7 +15,7 @@
 #include "sbs_blk.h"
 #include "collseq.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "do_xform.h"
 #include "numcmp.h"
 #include "mvalconv.h"
Index: sr_port/op_fnp1.c
===================================================================
--- sr_port/op_fnp1.c	(revision 6)
+++ sr_port/op_fnp1.c	(revision 45)
@@ -38,7 +38,7 @@
 #include "fnpc.h"
 #include "gtm_stdio.h"
 #include "min_max.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF fnpc_area	fnpca;			/* The $piece cache area */
 
Index: sr_port/str2gvkey_gvfunc.c
===================================================================
--- sr_port/str2gvkey_gvfunc.c	(revision 6)
+++ sr_port/str2gvkey_gvfunc.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "fileinfo.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "subscript.h"
 #include "str2gvargs.h"
 #include "str2gvkey.h"
Index: sr_port/op_fnzbitnot.c
===================================================================
--- sr_port/op_fnzbitnot.c	(revision 6)
+++ sr_port/op_fnzbitnot.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: sr_port/mur_close_file_extfmt.c
===================================================================
--- sr_port/mur_close_file_extfmt.c	(revision 6)
+++ sr_port/mur_close_file_extfmt.c	(revision 45)
@@ -29,7 +29,7 @@
 # include "gtmio.h"
 # include "io.h"
 # include "io_params.h"
-# include "op.h"
+# include "gtm_op.h"
 # include "iosp.h"
 # include "gtmmsg.h"
 # include "gtm_rename.h"
Index: sr_port/op_wttab.c
===================================================================
--- sr_port/op_wttab.c	(revision 6)
+++ sr_port/op_wttab.c	(revision 45)
@@ -14,7 +14,7 @@
 
 #include "io.h"
 #include "iousdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 LITDEF unsigned char spaces_block[TAB_BUF_SZ] =
 {
Index: sr_port/mtables.c
===================================================================
--- sr_port/mtables.c	(revision 6)
+++ sr_port/mtables.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "mv_stent.h"
 #include "release_name.h"
Index: sr_port/gtmrecv_get_opt.c
===================================================================
--- sr_port/gtmrecv_get_opt.c	(revision 6)
+++ sr_port/gtmrecv_get_opt.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "gtmrecv.h"
 #include "cli.h"
 #include "gtm_stdio.h"
-#include "util.h"
+#include "gtm_util.h"
 
 #define DEFAULT_RECVPOOL_SIZE	(64 * 1024 * 1024)
 
Index: sr_port/op_fnlvprvname.c
===================================================================
--- sr_port/op_fnlvprvname.c	(revision 6)
+++ sr_port/op_fnlvprvname.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "hashdef.h"
 #include "lv_val.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 GBLREF symval *curr_symval;
Index: sr_port/op_igetsrc.c
===================================================================
--- sr_port/op_igetsrc.c	(revision 6)
+++ sr_port/op_igetsrc.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF mval **ind_source_sp, **ind_source_array;
 
Index: sr_port/expratom.c
===================================================================
--- sr_port/expratom.c	(revision 6)
+++ sr_port/expratom.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 
 GBLREF char window_token;
Index: sr_port/m_halt.c
===================================================================
--- sr_port/m_halt.c	(revision 6)
+++ sr_port/m_halt.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/op_tstart.c
===================================================================
--- sr_port/op_tstart.c	(revision 6)
+++ sr_port/op_tstart.c	(revision 45)
@@ -34,7 +34,7 @@
 #include "buddy_list.h"		/* needed for tp.h */
 #include "tp.h"
 #include "tp_timeout.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "have_crit.h"
 #include "gtm_caseconv.h"
 #include "gvcst_tp_init.h"
Index: sr_port/op_nullexp.c
===================================================================
--- sr_port/op_nullexp.c	(revision 6)
+++ sr_port/op_nullexp.c	(revision 45)
@@ -13,7 +13,7 @@
 
 #include "gtm_string.h"
 
-#include "op.h"
+#include "gtm_op.h"
 
 void op_nullexp(mval *v)
 {
Index: sr_port/line.c
===================================================================
--- sr_port/line.c	(revision 6)
+++ sr_port/line.c	(revision 45)
@@ -13,7 +13,7 @@
 #include "compiler.h"
 #include "cmd_qlf.h"
 #include "toktyp.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "mmemory.h"
 #include "advancewindow.h"
Index: sr_port/one_job_param.c
===================================================================
--- sr_port/one_job_param.c	(revision 6)
+++ sr_port/one_job_param.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "nametabtyp.h"
 #include "job.h"
Index: sr_port/m_zcompile.c
===================================================================
--- sr_port/m_zcompile.c	(revision 6)
+++ sr_port/m_zcompile.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "cmd.h"
 
Index: sr_port/op_rhdaddr.c
===================================================================
--- sr_port/op_rhdaddr.c	(revision 6)
+++ sr_port/op_rhdaddr.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "rtnhdr.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF mident zlink_mname;
 
Index: sr_port/op_zdealloc2.c
===================================================================
--- sr_port/op_zdealloc2.c	(revision 6)
+++ sr_port/op_zdealloc2.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "hashdef.h"
 #include "cmmdef.h"
 #include "tp_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mlk_pvtblk_delete.h"
 #include "mlk_unlock.h"
 #include "gvcmx.h"
Index: sr_port/lke_clear.c
===================================================================
--- sr_port/lke_clear.c	(revision 6)
+++ sr_port/lke_clear.c	(revision 45)
@@ -26,7 +26,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "filestruct.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtcmtr_lke.h"
 #include "lke.h"
 #include "lke_getcli.h"
Index: sr_port/f_next.c
===================================================================
--- sr_port/f_next.c	(revision 6)
+++ sr_port/f_next.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mdq.h"
Index: sr_port/op_fnqlength.c
===================================================================
--- sr_port/op_fnqlength.c	(revision 6)
+++ sr_port/op_fnqlength.c	(revision 45)
@@ -10,7 +10,7 @@
 
 #include "mdef.h"
 #include "mvalconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "is_canonic_name.h"
 
 /*
Index: sr_port/op_decrlock.c
===================================================================
--- sr_port/op_decrlock.c	(revision 6)
+++ sr_port/op_decrlock.c	(revision 45)
@@ -15,7 +15,7 @@
 #include "iotimer.h"
 #include "locklits.h"
 #include "tp_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mlk_pvtblk_delete.h"
 #include "mlk_unlock.h"
 #include "gvcmx.h"
Index: sr_port/op_wteol.c
===================================================================
--- sr_port/op_wteol.c	(revision 6)
+++ sr_port/op_wteol.c	(revision 45)
@@ -12,7 +12,7 @@
 
 #include "mdef.h"
 #include "io.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF io_pair		io_curr_device;
 GBLREF io_desc		*active_device;
Index: sr_port/dse_save.c
===================================================================
--- sr_port/dse_save.c	(revision 6)
+++ sr_port/dse_save.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "gdsfhead.h"
 #include "dse.h"
 #include "cli.h"
-#include "util.h"
+#include "gtm_util.h"
 
 /* Include prototypes */
 #include "t_qread.h"
Index: sr_port/m_for.c
===================================================================
--- sr_port/m_for.c	(revision 6)
+++ sr_port/m_for.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "mmemory.h"
 #include "advancewindow.h"
Index: sr_port/stringpool.h
===================================================================
--- sr_port/stringpool.h	(revision 6)
+++ sr_port/stringpool.h	(revision 45)
@@ -8,6 +8,8 @@
  *	the license, please stop and do not read further.	*
  *								*
  ****************************************************************/
+#ifndef STRINGPOOL_H_INCLUDED__
+#define STRINGPOOL_H_INCLUDED__ 42
 
 typedef struct
 {
@@ -19,3 +21,5 @@
 void stp_move(char *from, char *to);
 void stp_init(unsigned int size);
 void s2pool(mstr *a);
+
+#endif /* STRINGPOOL_H_INCLUDED__ */
Index: sr_port/op_fntext.c
===================================================================
--- sr_port/op_fntext.c	(revision 6)
+++ sr_port/op_fntext.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "error.h"
 #include "rtnhdr.h"
 #include "srcline.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "stringpool.h"
 
 GBLREF mident zlink_mname;
Index: sr_port/ceprep_file.c
===================================================================
--- sr_port/ceprep_file.c	(revision 6)
+++ sr_port/ceprep_file.c	(revision 45)
@@ -22,7 +22,7 @@
 #include "compiler.h"
 #include "io.h"
 #include "io_params.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "comp_esc.h"
 
 #define CEPREP_OPEN_TIMEOUT 30
Index: sr_port/op_svput.c
===================================================================
--- sr_port/op_svput.c	(revision 6)
+++ sr_port/op_svput.c	(revision 45)
@@ -22,7 +22,7 @@
 #include "indir_enum.h"
 #include "error.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "zroutines.h"
 #include "dpgbldir.h"
@@ -39,10 +39,18 @@
 #include "getzdir.h"
 #include "gtm_newintrinsic.h"
 
+#ifdef WANT_GTM_PERL
+#define PROMPTBUF "GTM-PERL>      "
+#else
 #define PROMPTBUF "GTM>           "
+#endif
 
 GBLDEF char		prombuf[] = PROMPTBUF;
+#ifdef WANT_GTM_PERL
+GBLDEF MSTR_DEF(gtmprompt, 9, &prombuf[0]);
+#else
 GBLDEF MSTR_DEF(gtmprompt, 4, &prombuf[0]);
+#endif
 
 GBLREF gv_key		*gv_currkey;
 GBLREF gv_namehead	*gv_target;
Index: sr_port/op_zprint.c
===================================================================
--- sr_port/op_zprint.c	(revision 6)
+++ sr_port/op_zprint.c	(revision 45)
@@ -13,7 +13,7 @@
 #include "rtnhdr.h"
 #include "srcline.h"
 #include "error.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "outofband.h"
 
 #define	INFO_MSK(error)	(error & ~SEV_MSK | INFO)
Index: sr_port/op_mul.c
===================================================================
--- sr_port/op_mul.c	(revision 6)
+++ sr_port/op_mul.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "arit.h"
 #include "eb_muldiv.h"
 #include "promodemo.h"
-#include "op.h"
+#include "gtm_op.h"
 
 LITREF int4	ten_pwr[];
 LITREF mval	literal_zero;
Index: sr_port/jobparameters.c
===================================================================
--- sr_port/jobparameters.c	(revision 6)
+++ sr_port/jobparameters.c	(revision 45)
@@ -13,7 +13,7 @@
 
 #include "compiler.h"
 /*
-#include "opcode.h"
+#include "gtm_opcode.h"
 */
 
 #include "toktyp.h"
Index: sr_port/op_fnzqgblmod.c
===================================================================
--- sr_port/op_fnzqgblmod.c	(revision 6)
+++ sr_port/op_fnzqgblmod.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "fileinfo.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_gblmod.h"
 #include "sgnl.h"
 
Index: sr_port/mupip_load_ch.c
===================================================================
--- sr_port/mupip_load_ch.c	(revision 6)
+++ sr_port/mupip_load_ch.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLDEF bool	mupip_error_occurred, mupip_DB_full;
 
Index: sr_port/mubfndreg.c
===================================================================
--- sr_port/mubfndreg.c	(revision 6)
+++ sr_port/mubfndreg.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "fileinfo.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "mupipbckup.h"
 
 GBLREF gd_addr *gd_header;
Index: sr_port/bx_tail.c
===================================================================
--- sr_port/bx_tail.c	(revision 6)
+++ sr_port/bx_tail.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "mmemory.h"
 
Index: sr_port/mur_interactive.c
===================================================================
--- sr_port/mur_interactive.c	(revision 6)
+++ sr_port/mur_interactive.c	(revision 45)
@@ -29,7 +29,7 @@
 #include "hashdef.h"
 #include "buddy_list.h"
 #include "muprec.h"
-#include "util.h"
+#include "gtm_util.h"
 
 
 
Index: sr_port/cmd.c
===================================================================
--- sr_port/cmd.c	(revision 6)
+++ sr_port/cmd.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "nametabtyp.h"
 #include "mmemory.h"
Index: sr_port/gbldefs.c
===================================================================
--- sr_port/gbldefs.c	(revision 6)
+++ sr_port/gbldefs.c	(revision 45)
@@ -80,7 +80,7 @@
 #include "iosocketdef.h"	/* needed for socket_pool */
 #include "ctrlc_handler_dummy.h"
 #include "unw_prof_frame_dummy.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gtmsecshr.h"
 #include "error_trap.h"
 #include "patcode.h"	/* for pat_everything and sizeof_pat_everything */
Index: sr_port/op_tcommit.c
===================================================================
--- sr_port/op_tcommit.c	(revision 6)
+++ sr_port/op_tcommit.c	(revision 45)
@@ -39,7 +39,7 @@
 #include "t_qread.h"
 #include "tp_timeout.h"
 #include "gtm_caseconv.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "gvcst_expand_free_subtree.h"
 #include "format_targ_key.h"
 #include "bm_getfree.h"
Index: sr_port/deviceparameters.c
===================================================================
--- sr_port/deviceparameters.c	(revision 6)
+++ sr_port/deviceparameters.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "nametabtyp.h"
 #include "io_params.h"
@@ -85,6 +85,9 @@
 	,{3,"HOS*"}	,{4,"HOST"}
 
 	,{6,"ICHSET"}
+#ifdef WANT_GTM_PERL
+        ,{5,"ICONV"}
+#endif
 	,{2,"IN*"}	,{4,"INSE"}
 	,{3,"IOE*"}
 
@@ -240,32 +243,60 @@
 	,{9,"ZNOFILTER"}
 	,{5,"ZNOFF"}
 	,{7,"ZNOWRAP"}
-
+#ifdef WANT_GTM_PERL
+        ,{4,"ZPOP"}
+        ,{5,"ZPUSH"}
+        ,{6,"ZSHIFT"}
+        ,{8,"ZUNSHIFT"}
+#endif
 	,{4,"ZWID*"}
 	,{4,"ZWRA*"}
 };
+#ifdef WANT_GTM_PERL
+#define DEV_PARAM_PERL_ADD_end(x) ((x) + 4)
+#undef XX
+#define XX(x) ((x)+1)
+# else
+#define DEV_PARAM_PERL_ADD_end(x) (x)
+#undef XX
+#define XX(x) (x)
+#endif
 /* Offset of letter with dev_param_names */
 LITDEF	unsigned char dev_param_index[27] =
 {
-/*	A    B    C    D    E    F    G    H    I    J    K    L    M    N   */
-	0,   5,   9,   23,  29,  42,  54,  56,  60,  64,  64,  64,  72,  73,
-/*	O    P    Q    R    S    T    U    V    W    X    Y    Z    end	     */
-	133, 138, 154, 155, 168, 180, 189, 195, 196, 211, 212, 213, 227
+/*	A    B    C    D    E    F    G    H    I       J        K        L        M        N   */
+	0,   5,   9,   23,  29,  42,  54,  56,  60,  XX(64),  XX(64),  XX(64),  XX(72),  XX(73),
+/*	   O        P        Q        R        S        T        U        V        W        X        Y        Z                               end	     */
+	XX(133), XX(138), XX(154), XX(155), XX(168), XX(180), XX(189), XX(195), XX(196), XX(211), XX(212), XX(213), XX(DEV_PARAM_PERL_ADD_end(227))
 };
+#undef XX
 /* Offset of string within letter in dev_param_names */
 /* maintained in conjunction with zshow_params.h   = offset in letter, letter  */
 LITDEF zshow_index zshow_param_index[] =
 {
-/*	ALLO     BLOC   CONV    CTRA    DELE   EBCD   EDIT    EXCE    EXTE    FIELD  FIL    FIXED   HOST     INSE   LAB */
-	{2,0},   {2,1}, {9,2},  {13,2}, {1,3}, {1,4}, {4,4},  {9,4},  {11,4}, {2,5}, {5,5}, {8,5},  {3,7},   {1,8}, {1,11},
+/*	ALLO     BLOC   CONV    CTRA    DELE   EBCD   EDIT    EXCE    EXTE    FIELD  FIL    FIXED   HOST   */ 
+	{2,0},   {2,1}, {9,2},  {13,2}, {1,3}, {1,4}, {4,4},  {9,4},  {11,4}, {2,5}, {5,5}, {8,5},  {3,7},  
+#ifndef WANT_GTM_PERL
+/*      INSE   LAB */
+        {1,8}, {1,11},
+#else
+/*      ICONV  INSE   LAB */
+        {1,8}, {2,8}, {1,11},         
+#endif
 /*	LENG     NOCENE  NOECHO  NOEDIT   NOESCA   NOHOST   NOINSE     */
 	{3,11},  {7,13}, {13,13}, {15,13}, {17,13}, {25,13}, {27,13},
 /*	NOPAST   NOREADS  NOTTSY   NOTYPE   NOWRAP   PAST    PRMMBX  RCHK    */
 	{33,13}, {38,13}, {49,13}, {51,13}, {57,13}, {10,15}, {14,15}, {1,17},
-/*      READ    READS	REC      SHAR    TERM    TTSY    TYPE     UIC     WAIT    WCHK    WIDTH   WRITE  */
-	{2,17}, {4,17},	{5,17},	 {4,18}, {1,19}, {6,19}, {8,19},  {1,20}, {2,22}, {4,22}, {6,22}, {10,22}
-};
+/*      READ    READS	REC      SHAR    TERM    TTSY    TYPE     UIC     WAIT    WCHK    */
+	{2,17}, {4,17},	{5,17},	 {4,18}, {1,19}, {6,19}, {8,19},  {1,20}, {2,22}, {4,22}, 
+/*      WIDTH   WRITE  */
+        {6,22}, {10,22}
+#ifdef WANT_GTM_PERL
+/*      ZPOP    ZPUSH   ZSHIFT   ZUNSHIFT */
+       ,{0,25}, {1,25}, {2,25},  {3,25}
+#endif
 
+}; 
 int deviceparameters(oprtype *c,char who_calls)
 {
 	oprtype x;
@@ -339,6 +370,9 @@
 		,iop_hostsync, iop_hostsync
 
 		,iop_ipchset
+#ifdef WANT_GTM_PERL
+                ,iop_iconv
+#endif
 		,iop_insert ,iop_insert
 		,iop_ioerror
 
@@ -494,6 +528,12 @@
 		,iop_nofilter /* for ZNOFILTER; ZNOFILTER is a synonym for NOFIL* */
 		,iop_znoff
 		,iop_nowrap /* for ZNOWRAP; ZNOWRAP is a synonym for NOWR, NOWRA*, NOWRAP */
+#ifdef WANT_GTM_PERL
+                ,iop_zpop
+                ,iop_zpush
+                ,iop_zshift
+                ,iop_zunshift
+#endif
 		,iop_width /* for ZWIDTH; ZWID* is a synonym for WI*, WIDTH */
 		,iop_wrap /* for ZWRAP; ZWRA* is a synonym for WR, and WRA* */
 	} ;
Index: sr_port/op_dmode.c
===================================================================
--- sr_port/op_dmode.c	(revision 6)
+++ sr_port/op_dmode.c	(revision 45)
@@ -34,7 +34,7 @@
 #include "tp.h"
 #include "send_msg.h"
 #include "gtmmsg.h"		/* for gtm_putmsg() prototype */
-#include "op.h"
+#include "gtm_op.h"
 #include "change_reg.h"
 #include "dm_read.h"
 #include "tp_change_reg.h"
Index: sr_port/op_fnzbitget.c
===================================================================
--- sr_port/op_fnzbitget.c	(revision 6)
+++ sr_port/op_fnzbitget.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 void op_fnzbitget(mval *dst, mval *bitstr, int pos)
Index: sr_port/op_indlvadr.c
===================================================================
--- sr_port/op_indlvadr.c	(revision 6)
+++ sr_port/op_indlvadr.c	(revision 45)
@@ -11,11 +11,11 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "indir_enum.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF char	window_token;
 
Index: sr_port/gv_select.c
===================================================================
--- sr_port/gv_select.c	(revision 6)
+++ sr_port/gv_select.c	(revision 45)
@@ -24,8 +24,8 @@
 #include "hashdef.h"
 #include "iosp.h"
 #include "cli.h"
-#include "util.h"
-#include "op.h"
+#include "gtm_util.h"
+#include "gtm_op.h"
 #include "gt_timer.h"
 #include "mupip_exit.h"
 #include "gv_select.h"
Index: sr_port/op_fnfnumber.c
===================================================================
--- sr_port/op_fnfnumber.c	(revision 6)
+++ sr_port/op_fnfnumber.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "gtm_string.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 #define PLUS 	1
 #define MINUS 	2
Index: sr_port/op_indset.c
===================================================================
--- sr_port/op_indset.c	(revision 6)
+++ sr_port/op_indset.c	(revision 45)
@@ -15,10 +15,10 @@
 #include "lv_val.h"
 #include "toktyp.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "underr.h"
 
 GBLREF	symval	*curr_symval;
Index: sr_port/m_write.c
===================================================================
--- sr_port/m_write.c	(revision 6)
+++ sr_port/m_write.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "compiler.h"
 #include "stringpool.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "advancewindow.h"
Index: sr_port/gvzwr_out.c
===================================================================
--- sr_port/gvzwr_out.c	(revision 6)
+++ sr_port/gvzwr_out.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "zshow.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "format_targ_key.h"
 #include "mlkdef.h"
 #include "zwrite.h"
Index: sr_port/tcp_open.c
===================================================================
--- sr_port/tcp_open.c	(revision 6)
+++ sr_port/tcp_open.c	(revision 45)
@@ -48,7 +48,7 @@
 #include "iotcpdef.h"
 #include "iotcproutine.h"
 #include "io_params.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtmmsg.h"
 
 #define	MAX_CONN_PENDING	5
Index: sr_port/m_zattach.c
===================================================================
--- sr_port/m_zattach.c	(revision 6)
+++ sr_port/m_zattach.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "cmd.h"
Index: sr_port/op_fnzbitcoun.c
===================================================================
--- sr_port/op_fnzbitcoun.c	(revision 6)
+++ sr_port/op_fnzbitcoun.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 void op_fnzbitcoun(mval *dst, mval *bitstr)
Index: sr_port/f_view.c
===================================================================
--- sr_port/f_view.c	(revision 6)
+++ sr_port/f_view.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/zshow_output.c
===================================================================
--- sr_port/zshow_output.c	(revision 6)
+++ sr_port/zshow_output.c	(revision 45)
@@ -29,7 +29,7 @@
 #include "fileinfo.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "format_targ_key.h"
 #include "gtm_maxstr.h"
Index: sr_port/op_iocontrol.c
===================================================================
--- sr_port/op_iocontrol.c	(revision 6)
+++ sr_port/op_iocontrol.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "stringpool.h"
 #include "io.h"
 #include <varargs.h>
-#include "op.h"
+#include "gtm_op.h"
 
 /* THIS VERSION OF OP_IOCONTROL FORMATS MNENOMIC SPACE COMMANDS IN A
    'SOURCE' FORMAT....THIS IS FOR UNIV OF LOWELL TEST ONLY
Index: sr_port/dse_adrec.c
===================================================================
--- sr_port/dse_adrec.c	(revision 6)
+++ sr_port/dse_adrec.c	(revision 45)
@@ -35,7 +35,7 @@
 #include "t_end.h"
 #include "t_begin_crit.h"
 #include "gvcst_blk_build.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "t_abort.h"
 
 GBLREF char		*update_array, *update_array_ptr;
Index: sr_port/op_fnzbitand.c
===================================================================
--- sr_port/op_fnzbitand.c	(revision 6)
+++ sr_port/op_fnzbitand.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF spdesc stringpool;
 
Index: sr_port/op_indtext.c
===================================================================
--- sr_port/op_indtext.c	(revision 6)
+++ sr_port/op_indtext.c	(revision 45)
@@ -19,8 +19,8 @@
 #include "copy.h"
 #include "indir_enum.h"
 #include "mvalconv.h"
-#include "op.h"
-#include "opcode.h"
+#include "gtm_op.h"
+#include "gtm_opcode.h"
 #include "stringpool.h"
 #include "toktyp.h"
 
Index: sr_port/f_extract.c
===================================================================
--- sr_port/f_extract.c	(revision 6)
+++ sr_port/f_extract.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/compiler_ch.c
===================================================================
--- sr_port/compiler_ch.c	(revision 6)
+++ sr_port/compiler_ch.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "obj_file.h"
 #include "reinit_externs.h"
 #include "compiler.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF command_qualifier	cmd_qlf;
 GBLREF char			cg_phase;
Index: sr_port/op_zdeallocate.c
===================================================================
--- sr_port/op_zdeallocate.c	(revision 6)
+++ sr_port/op_zdeallocate.c	(revision 45)
@@ -18,7 +18,7 @@
  */
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_zdeallocate (int4 timeout)
 {
Index: sr_port/op_gvkill.c
===================================================================
--- sr_port/op_gvkill.c	(revision 6)
+++ sr_port/op_gvkill.c	(revision 45)
@@ -21,7 +21,7 @@
 #include "gvcmx.h"
 #include "gvusr.h"
 #include "sgnl.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF gv_namehead	*gv_target;
 GBLREF gd_region	*gv_cur_region;
Index: sr_port/lastchance1.c
===================================================================
--- sr_port/lastchance1.c	(revision 6)
+++ sr_port/lastchance1.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "iosp.h"
 #include "error.h"
 #include "gv_rundown.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF int4		exi_condition;
 GBLREF boolean_t	created_core;
Index: sr_port/f_length.c
===================================================================
--- sr_port/f_length.c	(revision 6)
+++ sr_port/f_length.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/op_view.c
===================================================================
--- sr_port/op_view.c	(revision 6)
+++ sr_port/op_view.c	(revision 45)
@@ -39,7 +39,7 @@
 #include "lv_val.h"
 #include "view.h"
 #include "send_msg.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "change_reg.h"
 #include "patcode.h"
 #include "mprof.h"
Index: sr_port/mprof_funcs.c
===================================================================
--- sr_port/mprof_funcs.c	(revision 6)
+++ sr_port/mprof_funcs.c	(revision 45)
@@ -34,7 +34,7 @@
 #include "mprof.h"
 #include "outofband.h"
 #include "xfer_enum.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "callg.h"
 #include "gtmmsg.h"
 #include "str2gvargs.h"
Index: sr_port/cdbg_dump.c
===================================================================
--- sr_port/cdbg_dump.c	(revision 6)
+++ sr_port/cdbg_dump.c	(revision 45)
@@ -16,7 +16,7 @@
 
 #include "gtmdbglvl.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mvalconv.h"
 #include "cdbg_dump.h"
 
Index: sr_port/gtm_stat.h
===================================================================
--- sr_port/gtm_stat.h	(revision 6)
+++ sr_port/gtm_stat.h	(revision 45)
@@ -20,7 +20,7 @@
 
 #define MKDIR	mkdir
 
-#define Stat	stat
+#define gtm_Stat	stat
 
 #define MKNOD	mknod
 
Index: sr_port/exfunc.c
===================================================================
--- sr_port/exfunc.c	(revision 6)
+++ sr_port/exfunc.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "mdq.h"
 #include "advancewindow.h"
Index: sr_port/op_indmerge.c
===================================================================
--- sr_port/op_indmerge.c	(revision 6)
+++ sr_port/op_indmerge.c	(revision 45)
@@ -28,10 +28,10 @@
 #include "sbs_blk.h"
 #include "toktyp.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "merge_def.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "cache.h"
 #include "stringpool.h"
Index: sr_port/op_write.c
===================================================================
--- sr_port/op_write.c	(revision 6)
+++ sr_port/op_write.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "io.h"
 #include "iosp.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "ebc_xlat.h"
 
 GBLREF io_pair		io_curr_device;
Index: sr_port/op_fnzdate.c
===================================================================
--- sr_port/op_fnzdate.c	(revision 6)
+++ sr_port/op_fnzdate.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 #define ZDATE_MAX_LEN	64
Index: sr_port/f_zsearch.c
===================================================================
--- sr_port/f_zsearch.c	(revision 6)
+++ sr_port/f_zsearch.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "advancewindow.h"
 
Index: sr_port/io_init_ch.c
===================================================================
--- sr_port/io_init_ch.c	(revision 6)
+++ sr_port/io_init_ch.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "iottdef.h"
 #include "error.h"
 #include "setterm.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF io_log_name	*io_root_log_name;
 
Index: sr_port/dse_shift.c
===================================================================
--- sr_port/dse_shift.c	(revision 6)
+++ sr_port/dse_shift.c	(revision 45)
@@ -27,7 +27,7 @@
 #include "cli.h"
 #include "filestruct.h"
 #include "jnl.h"
-#include "util.h"
+#include "gtm_util.h"
 
 /* Include prototypes */
 #include "t_qread.h"
Index: sr_port/trans_code.c
===================================================================
--- sr_port/trans_code.c	(revision 6)
+++ sr_port/trans_code.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "mv_stent.h"
 #include "stack_frame.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mprof.h"
 #include "golevel.h"
 #include "mvalconv.h"
Index: sr_port/expritem.c
===================================================================
--- sr_port/expritem.c	(revision 6)
+++ sr_port/expritem.c	(revision 45)
@@ -13,7 +13,7 @@
 
 #include "compiler.h"
 #include "svnames.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "nametabtyp.h"
 #include "funsvn.h"
@@ -212,6 +212,15 @@
 	,{5, "ZLKID"}
 	,{2, "ZM"}, {8, "ZMESSAGE"}
 	,{6, "ZPARSE"}
+#ifdef WANT_GTM_PERL
+        ,{8, "ZPERLCAL*"} /* ZPERLCALL    - call a perl function */
+        ,{8, "ZPERLEVA*"} /* ZPERLEVAL    - eval a perl expression */
+        ,{8, "ZPERLICO*"} /* ZPERLICONV   - get/set iconv options */
+        ,{8, "ZPERLMET*"} /* ZPERLMETHOD  - call a perl method */
+        ,{8, "ZPERLSCA*"} /* ZPERLSCALAR  - scalar representation of SVRV */
+        ,{8, "ZPERLTYP*"} /* ZPERLTYPE    - type of SVRV */
+        ,{8, "ZPERLUNR*"} /* ZPERLUNREF   - free a perl reference */
+#endif
 	,{4, "ZPID"}
 	,{2, "ZP"}, {8, "ZPREVIOU*"}
 	,{5, "ZPRIV"}, {8, "ZPRIVILE*"}
@@ -223,10 +232,18 @@
 };
 /* Index into fun_names array where entries that start with each letter of
    the alphabet begin. */
+
+#ifdef WANT_GTM_PERL
+#define ADD_PERL_ZFUNC_CNT(x) ((x) + 7)
+#else
+#define ADD_PERL_ZFUNC_CNT(x) (x)
+#endif
+
+
 LITDEF unsigned char fun_index[27] = {
 	 0,  2,  2,  4,  6,  8, 12, 14, 14,	/* a b c d e f g h i */
 	14, 16, 16, 18, 18, 22, 24, 26, 32,	/* j k l m n o p q r */
-	36, 40, 44, 44, 45, 45, 45, 45, 82	/* s t u v w x y z ~ */
+	36, 40, 44, 44, 45, 45, 45, 45, ADD_PERL_ZFUNC_CNT(82)	/* s t u v w x y z ~ */
 };
 /* Each entry corresponds to an entry in fun_names */
 LITDEF fun_data_type fun_data[] =
@@ -281,6 +298,15 @@
 	,{ OC_FNZLKID, VMS_OS}
 	,{ OC_FNZM, ALL_SYS }, { OC_FNZM, ALL_SYS }
 	,{ OC_FNZPARSE, ALL_SYS }
+#ifdef WANT_GTM_PERL
+        ,{ OC_FNZPERLCALL, ALL_SYS }
+        ,{ OC_FNZPERLEVAL, ALL_SYS }
+        ,{ OC_FNZPERLICONV, ALL_SYS }
+        ,{ OC_FNZPERLMETH, ALL_SYS }
+        ,{ OC_FNZPERLSCALAR, ALL_SYS }
+        ,{ OC_FNZPERLTYPE, ALL_SYS }
+        ,{ OC_FNZPERLUNREF, ALL_SYS }
+#endif
 	,{ OC_FNZPID, VMS_OS }
 	,{ OC_FNZPREVIOUS, ALL_SYS }, { OC_FNZPREVIOUS, ALL_SYS }
 	,{ OC_FNZPRIV, VMS_OS }, { OC_FNZPRIV, VMS_OS }
@@ -303,7 +329,11 @@
 	, f_one_mval, f_two_mval, f_fnzbitset, f_fnzbitstr, f_two_mval
 	, f_zcall, f_zcall, f_zdate, f_zdate, f_zechar
 	, f_two_mstrs, f_two_mstrs, f_two_mstrs, f_mint_mstr, f_two_mstrs, f_zgetsyi
-	, f_zjobexam, f_mint, f_mint, f_mint, f_zparse, f_mint, f_zprevious, f_zprevious, f_mstr, f_mstr
+	, f_zjobexam, f_mint, f_mint, f_mint, f_zparse
+#ifdef WANT_GTM_PERL
+        , f_perlva, f_zperleval, f_zperleval, f_perlva, f_zperleval, f_zperleval, f_zperleval
+#endif
+        , f_mint, f_zprevious, f_zprevious, f_mstr, f_mstr
 	, f_zqgblmod, f_zqgblmod, f_zsearch, f_mstr, f_zsigproc, f_ztrnlnm
 };
 
Index: sr_port/m_break.c
===================================================================
--- sr_port/m_break.c	(revision 6)
+++ sr_port/m_break.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/print_target.c
===================================================================
--- sr_port/print_target.c	(revision 6)
+++ sr_port/print_target.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "gdsbt.h"
 #include "gdsfhead.h"
 #include "gtmctype.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gvsub2str.h"
 #include "print_target.h"
 
Index: sr_port/op_rdone.c
===================================================================
--- sr_port/op_rdone.c	(revision 6)
+++ sr_port/op_rdone.c	(revision 45)
@@ -15,7 +15,7 @@
 #include "iosp.h"
 #include "iotimer.h"
 #include "stringpool.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 #include "ebc_xlat.h"
 
Index: sr_port/op_open_dummy.c
===================================================================
--- sr_port/op_open_dummy.c	(revision 6)
+++ sr_port/op_open_dummy.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 int op_open_dummy(mval *v, mval *p, int t, mval *mspace){
 	return 0;
Index: sr_port/compile_pattern.c
===================================================================
--- sr_port/compile_pattern.c	(revision 6)
+++ sr_port/compile_pattern.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "gtm_string.h"
 #include "compiler.h"
 #include "stringpool.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "advancewindow.h"
 #include "compile_pattern.h"
Index: sr_port/m_hcmd.c
===================================================================
--- sr_port/m_hcmd.c	(revision 6)
+++ sr_port/m_hcmd.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd.h"
 
Index: sr_port/op_rterror.c
===================================================================
--- sr_port/op_rterror.c	(revision 6)
+++ sr_port/op_rterror.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 
 void op_rterror(int4 sig, boolean_t subrtn)
 {
Index: sr_port/op_gvqueryget.c
===================================================================
--- sr_port/op_gvqueryget.c	(revision 6)
+++ sr_port/op_gvqueryget.c	(revision 45)
@@ -18,7 +18,7 @@
 #include "fileinfo.h"
 #include "gdsbt.h"
 #include "gdsfhead.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "sgnl.h"
 #include "gvcst_queryget.h"
 #include "gvcmx.h"
Index: sr_port/f_query.c
===================================================================
--- sr_port/f_query.c	(revision 6)
+++ sr_port/f_query.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mdq.h"
Index: sr_port/f_reverse.c
===================================================================
--- sr_port/f_reverse.c	(revision 6)
+++ sr_port/f_reverse.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-/*  #include "opcode.h"  */
+/*  #include "gtm_opcode.h"  */
 #include "toktyp.h"
 
 GBLREF char window_token;
Index: sr_port/f_select.c
===================================================================
--- sr_port/f_select.c	(revision 6)
+++ sr_port/f_select.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "mdq.h"
 #include "mmemory.h"
Index: sr_port/mur_jnl_ext.c
===================================================================
--- sr_port/mur_jnl_ext.c	(revision 6)
+++ sr_port/mur_jnl_ext.c	(revision 45)
@@ -33,7 +33,7 @@
 #include "mlkdef.h"
 #include "zshow.h"
 #include "mur_jnl_ext.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "real_len.h"		/* for real_len() prototype */
 
 GBLREF	gv_key		*gv_currkey;
Index: sr_port/lastchance3.c
===================================================================
--- sr_port/lastchance3.c	(revision 6)
+++ sr_port/lastchance3.c	(revision 45)
@@ -14,7 +14,7 @@
 
 #include "error.h"
 #include "io.h"
-#include "util.h"
+#include "gtm_util.h"
 
 GBLREF	int4		exi_condition;
 GBLREF	boolean_t	created_core;
Index: sr_port/lref.c
===================================================================
--- sr_port/lref.c	(revision 6)
+++ sr_port/lref.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "cmd_qlf.h"
 #include "advancewindow.h"
Index: sr_port/m_hang.c
===================================================================
--- sr_port/m_hang.c	(revision 6)
+++ sr_port/m_hang.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "cmd.h"
Index: sr_port/m_zwrite.c
===================================================================
--- sr_port/m_zwrite.c	(revision 6)
+++ sr_port/m_zwrite.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "gdsroot.h"
 #include "gtm_facility.h"
Index: sr_port/lke_getcli.c
===================================================================
--- sr_port/lke_getcli.c	(revision 6)
+++ sr_port/lke_getcli.c	(revision 45)
@@ -17,7 +17,7 @@
 #include "mdef.h"
 #include "cli.h"
 #include "lke_getcli.h"
-#include "util.h"
+#include "gtm_util.h"
 /*
  * ------------------------------------------------------
  * Get command line parameters
Index: sr_port/op_break.c
===================================================================
--- sr_port/op_break.c	(revision 6)
+++ sr_port/op_break.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "rtnhdr.h"
 #include "stack_frame.h"
 #include "break.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "dm_setup.h"
 
 GBLREF io_pair	io_curr_device;
Index: sr_port/op_indrzshow.c
===================================================================
--- sr_port/op_indrzshow.c	(revision 6)
+++ sr_port/op_indrzshow.c	(revision 45)
@@ -11,13 +11,13 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mlkdef.h"
 #include "zshow.h"
 #include "cache.h"
-#include "op.h"
+#include "gtm_op.h"
 
 GBLREF mval **ind_source_sp, **ind_source_top;
 GBLREF char window_token;
Index: sr_port/gtm_opcode.h
===================================================================
--- sr_port/gtm_opcode.h	(revision 0)
+++ sr_port/gtm_opcode.h	(revision 45)
@@ -0,0 +1,20 @@
+/****************************************************************
+ *								*
+ *	Copyright 2001 Sanchez Computer Associates, Inc.	*
+ *								*
+ *	This source code contains the intellectual property	*
+ *	of its copyright holder(s), and is made available	*
+ *	under a license.  If you do not know the terms of	*
+ *	the license, please stop and do not read further.	*
+ *								*
+ ****************************************************************/
+
+#define OPCODE_DEF(A,B) A,
+
+enum opcode_enum
+{
+#include "opcode_def.h"
+	OPCODE_COUNT
+};
+
+#undef OPCODE_DEF
Index: sr_port/flush_jmp.c
===================================================================
--- sr_port/flush_jmp.c	(revision 6)
+++ sr_port/flush_jmp.c	(revision 45)
@@ -20,7 +20,7 @@
 #include "objlabel.h"
 #include "cache.h"
 #include "stack_frame.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "unwind_nocounts.h"
 #include "flush_jmp.h"
 
Index: sr_port/op_fnzbitlen.c
===================================================================
--- sr_port/op_fnzbitlen.c	(revision 6)
+++ sr_port/op_fnzbitlen.c	(revision 45)
@@ -10,7 +10,7 @@
  ****************************************************************/
 
 #include "mdef.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "mvalconv.h"
 
 void op_fnzbitlen(mval *dst, mval *bitstr)
Index: sr_port/op.h
===================================================================
--- sr_port/op.h	(revision 6)
+++ sr_port/op.h	(revision 45)
@@ -1,223 +0,0 @@
-/****************************************************************
- *								*
- *	Copyright 2001, 2004 Sanchez Computer Associates, Inc.	*
- *								*
- *	This source code contains the intellectual property	*
- *	of its copyright holder(s), and is made available	*
- *	under a license.  If you do not know the terms of	*
- *	the license, please stop and do not read further.	*
- *								*
- ****************************************************************/
-
-#ifndef OP_INCLUDED
-#define OP_INCLUDED
-
-boolean_t op_gvqueryget(mval *key, mval *val);
-int op_dt_get(void);
-void op_fnzdate(mval *src, mval *fmt, mval *mo_str, mval *day_str, mval *dst);
-int op_fnzsearch(mval *file, mint indx, mval *ret);		/***type int added***/
-bool op_gvget(mval *v);
-int op_incrlock(int timeout);
-int op_lock(int timeout);
-int op_open(mval *device, mval *devparms, int timeout, mval *mspace);
-int op_rdone(mval *v, int4 timeout);
-int op_readfl(mval *v, int4 length, int4 timeout);
-int op_read(mval *v, int4 timeout);
-int op_zallocate(int timeout);		/***type int added***/
-int op_fngvget1(mval *v);
-int op_zalloc2(int4 timeout, uint4 auxown);
-int op_zallocate(int timeout);
-void op_unwind(void);
-void op_break(void);
-void op_lvpatwrite();
-void op_killall(void);
-void op_gvzwithdraw(void);
-void op_gvkill(void);
-void op_cat();
-void op_close(mval *v, mval *p);
-void op_commarg(mval *v, unsigned char argcode);
-void op_decrlock(int4 timeout);
-void op_dmoe(void);
-void op_div(mval *u, mval *v, mval *q);
-void op_exp(mval *u, mval* v, mval *p);
-int4 op_fnfind(mval *src, mval *del, mint first, mval *dst);
-void op_fnfnumber(mval *src,mval *fmt,mval *dst);
-void op_fnj2(mval *src,int len,mval *dst);
-void op_fnj3(mval *src,int width,int fract,mval *dst);
-void op_fnlvname(mval *src, mval *dst);
-void op_fnlvnameo2(mval *src,mval *dst,mval *direct);
-void op_fnfgncal();
-#ifdef __sun
-int op_fnfgncal_rpc();	/* typ to keep the compiler happy as set into xfer_table, which is int */
-#endif
-void op_fngvget(mval *v, mval *def);
-void op_fngetjpi(mint jpid, mval *kwd, mval *ret);
-void op_fnlvprvname(mval *src, mval *dst);
-void op_fnname();
-void op_fnqlength(mval *name, mval *subscripts);
-void op_fnqsubscript(mval *name, int seq, mval *subscript);
-void op_fnrandom(int4 interval, mval *ret);
-void op_fnreverse(mval *src, mval *dst);
-void op_fnstack1(int level, mval *result);
-void op_fnstack2(int level, mval *info, mval *result);
-void op_fnview();
-void op_fnpiece(mval *src, mval *del, int first, int last, mval *dst, boolean_t srcisliteral);
-void op_fnquery();
-void op_fntext(mval *label, int int_exp, mval *rtn, mval *ret);
-void op_fnzbitand(mval *dst, mval *bitstr1, mval *bitstr2);
-void op_fnzbitcoun(mval *dst, mval *bitstr);
-void op_fnzbitget(mval *dst, mval *bitstr, int pos);
-void op_fnzbitlen(mval *dst, mval *bitstr);
-void op_fnzbitor(mval *dst, mval *bitstr1, mval *bitstr2);
-void op_fnzbitstr(mval *bitstr, int size, int truthval);
-void op_fnzjobexam(mval *prelimSpec, mval *finalSpec);
-void op_fnzsigproc(int processid, int signum, mval *retcode);
-void op_fnzlkid(mint boolex, mval *retval);
-void op_fnzqgblmod(mval *v);
-void op_fnztrnlnm(mval *name,mval *table,int4 ind,mval *mode,mval *case_blind,mval *item,mval *ret);
-void op_fnzcall();
-void op_fnzpid(mint boolexpr,mval *ret);
-void op_fnzpriv(mval *prv,mval *ret);
-void op_fngetsyi(mval *keyword,mval *node,mval *ret);
-void op_gvdata(mval *v);
-void op_gvextnam();
-void op_gvnaked();
-void op_gvname();
-void op_gvnext(mval *v);
-void op_gvorder(mval *v);
-void op_gvo2(mval *dst,mval *direct);
-void op_gvput(mval *var);
-void op_gvquery(mval *v);
-void op_gvrectarg(mval *v);
-void op_halt(void);
-void op_hang(mval *num);
-void op_hardret(void);
-void op_horolog(mval *s);
-int op_incrlock(int timeout);
-void op_iocontrol();
-void op_indrzshow(mval *s1,mval *s2);
-void op_iretmval(mval *v);
-int op_job();
-void op_killall(void);
-void op_lkinit(void);
-void op_lkname();
-void op_mul(mval *u, mval *v, mval *p);
-void op_newvar(uint4 arg1);
-void op_newintrinsic(int intrtype);
-void op_oldvar(void);
-void op_population(mval *arg1, mval *arg2, mval *dst);
-void op_rterror(int4 sig, boolean_t subrtn);
-void op_setp1(mval *src, int delim, mval *expr, int ind, mval *dst);
-void op_setpiece(mval *src, mval *del, mval *expr, int4 first, int4 last, mval *dst);
-void op_fnzsetprv(mval *prv,mval *ret);
-void op_fnztrnlnm(mval *name,mval *table,int4 ind,mval *mode,mval *case_blind,mval *item,mval *ret);
-void op_setzbrk(mval *rtn, mval *lab, int offset, mval *act, int cnt);
-void op_sqlinddo(mstr *m_init_rtn);
-void op_sub(mval *u, mval *v, mval *s);
-void op_svget(int varnum, mval *v);
-void op_svput(int varnum, mval *v);
-void op_tcommit(void);
-void op_trollback(int rb_levels);
-void op_tstart();
-void op_unlock(void);
-void op_use(mval *v, mval *p);
-void op_view();
-void op_write(mval *v);
-void op_wteol(int4 n);
-void op_wtff(void);
-void op_wtone(unsigned char c);
-void op_wttab(mint x);
-void op_xkill();
-void op_xnew();
-void op_zattach(mval *);
-void op_zcompile(mval *v);
-void op_zcont(void);
-void op_zdealloc2(int4 timeout, uint4 auxown);
-void op_zdeallocate(int4 timeout);
-void op_zedit(mval *v, mval *p);
-void op_zhelp_xfr(mval *subject, mval *lib);
-void op_zlink(mval *v, mval *quals);
-void op_zmess();
-void op_zprevious(mval *v);
-void op_zprint(mval *rtn,mval *start_label,int start_int_exp,mval *end_label,int end_int_exp);
-void op_zst_break(void);
-void op_zstep(uint4 code, mval *action);
-void op_zsystem(mval *v);
-void op_ztcommit(int4 n);
-void op_ztstart(void);
-#ifdef UNIX
-int op_fetchintrrpt(), op_startintrrpt(), op_forintrrpt();
-#elif defined(VMS)
-void op_fetchintrrpt(), op_startintrrpt(), op_forintrrpt();
-#else
-#error unsupported platform
-#endif
-int op_forchk1(), op_forloop();
-int op_zstepfetch(), op_zstepstart(), op_zstzbfetch(), op_zstzbstart();
-int op_mproflinestart(), op_mproflinefetch(), op_mprofforloop();
-int op_linefetch(), op_linestart(), op_zbfetch(), op_zbstart(), op_ret(), op_retarg();
-int opp_ret();
-int op_zst_fet_over(), op_zst_st_over(), op_zstzb_st_over(), opp_zstepret(), opp_zstepretarg();
-int op_zstzb_fet_over(), opp_zst_over_ret(), opp_zst_over_retarg();
-#ifndef __MVS__
-void fetch();
-#else
-void gtm_fetch();
-#endif
-void add_mvals(mval *u, mval *v, int subtraction, mval *result);
-void op_bindparm();
-void op_add(mval *u, mval *v, mval *s);
-void op_sub(mval *u, mval *v, mval *s);
-void op_cvtparm(int iocode, mval *src, mval *dst);
-void op_dmode(void);
-void op_dt_false(void);
-void op_dt_store(int truth_value);
-void op_dt_true(void);
-void op_fnascii(int4 num, mval *in, mval *out);
-void op_fnchar();
-void op_fnget2(mval *dst, mval *src, mval *defval);
-void op_fngetdvi(mval *device, mval *keyword, mval *ret);
-void op_fngetlki(mval *lkid_mval, mval *keyword, mval *ret);
-int op_fngvget2(mval *res, mval *val, mval *optional);
-void op_fnp1(mval *src, int del, int trgpcidx, mval *dst, boolean_t srcisliteral);
-#ifdef DEBUG
-void print_fnpc_stats(void);
-#endif
-void op_fntranslate(mval *src,mval *in_str,mval *out_str,mval *dst);
-void op_fnzbitfind(mval *dst, mval *bitstr, int truthval, int pos);
-void op_fnzbitnot(mval *dst,mval *bitstr);
-void op_fnzbitset(mval *dst, mval *bitstr, int pos, int truthval);
-void op_fnzbitxor(mval *dst, mval *bitstr1, mval *bitstr2);
-void op_fnzfile(mval *name,mval *key,mval *ret);
-void op_fnzm(mint x,mval *v);
-void op_fnzparse(mval *file, mval *field, mval *def1, mval *def2, mval *type, mval *ret);
-void op_fnzsqlexpr(mval *value, mval *target);
-void op_fnzsqlfield(int findex, mval *target);
-void op_gvsavtarg(mval *v);
-void op_gvzwrite();
-void op_idiv(mval *u, mval *v, mval *q);
-void op_igetsrc(mval *v);
-int op_lock2(int4 timeout, unsigned char laflag);
-void op_inddevparms(mval *devpsrc, int4 ok_iop_parms, mval *devpiopl);
-void op_indfnname(mval *dst, mval *target, int value);
-void op_indfun(mval *v, mint argcode, mval *dst);
-void op_indget(mval *dst, mval *target, mval *value);
-void op_indglvn(mval *v,mval *dst);
-void op_indlvadr(mval *target);
-void op_indlvarg(mval *v,mval *dst);
-void op_indlvnamadr(mval *target);
-void op_indmerge(mval *glvn_mv, mval *arg1_or_arg2);
-void op_indname();
-void op_indpat(mval *v, mval *dst);
-void op_indo2(mval *dst, mval *target, mval *value);
-void op_indset(mval *target, mval *value);
-void op_indtext(mval *lab, mint offset, mval *rtn, mval *dst);
-void op_lvzwrite();
-void op_nullexp(mval *v);
-int op_open_dummy(mval *v, mval *p, int t, mval *mspace);
-void op_setextract(mval *src, mval *expr, int schar, int echar, mval *dst);
-void op_trestart(int newlevel);
-void op_zst_over(void);
-void op_zstepret(void);
-
-#endif
Index: sr_port/util.h
===================================================================
--- sr_port/util.h	(revision 6)
+++ sr_port/util.h	(revision 45)
@@ -1,60 +0,0 @@
-/****************************************************************
- *								*
- *	Copyright 2001, 2002 Sanchez Computer Associates, Inc.	*
- *								*
- *	This source code contains the intellectual property	*
- *	of its copyright holder(s), and is made available	*
- *	under a license.  If you do not know the terms of	*
- *	the license, please stop and do not read further.	*
- *								*
- ****************************************************************/
-
-#ifndef UTIL_included
-#define UTIL_included
-
-boolean_t util_is_log_open(void);
-
-#ifdef VMS
-#include <descrip.h>
-
-/* While the maximum for OPER_LOG_SIZE is 1906 (found from experimentation), we
-   set it's maximum to 1904 being the largest 4 byte aligned size we can use. This
-   4 byte aligned size is necessary to make the header length calculation done as
-   sizeof(oper) - sizeof(oper.text) work correctly. If a size is used that is not
-   4 byte aligned, this calculation will incorrectly contain the compiler pad chars
-   causing garbage at the end of operator log lines. SE 9/2001
-*/
-#define	OPER_LOG_SIZE 1904
-
-typedef struct
-{
-	unsigned int	req_code : 08;
-	unsigned int	target   : 24;
-	uint4		mess_code;
-	char		text[OPER_LOG_SIZE];
-} oper_msg_struct;
-
-void util_in_open(struct dsc$descriptor_s *file_prompt);
-void util_out_open(struct dsc$descriptor_s *file_prompt);
-void util_log_open(char *filename, uint4 len);
-#else
-void util_in_open(void *);
-#endif
-
-#define OUT_BUFF_SIZE	2048
-#define	NOFLUSH		0
-#define FLUSH		1
-#define RESET		2
-#define OPER		4
-#define SPRINT		5
-#define HEX8		8
-#define HEX16		16
-
-void util_cm_print();
-void util_exit_handler(void);
-void util_out_close(void);
-void util_out_print();
-void util_out_send_oper(char *addr, unsigned int len);
-void util_out_write(unsigned char *addr, unsigned int len);
-
-#endif /* UTIL_included */
Index: sr_port/opcode.h
===================================================================
--- sr_port/opcode.h	(revision 6)
+++ sr_port/opcode.h	(revision 45)
@@ -1,20 +0,0 @@
-/****************************************************************
- *								*
- *	Copyright 2001 Sanchez Computer Associates, Inc.	*
- *								*
- *	This source code contains the intellectual property	*
- *	of its copyright holder(s), and is made available	*
- *	under a license.  If you do not know the terms of	*
- *	the license, please stop and do not read further.	*
- *								*
- ****************************************************************/
-
-#define OPCODE_DEF(A,B) A,
-
-enum opcode_enum
-{
-#include "opcode_def.h"
-	OPCODE_COUNT
-};
-
-#undef OPCODE_DEF
Index: sr_unix_nsb/m_do.c
===================================================================
--- sr_unix_nsb/m_do.c	(revision 6)
+++ sr_unix_nsb/m_do.c	(revision 45)
@@ -12,7 +12,7 @@
 #include "mdef.h"
 #include "mdq.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "indir_enum.h"
 #include "toktyp.h"
 #include "mmemory.h"
Index: sr_unix_nsb/shrink_jmps.c
===================================================================
--- sr_unix_nsb/shrink_jmps.c	(revision 6)
+++ sr_unix_nsb/shrink_jmps.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "mdq.h"
 #include "cgp.h"
 #include "emit_code.h"
Index: sr_unix_nsb/exfunc.c
===================================================================
--- sr_unix_nsb/exfunc.c	(revision 6)
+++ sr_unix_nsb/exfunc.c	(revision 45)
@@ -11,7 +11,7 @@
 
 #include "mdef.h"
 #include "compiler.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "toktyp.h"
 #include "mdq.h"
 #include "advancewindow.h"
Index: sr_unix_nsb/resolve_ref.c
===================================================================
--- sr_unix_nsb/resolve_ref.c	(revision 6)
+++ sr_unix_nsb/resolve_ref.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "compiler.h"
 #include "mdq.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "cmd_qlf.h"
 #include "mmemory.h"
 #include "resolve_lab.h"
Index: sr_unix_nsb/ttt.c
===================================================================
--- sr_unix_nsb/ttt.c	(revision 6)
+++ sr_unix_nsb/ttt.c	(revision 45)
@@ -1,569 +0,0 @@
-/****************************************************************
- *								*
- *	Copyright 2001, 2004 Sanchez Computer Associates, Inc.	*
- *								*
- *	This source code contains the intellectual property	*
- *	of its copyright holder(s), and is made available	*
- *	under a license.  If you do not know the terms of	*
- *	the license, please stop and do not read further.	*
- *								*
- ****************************************************************/
-
-#include "mdef.h"
-#include "vxi.h"
-#include "vxt.h"
-#include "xfer_enum.h"
-LITDEF short ttt[3461] = {
-
-/*    0 */	0,0,0,0,268,2939,2531,483,
-/*    8 */	1931,2516,2555,1636,346,2889,1745,2656,
-/*   16 */	1810,1801,3122,3156,1786,1849,1795,1840,
-/*   24 */	1819,1768,672,687,699,711,753,771,
-/*   32 */	786,815,852,867,885,2641,956,989,
-/*   40 */	1025,1091,1142,1370,1385,1400,1430,1469,
-/*   48 */	1481,1505,1532,1553,1568,2954,2976,0,
-/*   56 */	0,0,0,498,0,439,0,1622,
-/*   64 */	0,2627,0,0,0,0,0,0,
-/*   72 */	300,358,1909,1915,2323,2350,2359,2456,
-/*   80 */	2394,2385,2471,3028,3112,2576,0,2606,
-/*   88 */	2722,2685,2670,2700,2903,2821,3034,3046,
-/*   96 */	3061,3085,3094,3079,3070,2854,3152,3165,
-/*  104 */	3187,3212,3224,3245,3269,3329,0,0,
-/*  112 */	2504,1891,2769,3410,560,3413,614,2365,
-/*  120 */	2735,453,459,3416,2007,2076,1981,406,
-/*  128 */	2017,2096,1777,2039,2106,3419,1876,1867,
-/*  136 */	3423,1160,3424,296,292,2845,370,3428,
-/*  144 */	3431,3434,2592,3437,3440,3443,3446,3449,
-/*  152 */	3452,2925,0,2480,2163,2140,1349,2131,
-/*  160 */	1927,1759,2431,1654,639,2421,0,0,
-/*  168 */	1946,3103,3131,1337,3055,2029,1650,468,
-/*  176 */	3236,1517,1858,1076,2147,283,2726,537,
-/*  184 */	592,521,570,3200,1004,3180,2569,1885,
-/*  192 */	2495,2583,553,899,2435,3455,2086,3284,
-/*  200 */	3299,3314,430,2450,2718,1595,3350,3341,
-/*  208 */	1178,2917,512,1415,1457,2051,3458,2988,
-/*  216 */	2122,648,729,2752,3143,3012,2998,3005,
-/*  224 */	2994,624,800,1994,938,1968,926,2546,
-/*  232 */	1828,911,971,2063,1307,1250,1235,1289,
-/*  240 */	1205,1217,1262,1190,1274,1322,0,2875,
-/*  248 */	0,827,837,2800,1544,2779,1955,3386,
-/*  256 */	3356,3362,3374,3396,1115,1127,1049,1061,
-/*  264 */	1103,2966,1445,1580,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,
-/*  272 */	VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,3,
-/*  280 */	VXT_XFER,4 * (short int) xf_add,VXT_END,
-/*  283 */	VXT_IREPL,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_bindparm,
-/*  291 */	VXT_END,
-/*  292 */	VXI_INCL,VXT_VAL,1,VXT_END,
-/*  296 */	VXI_CLRL,VXT_VAL,0,VXT_END,
-/*  300 */	VXI_JSB,VXT_XFER,4 * (short int) xf_break,VXT_END,
-/*  304 */	VXI_JSB,VXT_XFER,4 * (short int) xf_callb,VXI_BRB,VXT_JMP,1,VXT_END,
-/*  311 */	VXI_JSB,VXT_XFER,4 * (short int) xf_calll,VXI_JMP,VXT_JMP,1,VXT_END,
-/*  318 */	VXI_JSB,VXT_XFER,4 * (short int) xf_callw,VXI_BRW,VXT_JMP,1,VXT_END,
-/*  325 */	VXI_JSB,VXT_XFER,4 * (short int) xf_callspb,VXI_BRB,VXT_JMP,1,VXT_END,
-/*  332 */	VXI_JSB,VXT_XFER,4 * (short int) xf_callspl,VXI_JMP,VXT_JMP,1,VXT_END,
-/*  339 */	VXI_JSB,VXT_XFER,4 * (short int) xf_callspw,VXI_BRW,VXT_JMP,1,VXT_END,
-/*  346 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/*  354 */	1,VXT_XFER,4 * (short int) xf_cat,VXT_END,
-/*  358 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  366 */	2,VXT_XFER,4 * (short int) xf_close,VXT_END,
-/*  370 */	VXI_BICB2,VXT_LIT,1,VXT_REG,0x5A,VXI_JSB,VXT_XFER,4 * (short int) xf_dt_false,
-/*  378 */	VXT_END,
-/*  379 */	VXI_TSTL,VXT_VAL,1,VXT_END,
-/*  383 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_mval2bool,
-/*  391 */	VXT_END,
-/*  392 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_mval2mint,
-/*  400 */	VXI_MOVL,VXT_REG,0x50,VXT_VAL,0,VXT_END,
-/*  406 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/*  414 */	4 * (short int) xf_commarg,VXT_END,
-/*  416 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x50,VXI_MOVL,VXT_VAL,1,
-/*  424 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_mint2mval,VXT_END,
-/*  430 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_mval2num,
-/*  438 */	VXT_END,
-/*  439 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/*  447 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_contain,VXT_END,
-/*  453 */	VXI_MOVL,VXT_REG,0x6C,VXT_ADDR,0,VXT_END,
-/*  459 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_currtn,
-/*  467 */	VXT_END,
-/*  468 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/*  476 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_cvtparm,VXT_END,
-/*  483 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  491 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_div,VXT_END,
-/*  498 */	VXI_MOVAB,VXT_VAL,2,VXT_REG,0x51,VXI_MOVAB,VXT_VAL,1,
-/*  506 */	VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_equ,VXT_END,
-/*  512 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_equnul,
-/*  520 */	VXT_END,
-/*  521 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/*  529 */	2,VXI_PUSHL,VXT_LIT,0,VXI_JSB,VXT_XFER,4 * (short int) xf_exfun,VXT_END,
-/*  537 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/*  545 */	2,VXI_PUSHAB,VXT_VAL,0,VXI_JSB,VXT_XFER,4 * (short int) xf_exfun,VXT_END,
-/*  553 */	VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_exfunret,VXT_END,
-/*  560 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/*  568 */	4 * (short int) xf_extcall,VXT_END,
-/*  570 */	VXT_IREPAB,VXT_VAL,5,VXI_PUSHL,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/*  578 */	3,VXI_PUSHL,VXT_LIT,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/*  586 */	VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_extexfun,VXT_END,
-/*  592 */	VXT_IREPAB,VXT_VAL,5,VXI_PUSHL,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/*  600 */	3,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/*  608 */	VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_extexfun,VXT_END,
-/*  614 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/*  622 */	4 * (short int) xf_extjmp,VXT_END,
-/*  624 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  632 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_exp,VXT_END,
-/*  639 */	VXT_IREPL,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_fetch,
-/*  647 */	VXT_END,
-/*  648 */	VXT_IREPAB,VXT_VAL,6,VXI_PUSHL,VXT_VAL,5,VXI_PUSHL,VXT_VAL,
-/*  656 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,
-/*  664 */	VXT_LIT,0,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_fnfgncal,VXT_END,
-/*  672 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHL,VXT_VAL,
-/*  680 */	2,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnascii,VXT_END,
-/*  687 */	VXT_IREPL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/*  695 */	1,VXT_XFER,4 * (short int) xf_fnchar,VXT_END,
-/*  699 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  707 */	2,VXT_XFER,4 * (short int) xf_fndata,VXT_END,
-/*  711 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHL,VXT_VAL,
-/*  719 */	2,VXI_PUSHL,VXT_VAL,3,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/*  727 */	4 * (short int) xf_fnextract,VXT_END,
-/*  729 */	VXT_IREPAB,VXT_VAL,6,VXI_PUSHL,VXT_VAL,5,VXI_PUSHL,VXT_VAL,
-/*  737 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/*  745 */	VXT_VAL,0,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_fnfgncal,VXT_END,
-/*  753 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/*  761 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/*  769 */	4 * (short int) xf_fnfind,VXT_END,
-/*  771 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  779 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnfnumber,VXT_END,
-/*  786 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_MOVAB,VXT_VAL,0,
-/*  794 */	VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_fnget,VXT_END,
-/*  800 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/*  808 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnget2,VXT_END,
-/*  815 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/*  823 */	2,VXT_XFER,4 * (short int) xf_fngvget,VXT_END,
-/*  827 */	VXI_PUSHAB,VXT_VAL,0,VXI_JSB,VXT_XFER,4 * (short int) xf_fngvget1,VXI_TSTL,VXT_REG,
-/*  835 */	0x50,VXT_END,
-/*  837 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/*  845 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngvget2,VXT_END,
-/*  852 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  860 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnj2,VXT_END,
-/*  867 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/*  875 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/*  883 */	4 * (short int) xf_fnj3,VXT_END,
-/*  885 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,1,
-/*  893 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_fnlength,VXT_END,
-/*  899 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  907 */	2,VXT_XFER,4 * (short int) xf_fnlvname,VXT_END,
-/*  911 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,
-/*  919 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnlvnameo2,VXT_END,
-/*  926 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/*  934 */	2,VXT_XFER,4 * (short int) xf_fnlvprvname,VXT_END,
-/*  938 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,1,VXI_PUSHL,VXT_VAL,
-/*  946 */	3,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,2,VXT_XFER,
-/*  954 */	4 * (short int) xf_fnname,VXT_END,
-/*  956 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  964 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnnext,VXT_END,
-/*  971 */	VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,
-/*  979 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/*  987 */	4 * (short int) xf_fno2,VXT_END,
-/*  989 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/*  997 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnorder,VXT_END,
-/* 1004 */	VXI_PUSHL,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,
-/* 1012 */	3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 1020 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_fnp1,VXT_END,
-/* 1025 */	VXI_PUSHL,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,
-/* 1033 */	4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/* 1041 */	VXT_VAL,1,VXI_CALLS,VXT_LIT,6,VXT_XFER,4 * (short int) xf_fnpiece,VXT_END,
-/* 1049 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1057 */	2,VXT_XFER,4 * (short int) xf_fnqlength,VXT_END,
-/* 1061 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1069 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnqsubscript,VXT_END,
-/* 1076 */	VXT_IREPAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1084 */	0,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_fnquery,VXT_END,
-/* 1091 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1099 */	2,VXT_XFER,4 * (short int) xf_fnrandom,VXT_END,
-/* 1103 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1111 */	2,VXT_XFER,4 * (short int) xf_fnreverse,VXT_END,
-/* 1115 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1123 */	2,VXT_XFER,4 * (short int) xf_fnstack1,VXT_END,
-/* 1127 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 1135 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnstack2,VXT_END,
-/* 1142 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 1150 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1158 */	4 * (short int) xf_fntext,VXT_END,
-/* 1160 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/* 1168 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1176 */	4 * (short int) xf_fntranslate,VXT_END,
-/* 1178 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/* 1186 */	1,VXT_XFER,4 * (short int) xf_fnview,VXT_END,
-/* 1190 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1198 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitand,VXT_END,
-/* 1205 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/* 1213 */	2,VXT_XFER,4 * (short int) xf_fnzbitcoun,VXT_END,
-/* 1217 */	VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1225 */	1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1233 */	4 * (short int) xf_fnzbitfind,VXT_END,
-/* 1235 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1243 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitget,VXT_END,
-/* 1250 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/* 1258 */	2,VXT_XFER,4 * (short int) xf_fnzbitlen,VXT_END,
-/* 1262 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/* 1270 */	2,VXT_XFER,4 * (short int) xf_fnzbitnot,VXT_END,
-/* 1274 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1282 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitor,VXT_END,
-/* 1289 */	VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1297 */	1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,4,VXT_XFER,
-/* 1305 */	4 * (short int) xf_fnzbitset,VXT_END,
-/* 1307 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1315 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitstr,VXT_END,
-/* 1322 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1330 */	0,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzbitxor,VXT_END,
-/* 1337 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/* 1345 */	1,VXT_XFER,4 * (short int) xf_fnzcall,VXT_END,
-/* 1349 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,
-/* 1357 */	3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 1365 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_fnzdate,VXT_END,
-/* 1370 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1378 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzfile,VXT_END,
-/* 1385 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1393 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngetdvi,VXT_END,
-/* 1400 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 1408 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngetjpi,VXT_END,
-/* 1415 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 1423 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngetlki,VXT_END,
-/* 1430 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1438 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fngetsyi,VXT_END,
-/* 1445 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1453 */	2,VXT_XFER,4 * (short int) xf_fnzjobexam,VXT_END,
-/* 1457 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1465 */	2,VXT_XFER,4 * (short int) xf_fnzlkid,VXT_END,
-/* 1469 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1477 */	2,VXT_XFER,4 * (short int) xf_fnzm,VXT_END,
-/* 1481 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,
-/* 1489 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/* 1497 */	VXT_VAL,1,VXI_CALLS,VXT_LIT,6,VXT_XFER,4 * (short int) xf_fnzparse,VXT_END,
-/* 1505 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1513 */	2,VXT_XFER,4 * (short int) xf_fnzpid,VXT_END,
-/* 1517 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1525 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzprevious,VXT_END,
-/* 1532 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1540 */	2,VXT_XFER,4 * (short int) xf_fnzpriv,VXT_END,
-/* 1544 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_fnzqgblmod,
-/* 1552 */	VXT_END,
-/* 1553 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1561 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzsearch,VXT_END,
-/* 1568 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1576 */	2,VXT_XFER,4 * (short int) xf_fnzsetprv,VXT_END,
-/* 1580 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 1588 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_fnzsigproc,VXT_END,
-/* 1595 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,6,VXI_PUSHAB,VXT_VAL,
-/* 1603 */	5,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,
-/* 1611 */	VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,7,
-/* 1619 */	VXT_XFER,4 * (short int) xf_fnztrnlnm,VXT_END,
-/* 1622 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/* 1630 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_follow,VXT_END,
-/* 1636 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,1,
-/* 1644 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_forcenum,VXT_END,
-/* 1650 */	VXI_JSB,VXT_XFER,4 * (short int) xf_forchk1,VXT_END,
-/* 1654 */	VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1662 */	1,VXI_JSB,VXT_XFER,4 * (short int) xf_forinit,VXT_END,
-/* 1667 */	VXI_JSB,VXT_XFER,4 * (short int) xf_forlcldob,VXI_BRB,VXT_JMP,1,VXT_END,
-/* 1674 */	VXI_JSB,VXT_XFER,4 * (short int) xf_forlcldol,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 1681 */	VXI_JSB,VXT_XFER,4 * (short int) xf_forlcldow,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 1688 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_JMP,1,VXI_PUSHAB,VXT_VAL,
-/* 1696 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_JSB,
-/* 1704 */	VXT_XFER,4 * (short int) xf_forloop,VXT_END,
-/* 1707 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_JMP,1,VXI_PUSHAB,VXT_VAL,
-/* 1715 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_JSB,
-/* 1723 */	VXT_XFER,4 * (short int) xf_forloop,VXT_END,
-/* 1726 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_JMP,1,VXI_PUSHAB,VXT_VAL,
-/* 1734 */	4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_JSB,
-/* 1742 */	VXT_XFER,4 * (short int) xf_forloop,VXT_END,
-/* 1745 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_getindx,
-/* 1753 */	VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,VXT_END,
-/* 1759 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_gettruth,
-/* 1767 */	VXT_END,
-/* 1768 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvdata,
-/* 1776 */	VXT_END,
-/* 1777 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_gvextnam,
-/* 1785 */	VXT_END,
-/* 1786 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvget,
-/* 1794 */	VXT_END,
-/* 1795 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_gvkill,VXT_END,
-/* 1801 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_gvnaked,
-/* 1809 */	VXT_END,
-/* 1810 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_gvname,
-/* 1818 */	VXT_END,
-/* 1819 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvnext,
-/* 1827 */	VXT_END,
-/* 1828 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,
-/* 1836 */	2,VXT_XFER,4 * (short int) xf_gvo2,VXT_END,
-/* 1840 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvorder,
-/* 1848 */	VXT_END,
-/* 1849 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvput,
-/* 1857 */	VXT_END,
-/* 1858 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvquery,
-/* 1866 */	VXT_END,
-/* 1867 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvrectarg,
-/* 1875 */	VXT_END,
-/* 1876 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_gvsavtarg,
-/* 1884 */	VXT_END,
-/* 1885 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_gvzwithdraw,VXT_END,
-/* 1891 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_IREPAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/* 1899 */	3,VXI_PUSHL,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,
-/* 1907 */	4 * (short int) xf_gvzwrite,VXT_END,
-/* 1909 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_halt,VXT_END,
-/* 1915 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 1923 */	1,VXT_XFER,4 * (short int) xf_hang,VXT_END,
-/* 1927 */	VXI_JSB,VXT_XFER,4 * (short int) xf_hardret,VXT_END,
-/* 1931 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1939 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_idiv,VXT_END,
-/* 1946 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_igetsrc,
-/* 1954 */	VXT_END,
-/* 1955 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1963 */	1,VXI_JSB,VXT_XFER,4 * (short int) xf_inddevparms,VXT_END,
-/* 1968 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 1976 */	0,VXI_JSB,VXT_XFER,4 * (short int) xf_indfnname,VXT_END,
-/* 1981 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 1989 */	1,VXI_JSB,VXT_XFER,4 * (short int) xf_indfun,VXT_END,
-/* 1994 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2002 */	0,VXI_JSB,VXT_XFER,4 * (short int) xf_indget,VXT_END,
-/* 2007 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2015 */	4 * (short int) xf_indglvn,VXT_END,
-/* 2017 */	VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_indlvadr,VXI_MOVL,VXT_REG,
-/* 2025 */	0x50,VXT_ADDR,0,VXT_END,
-/* 2029 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2037 */	4 * (short int) xf_indlvarg,VXT_END,
-/* 2039 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_VAL,
-/* 2047 */	1,VXT_XFER,4 * (short int) xf_indname,VXT_END,
-/* 2051 */	VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_indlvnamadr,VXI_MOVL,VXT_REG,
-/* 2059 */	0x50,VXT_ADDR,0,VXT_END,
-/* 2063 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2071 */	0,VXI_JSB,VXT_XFER,4 * (short int) xf_indo2,VXT_END,
-/* 2076 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2084 */	4 * (short int) xf_indpat,VXT_END,
-/* 2086 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2094 */	4 * (short int) xf_indrzshow,VXT_END,
-/* 2096 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2104 */	4 * (short int) xf_indset,VXT_END,
-/* 2106 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 2114 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_indtext,VXT_END,
-/* 2122 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_iocontrol,
-/* 2130 */	VXT_END,
-/* 2131 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_iretmvad,
-/* 2139 */	VXT_END,
-/* 2140 */	VXI_PUSHAB,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_iretmval,VXT_END,
-/* 2147 */	VXI_JSB,VXT_XFER,4 * (short int) xf_isformal,VXT_END,
-/* 2151 */	VXI_BRB,VXT_JMP,1,VXT_END,
-/* 2155 */	VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2159 */	VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2163 */	VXI_JMP,VXT_VAL,1,VXT_END,
-/* 2167 */	VXI_BEQL,VXT_JMP,1,VXT_END,
-/* 2171 */	VXI_BNEQ,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2178 */	VXI_BNEQ,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2185 */	VXI_BGEQ,VXT_JMP,1,VXT_END,
-/* 2189 */	VXI_BLSS,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2196 */	VXI_BLSS,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2203 */	VXI_BGTR,VXT_JMP,1,VXT_END,
-/* 2207 */	VXI_BLEQ,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2214 */	VXI_BLEQ,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2221 */	VXI_BLEQ,VXT_JMP,1,VXT_END,
-/* 2225 */	VXI_BGTR,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2232 */	VXI_BGTR,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2239 */	VXI_BLSS,VXT_JMP,1,VXT_END,
-/* 2243 */	VXI_BGEQ,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2250 */	VXI_BGEQ,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2257 */	VXI_BNEQ,VXT_JMP,1,VXT_END,
-/* 2261 */	VXI_BNEQ,VXT_LIT,6,VXI_JMP,VXT_JMP,1,VXT_END,
-/* 2268 */	VXI_BEQL,VXT_LIT,3,VXI_BRW,VXT_JMP,1,VXT_END,
-/* 2275 */	VXI_BLBC,VXT_REG,0x5A,VXT_JMP,1,VXT_END,
-/* 2281 */	VXI_BLBS,VXT_REG,0x5A,VXT_LIT,6,VXI_JMP,VXT_JMP,1,
-/* 2289 */	VXT_END,
-/* 2290 */	VXI_BLBS,VXT_REG,0x5A,VXT_LIT,3,VXI_BRW,VXT_JMP,1,
-/* 2298 */	VXT_END,
-/* 2299 */	VXI_BLBS,VXT_REG,0x5A,VXT_JMP,1,VXT_END,
-/* 2305 */	VXI_BLBC,VXT_REG,0x5A,VXT_LIT,6,VXI_JMP,VXT_JMP,1,
-/* 2313 */	VXT_END,
-/* 2314 */	VXI_BLBC,VXT_REG,0x5A,VXT_LIT,3,VXI_BRW,VXT_JMP,1,
-/* 2322 */	VXT_END,
-/* 2323 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_IREPAB,VXT_VAL,7,VXI_PUSHL,VXT_VAL,
-/* 2331 */	6,VXI_PUSHAB,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHL,
-/* 2339 */	VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,
-/* 2347 */	VXT_XFER,4 * (short int) xf_job,VXT_END,
-/* 2350 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_kill,
-/* 2358 */	VXT_END,
-/* 2359 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_killall,VXT_END,
-/* 2365 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2373 */	3,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_labaddr,VXI_MOVL,VXT_REG,
-/* 2381 */	0x50,VXT_ADDR,0,VXT_END,
-/* 2385 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_lckdecr,
-/* 2393 */	VXT_END,
-/* 2394 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_lckincr,
-/* 2402 */	VXT_END,
-/* 2403 */	VXI_MOVAB,VXT_JMP,1,VXT_ADDR,0,VXT_END,
-/* 2409 */	VXI_MOVAB,VXT_JMP,1,VXT_ADDR,0,VXT_END,
-/* 2415 */	VXI_MOVAB,VXT_JMP,1,VXT_ADDR,0,VXT_END,
-/* 2421 */	VXT_IREPL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2429 */	4 * (short int) xf_linefetch,VXT_END,
-/* 2431 */	VXI_JSB,VXT_XFER,4 * (short int) xf_linestart,VXT_END,
-/* 2435 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/* 2443 */	2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_lkname,VXT_END,
-/* 2450 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_lkinit,VXT_END,
-/* 2456 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 2464 */	2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_lkname,VXT_END,
-/* 2471 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_lock,
-/* 2479 */	VXT_END,
-/* 2480 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_IREPAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 2488 */	2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_lvpatwrite,VXT_END,
-/* 2495 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_lvzwithdraw,
-/* 2503 */	VXT_END,
-/* 2504 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,
-/* 2512 */	1,VXT_XFER,4 * (short int) xf_lvzwrite,VXT_END,
-/* 2516 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2524 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_flt_mod,VXT_END,
-/* 2531 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2539 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_mul,VXT_END,
-/* 2546 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_namechk,
-/* 2554 */	VXT_END,
-/* 2555 */	VXI_MOVAB,VXT_VAL,0,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,1,
-/* 2563 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_neg,VXT_END,
-/* 2569 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_newintrinsic,VXT_END,
-/* 2576 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_newvar,VXT_END,
-/* 2583 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_nullexp,
-/* 2591 */	VXT_END,
-/* 2592 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/* 2600 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_numcmp,VXT_END,
-/* 2606 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/* 2614 */	3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 2622 */	VXT_LIT,4,VXT_XFER,4 * (short int) xf_open,VXT_END,
-/* 2627 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/* 2635 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_pattern,VXT_END,
-/* 2641 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2649 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_population,VXT_END,
-/* 2656 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_putindx,
-/* 2664 */	VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,VXT_END,
-/* 2670 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHL,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2678 */	0,VXI_CALLS,VXT_LIT,2,VXT_XFER,4 * (short int) xf_rdone,VXT_END,
-/* 2685 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHL,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,
-/* 2693 */	0,VXI_CALLS,VXT_LIT,2,VXT_XFER,4 * (short int) xf_read,VXT_END,
-/* 2700 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 2708 */	1,VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,3,VXT_XFER,
-/* 2716 */	4 * (short int) xf_readfl,VXT_END,
-/* 2718 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXT_END,
-/* 2722 */	VXI_JSB,VXT_XFER,4 * (short int) xf_ret,VXT_END,
-/* 2726 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_retarg,
-/* 2734 */	VXT_END,
-/* 2735 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 2743 */	2,VXT_XFER,4 * (short int) xf_rhdaddr,VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,
-/* 2751 */	VXT_END,
-/* 2752 */	VXI_PUSHL,VXT_LIT,0,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 2760 */	2,VXT_XFER,4 * (short int) xf_rhdaddr,VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,
-/* 2768 */	VXT_END,
-/* 2769 */	VXI_PUSHL,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2777 */	4 * (short int) xf_rterror,VXT_END,
-/* 2779 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,3,VXI_PUSHL,VXT_VAL,
-/* 2787 */	2,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 2795 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_setextract,VXT_END,
-/* 2800 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/* 2808 */	4,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,
-/* 2816 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_setp1,VXT_END,
-/* 2821 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/* 2829 */	3,VXI_PUSHAB,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/* 2837 */	VXT_VAL,1,VXI_CALLS,VXT_LIT,6,VXT_XFER,4 * (short int) xf_setpiece,VXT_END,
-/* 2845 */	VXI_BISB2,VXT_LIT,1,VXT_REG,0x5A,VXI_JSB,VXT_XFER,4 * (short int) xf_dt_true,
-/* 2853 */	VXT_END,
-/* 2854 */	VXI_PUSHL,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,
-/* 2862 */	2,VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,3,VXI_CALLS,
-/* 2870 */	VXT_LIT,5,VXT_XFER,4 * (short int) xf_setzbrk,VXT_END,
-/* 2875 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x50,VXI_MOVAB,VXT_VAL,2,
-/* 2883 */	VXT_REG,0x51,VXI_JSB,VXT_XFER,4 * (short int) xf_sorts_after,VXT_END,
-/* 2889 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_srchindx,
-/* 2897 */	VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,VXT_END,
-/* 2903 */	VXI_MOVAB,VXT_VAL,2,VXT_REG,0x51,VXI_MOVAB,VXT_VAL,1,
-/* 2911 */	VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_sto,VXT_END,
-/* 2917 */	VXI_MOVC3,VXT_LIT,16,VXT_VAL,2,VXT_VAL,1,VXT_END,
-/* 2925 */	VXI_MOVAB,VXT_VAL,1,VXT_REG,0x51,VXI_MOVAB,VXT_VAL,0,
-/* 2933 */	VXT_REG,0x50,VXI_JSB,VXT_XFER,4 * (short int) xf_sto,VXT_END,
-/* 2939 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 2947 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_sub,VXT_END,
-/* 2954 */	VXI_PUSHAB,VXT_VAL,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 2962 */	2,VXT_XFER,4 * (short int) xf_svget,VXT_END,
-/* 2966 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 2974 */	4 * (short int) xf_psvput,VXT_END,
-/* 2976 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 2984 */	2,VXT_XFER,4 * (short int) xf_svput,VXT_END,
-/* 2988 */	VXI_MOVL,VXT_REG,0x50,VXT_REG,0x5A,VXT_END,
-/* 2994 */	VXI_JSB,VXT_XFER,4 * (short int) xf_tcommit,VXT_END,
-/* 2998 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_trollback,VXT_END,
-/* 3005 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_trestart,VXT_END,
-/* 3012 */	VXT_IREPAB,VXT_VAL,4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,
-/* 3020 */	2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_tstart,VXT_END,
-/* 3028 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_unlock,VXT_END,
-/* 3034 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3042 */	2,VXT_XFER,4 * (short int) xf_use,VXT_END,
-/* 3046 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_view,
-/* 3054 */	VXT_END,
-/* 3055 */	VXI_CMPL,VXT_VAL,1,VXT_VAL,2,VXT_END,
-/* 3061 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_write,
-/* 3069 */	VXT_END,
-/* 3070 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_wteol,
-/* 3078 */	VXT_END,
-/* 3079 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_wtff,VXT_END,
-/* 3085 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_wtone,
-/* 3093 */	VXT_END,
-/* 3094 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_wttab,
-/* 3102 */	VXT_END,
-/* 3103 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_xkill,
-/* 3111 */	VXT_END,
-/* 3112 */	VXT_IREPAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,
-/* 3120 */	4 * (short int) xf_xnew,VXT_END,
-/* 3122 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_zallocate,
-/* 3130 */	VXT_END,
-/* 3131 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3139 */	1,VXT_XFER,4 * (short int) xf_zattach,VXT_END,
-/* 3143 */	VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_zcompile,
-/* 3151 */	VXT_END,
-/* 3152 */	VXI_JSB,VXT_XFER,4 * (short int) xf_zcont,VXT_END,
-/* 3156 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_zdeallocate,
-/* 3164 */	VXT_END,
-/* 3165 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 3173 */	1,VXI_CALLS,VXT_LIT,2,VXT_XFER,4 * (short int) xf_zedit,VXT_END,
-/* 3180 */	VXI_PUSHL,VXT_VAL,1,VXI_JSB,VXT_XFER,4 * (short int) xf_zg1,VXT_END,
-/* 3187 */	VXI_PUSHAB,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,
-/* 3195 */	1,VXI_JSB,VXT_XFER,4 * (short int) xf_zgoto,VXT_END,
-/* 3200 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3208 */	2,VXT_XFER,4 * (short int) xf_zhelp,VXT_END,
-/* 3212 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3220 */	2,VXT_XFER,4 * (short int) xf_zlink,VXT_END,
-/* 3224 */	VXT_IREPAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,2,VXI_CALLS,VXT_VAL,
-/* 3232 */	1,VXT_XFER,4 * (short int) xf_zmess,VXT_END,
-/* 3236 */	VXI_PUSHAB,VXT_VAL,0,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_zprevious,
-/* 3244 */	VXT_END,
-/* 3245 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHL,VXT_VAL,5,VXI_PUSHAB,VXT_VAL,
-/* 3253 */	4,VXI_PUSHL,VXT_VAL,3,VXI_PUSHAB,VXT_VAL,2,VXI_PUSHAB,
-/* 3261 */	VXT_VAL,1,VXI_CALLS,VXT_LIT,5,VXT_XFER,4 * (short int) xf_zprint,VXT_END,
-/* 3269 */	VXI_PUSHL,VXT_LIT,0,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 3277 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_zshow,VXT_END,
-/* 3284 */	VXI_PUSHAB,VXT_VAL,3,VXI_PUSHL,VXT_VAL,2,VXI_PUSHAB,VXT_VAL,
-/* 3292 */	1,VXI_CALLS,VXT_LIT,3,VXT_XFER,4 * (short int) xf_zshow,VXT_END,
-/* 3299 */	VXI_PUSHL,VXT_LIT,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3307 */	2,VXT_XFER,4 * (short int) xf_zstep,VXI_JSB,VXT_XFER,4 * (short int) xf_zcont,VXT_END,
-/* 3314 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3322 */	2,VXT_XFER,4 * (short int) xf_zstep,VXI_JSB,VXT_XFER,4 * (short int) xf_zcont,VXT_END,
-/* 3329 */	VXI_JSB,VXT_XFER,4 * (short int) xf_restartpc,VXI_PUSHAB,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3337 */	1,VXT_XFER,4 * (short int) xf_zsystem,VXT_END,
-/* 3341 */	VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,1,VXT_XFER,4 * (short int) xf_ztcommit,
-/* 3349 */	VXT_END,
-/* 3350 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_ztstart,VXT_END,
-/* 3356 */	VXI_CALLS,VXT_LIT,0,VXT_XFER,4 * (short int) xf_merge,VXT_END,
-/* 3362 */	VXI_PUSHL,VXT_LIT,0,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3370 */	2,VXT_XFER,4 * (short int) xf_merge_arg,VXT_END,
-/* 3374 */	VXI_PUSHAB,VXT_VAL,2,VXI_PUSHL,VXT_VAL,1,VXI_CALLS,VXT_LIT,
-/* 3382 */	2,VXT_XFER,4 * (short int) xf_merge_arg,VXT_END,
-/* 3386 */	VXI_PUSHAB,VXT_VAL,1,VXI_PUSHAB,VXT_VAL,2,VXI_JSB,VXT_XFER,
-/* 3394 */	4 * (short int) xf_indmerge,VXT_END,
-/* 3396 */	VXT_IREPAB,VXT_VAL,2,VXI_CALLS,VXT_VAL,1,VXT_XFER,4 * (short int) xf_m_srchindx,
-/* 3404 */	VXI_MOVL,VXT_REG,0x50,VXT_ADDR,0,VXT_END,
-/* 3410 */	304,318,311,2151,2159,2155,2403,2415,
-/* 3418 */	2409,0,0,0,416,392,383,0,
-/* 3426 */	0,379,1688,1726,1707,2299,2314,2305,
-/* 3434 */	2275,2290,2281,2167,2178,2171,2257,2268,
-/* 3442 */	2261,2203,2214,2207,2221,2232,2225,2239,
-/* 3450 */	2250,2243,2185,2196,2189,1667,1681,1674,
-/* 3458 */	325,339,332};
Index: sr_unix_gnp/gtcm_exi_ch.c
===================================================================
--- sr_unix_gnp/gtcm_exi_ch.c	(revision 6)
+++ sr_unix_gnp/gtcm_exi_ch.c	(revision 45)
@@ -23,7 +23,7 @@
 #include "cmidef.h"
 #include "cmmdef.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "gtm_stdio.h"
 #include "send_msg.h"
 #include "io.h"
Index: sr_unix_gnp/gtcm_gnp_server.c
===================================================================
--- sr_unix_gnp/gtcm_gnp_server.c	(revision 6)
+++ sr_unix_gnp/gtcm_gnp_server.c	(revision 45)
@@ -92,7 +92,7 @@
 #include "mu_gv_cur_reg_init.h"
 #include "gtcm_open_cmerrlog.h"
 #include "gtcm_gnp_pktdmp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "getzdir.h"
 #include "gtm_env_init.h"	/* for gtm_env_init() prototype */
 
Index: sr_unix_gnp/gtcm_ch.c
===================================================================
--- sr_unix_gnp/gtcm_ch.c	(revision 6)
+++ sr_unix_gnp/gtcm_ch.c	(revision 45)
@@ -31,7 +31,7 @@
 #include "gtcm_write_ast.h"
 #include "io.h"
 #include "iosp.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "send_msg.h"
 #include "gtmmsg.h"
 #include "gtcm_open_cmerrlog.h"
Index: sr_unix_gnp/gvcmz_errmsg.c
===================================================================
--- sr_unix_gnp/gvcmz_errmsg.c	(revision 6)
+++ sr_unix_gnp/gvcmz_errmsg.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "cmidef.h"
 #include "cmmdef.h"
 #include "error.h"
-#include "util.h"
+#include "gtm_util.h"
 #include "io.h"
 #include "gtm_string.h"
 #include "gvcmy_close.h"
Index: sr_i386/auto_zlink.c
===================================================================
--- sr_i386/auto_zlink.c	(revision 6)
+++ sr_i386/auto_zlink.c	(revision 45)
@@ -16,7 +16,7 @@
 #include "i386.h"
 #include "urx.h"
 #include "rtnhdr.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "auto_zlink.h"
 
 #define PEA_SZ		5
Index: sr_i386/make_dmode.c
===================================================================
--- sr_i386/make_dmode.c	(revision 6)
+++ sr_i386/make_dmode.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "error.h"
 #include "rtnhdr.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "i386.h"
 #include "inst_flush.h"
 #include "dm_setup.h"
Index: sr_i386/obj_file.c
===================================================================
--- sr_i386/obj_file.c	(revision 6)
+++ sr_i386/obj_file.c	(revision 45)
@@ -148,7 +148,7 @@
 {
         if (file_des > 0)
         {
-		UNLINK(object_file_name);
+		gtm_UNLINK(object_file_name);
 		close(file_des);
         }
 }
Index: sr_i386/emit_code.c
===================================================================
--- sr_i386/emit_code.c	(revision 6)
+++ sr_i386/emit_code.c	(revision 45)
@@ -14,7 +14,7 @@
 #include "compiler.h"
 #include "rtnhdr.h"
 #include "stack_frame.h"
-#include "opcode.h"
+#include "gtm_opcode.h"
 #include "xfer_enum.h"
 #include "mdq.h"
 #include "vxi.h"
Index: sr_i386/make_cimode.c
===================================================================
--- sr_i386/make_cimode.c	(revision 6)
+++ sr_i386/make_cimode.c	(revision 45)
@@ -15,7 +15,7 @@
 
 #include "error.h"
 #include "rtnhdr.h"
-#include "op.h"
+#include "gtm_op.h"
 #include "i386.h"
 #include "inst_flush.h"
 #include "gtmci.h"

Property changes on: 
___________________________________________________________________
Name: svn:ignore
   + *.tar.gz
*.tar.bz2
TAGS
*~
.*.swp
*.orig
*.rej
core


