// ==============================================================
//#+ This module generated by Mumps Compiler 5.05a - Oct 11 2002
//#+  
//#+ Portions of this code are part of the Mumps Compiler
//#+ 
//#+ Copyright (C) A.D. 2000, 2001, 2002 by Kevin C. O'Kane  
//#+ Copyright (C) A.D. 2002 by Matthew J. Lockner  
//#+ Copyright (C) A.D. 2002 by Michael Janssen
//#+ 
//#+ Kevin C. O'Kane, Ph.D.
//#+ Computer Science Department
//#+ University of Northern Iowa
//#+ Cedar Falls, IA 50614-0507
//#+ Tel 319 273 7322
//#+ okane@cs.uni.edu
//#+ http://www.cs.uni.edu/~okane
//#+ -----------------------------------
//#+ 
//#+ Matthew J. Lockner
//#+ Department of Computer Science
//#+ University of Northern Iowa
//#+ Cedar Falls, IA  50614-0507
//#+ lockner@cns.uni.edu
//#+ http://student.cns.uni.edu/~lockner/
//#+ -----------------------------------
//#+ 
//#+ Michael Janssen
//#+ Department of Computer Science
//#+ University of Northern Iowa
//#+ Cedar Falls, IA  50614-0507
//#+ janssen@cns.uni.edu
//#+ http://student.cns.uni.edu/~janssen/
//#+ -----------------------------------
//#+ 
//#+ The runtime libraries are covered by the following license:
//#+  
//#+ This library is free software; you can redistribute it and/or
//#+ modify it under the terms of the GNU Lesser General Public
//#+ License as published by the Free Software Foundation; either
//#+ version 2.1 of the License, or (at your option) any later version.
//#+ 
//#+ This library is distributed in the hope that it will be useful,
//#+ but WITHOUT ANY WARRANTY; without even the implied warranty of
//#+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//#+ Lesser General Public License for more details.
//#+ 
//#+ You should have received a copy of the GNU Lesser General Public
//#+ License along with this library; if not, write to the Free Software
//#+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//#+ 
//#+ This code is unverified - use at your own risk 
//#+==============================================================

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <setjmp.h>
#ifndef _MSC_VER
#include <unistd.h>
#endif
#include <mumpsc/strmax.h>
#define SYM_MAX 100 /* Max Symbol Table Depth */
#define FORPARM 32  /* Size of For loop parameter */
#ifdef SUB /* declarations if this is not a sub function */
#include <mumpsc/externs.h>
extern int (*__label_lookup)(char *);
extern char * (*__text_function)(int);
#endif
#ifndef SUB
char cfgdata[256]; /* old globals data file */
char cfgkey[256]; /* old globals btree file */
long g; /* global array handler action parm */
int (*__label_lookup)(char *);
char * (*__text_function)(int);
long io=5; /* current i/o unit number */
long tpx=0; /* $test */
int NOERR=0,ERROR=0; /* error message surpress */
FILE *in_file[10]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; /* file ptrs */
FILE *out_file[10]={NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; /* file ptrs */
int hor[10]={0,0,0,0,0,0,0,0,0,0}; /* horizontal cursors */
int ver[10]={1,1,1,1,1,1,1,1,1,1}; /* vertical cursors */
int _Sym=0; /* symbol table layer */
long LineNumber=0; /* runtime line number */
jmp_buf _doStack[128]; /* <do> return stack mechanism */
short   _doStackN[128]={0}; /* <do> return stack mechanism */
int     _doStx=0; /* <do> return stack mechanism */
int gpad=0; /* global collating sequence flag */
#else
/*** Sub-function */
char cfgdata[256]; /* old globals data file */
char cfgkey[256]; /* old globals btree file */
extern long g;  /* global array handler action parameter */
extern long io;  /* current i/o unit */
int NOERR=0,ERROR=0; /* error message surpress */
extern FILE *in_file[10];  /* file pointers */
extern FILE *out_file[10];  /* file pointers */
extern int hor[10];  /* horizontal cursors */
extern int ver[10];  /* vertical cursors */
extern int _Sym;  /* symbol table layer */
extern long LineNumber;  /* runtime line number */
extern jmp_buf _doStack[100];  /* DO-return stack */
extern short   _doStackN[100];  /* DO-New stack */
extern int _doStx;  /* DO-return stack top */
extern int gpad;  /* global collating sequence flag */
#endif
void zfcn(unsigned char *, unsigned char *); /* z functions */
char * sym_(int, unsigned char *, unsigned char *); /* symbol table */
char * makeLock(char *, char *, char *, char *); /* global array lock service */
char * cleanLocks(char *, char *); /* global array lock service */
char * releaseLock(char *, char *, char *); /* global array lock service */
char * eraseLocks(char *); /* global array lock service */
void add(char *a,char *b,char *c); /* math function */
void sub(char *a,char *b,char *c); /* math function */
void mult(char *a,char *b,char *c); /* math function */
void divx(char *a,char *b,char *c); /* math function */
void divi(char *a,char *b,char *c); /* math function */
void _fnumber(unsigned char *,unsigned char *,
       unsigned char *,unsigned char *); /* math function */
#include <mumpsc/global.h>  /* Global array definitions */
  /* Interface to Mglobal(): */
  /* g = command */
  /* key = key sought or stored */
  /* bd = value returned or stored */
#ifndef SUB
#include <mumpsc/fcns.h>  /* System support functions */
#include <mumpsc/globalvars.h>  /* Many common global variables */
#include <mumpsc/sysfunc.h>  /* Many common global variables */
#endif
// +     Copyright (C) A.D. 2002 by Kevin C. O'Kane  
// +
// +     Kevin C. O'Kane
// +     Department of Computer Science
// +     University of Northern Iowa
// +     Cedar Falls, IA 50613-0507 USA
// +
// +     okane@cs.uni.edu
// +     anamfianna@earthlink.net
// +     http://www.cs.uni.edu/~okane
// +
// +
// + This program is free software; you can redistribute it and/or modify
// + it under the terms of the GNU General Public License as published by
// + the Free Software Foundation; either version 2 of the License, or
// + (at your option) any later version.
// + 
// + This program is distributed in the hope that it will be useful,
// + but WITHOUT ANY WARRANTY; without even the implied warranty of
// + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// + GNU General Public License for more details.
// + 
// + You should have received a copy of the GNU General Public License
// + along with this program; if not, write to the Free Software
// + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
// +
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//=================================================================================
// Entry Point Score(a,b) + + + + + + +
//=================================================================================

char * Score(char * offset,char * Arg0,char * Arg1){

//#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//#+ Intermediate temporary variables used during execution of string expressions
//#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

char _ftmp[STR_MAX]; /* intermediate temp */
/*** Temporary variables */
//#+  intermediate variables
jmp_buf for0J;
char _Arg0[STR_MAX];
char _Arg1[STR_MAX];
char _Arg2[STR_MAX];
char tmp0[STR_MAX];
char tmp1[STR_MAX];
char tmp2[STR_MAX];
char tmp3[STR_MAX];
char _dummy[STR_MAX]; /* temporary variable */
unsigned char atmp[STR_MAX]; /* temporary variable */
unsigned char gtmp[STR_MAX]; /* temporary variable */
unsigned char gtmpL[STR_MAX]; /* temporary variable */
unsigned char tmp[STR_MAX]; /* temporary variable */
int Score_label_lookup(char *); /* resolution of labels */
char * Score_text_function(int);
static unsigned char _ReturnVal[STR_MAX]; /* function returns */
int _ArgCount=0; /* Nbr of args to extrinsic */
long i,_jj,_j,_k,_new;
int f=0;

int SymLoadFlg=0; /* was the symbol table loaded from disk? */
in_file[5]=stdin; /* console default */
out_file[5]=stdout; /* console default */
__label_lookup=Score_label_lookup;
__text_function=Score_text_function;
_Sym++; // push symbol table
if (_Sym > SYM_MAX) ErrorMessage("To many function calls",LineNumber);
_doStackN[_doStx-1]=1;   //* flag to restore namespace
	 if (Arg0!=NULL) sym_(0,"a",Arg0); // Store Arguments
	 if (Arg1!=NULL) sym_(0,"b",Arg1); // Store Arguments
	 goto _eps;  //* entry point label router
_fcn: 
/*=================================================================================*/
LineNumber=29; // ^^Score(a,b)
/*=================================================================================*/
/*=================================================================================*/
LineNumber=30; //       if a="-" quit "-1"
/*=================================================================================*/
	 if (sym_(11,"a",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"-")==0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 strmove(_ReturnVal,"");
	 strmove(_ReturnVal,"-1");
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
	 } 
/*=================================================================================*/
LineNumber=31; //       if b="-" quit "-1"
/*=================================================================================*/
	 if (sym_(11,"b",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"-")==0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 strmove(_ReturnVal,"");
	 strmove(_ReturnVal,"-1");
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
	 } 
/*=================================================================================*/
LineNumber=32; //       if a=b quit "2"
/*=================================================================================*/
	 if (sym_(11,"a",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"b",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,tmp1)==0) strmove(tmp2,"1");
	    else strmove(tmp2,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp2,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 strmove(_ReturnVal,"");
	 strmove(_ReturnVal,"2");
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
	 } 
/*=================================================================================*/
LineNumber=33; //       quit "-1"
/*=================================================================================*/
	 strmove(_ReturnVal,"");
	 strmove(_ReturnVal,"-1");
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
	 goto _epilogue;
_eps:	 if (strlen(offset)==0) goto _fcn;
	 ErrorMessage("Error - entry point label not found", LineNumber);

//=================================================================================
_epilogue: tmp0[0]=0; tmp1[0]=0;  /*  Function Epilogue */
#ifndef _MSC_VER
	 Mltoa(getpid(),atmp);
	 cleanLocks("",atmp);
#endif
	 Mglobal(GCLOSE,tmp0,tmp1);  /* Close Globals */
#ifndef _MSC_VER
	 if (SymLoadFlg) SysDump((long) getppid()); /* dump symbol table */
#else
	 if (SymLoadFlg) SysDump((long) 999L); /* dump symbol table */
#endif
	 return 0; }  /* Terminate */
//=================================================================================



int Score_label_lookup(char *label) { return -1; }
char * Score_text_function(int disp) { return NULL; }

//=================================================================================
// Entry Point Cost(s,t,i,j) + + + + + + +
//=================================================================================

char * Cost(char * offset,char * Arg0,char * Arg1,char * Arg2,char * Arg3){

//#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//#+ Intermediate temporary variables used during execution of string expressions
//#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

char _ftmp[STR_MAX]; /* intermediate temp */
/*** Temporary variables */
//#+  intermediate variables
jmp_buf for0J;
char _Arg0[STR_MAX];
char _Arg1[STR_MAX];
char _Arg2[STR_MAX];
char _Arg3[STR_MAX];
char _Arg4[STR_MAX];
char tmp0[STR_MAX];
char tmp1[STR_MAX];
char tmp2[STR_MAX];
char tmp3[STR_MAX];
char tmp4[STR_MAX];
char tmp5[STR_MAX];
char tmp6[STR_MAX];
char tmp7[STR_MAX];
char tmp8[STR_MAX];
char tmp9[STR_MAX];
char tmp10[STR_MAX];
char tmp11[STR_MAX];
char tmp12[STR_MAX];
char tmp13[STR_MAX];
char tmp14[STR_MAX];
char tmp15[STR_MAX];
char tmp16[STR_MAX];
char tmp17[STR_MAX];
char _dummy[STR_MAX]; /* temporary variable */
unsigned char atmp[STR_MAX]; /* temporary variable */
unsigned char gtmp[STR_MAX]; /* temporary variable */
unsigned char gtmpL[STR_MAX]; /* temporary variable */
unsigned char tmp[STR_MAX]; /* temporary variable */
int Cost_label_lookup(char *); /* resolution of labels */
char * Cost_text_function(int);
static unsigned char _ReturnVal[STR_MAX]; /* function returns */
int _ArgCount=0; /* Nbr of args to extrinsic */
long i,_jj,_j,_k,_new;
int f=0;

int SymLoadFlg=0; /* was the symbol table loaded from disk? */
in_file[5]=stdin; /* console default */
out_file[5]=stdout; /* console default */
__label_lookup=Cost_label_lookup;
__text_function=Cost_text_function;
_Sym++; // push symbol table
if (_Sym > SYM_MAX) ErrorMessage("To many function calls",LineNumber);
_doStackN[_doStx-1]=1;   //* flag to restore namespace
	 if (Arg0!=NULL) sym_(0,"s",Arg0); // Store Arguments
	 if (Arg1!=NULL) sym_(0,"t",Arg1); // Store Arguments
	 if (Arg2!=NULL) sym_(0,"i",Arg2); // Store Arguments
	 if (Arg3!=NULL) sym_(0,"j",Arg3); // Store Arguments
	 goto _eps;  //* entry point label router
_fcn: 
/*=================================================================================*/
LineNumber=35; // ^^Cost(s,t,i,j)
/*=================================================================================*/
/*=================================================================================*/
LineNumber=36; //       if $d(^a(i,j)) quit ^a(i,j)
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp1)==NULL) VariableNotFound(LineNumber);
	 g=0;
	 strmove(gtmp,"^a\x01");
	 strcatx(gtmp,tmp0);
	 strcatx(gtmp,tmp1);
	 strmove(tmp2,gtmp);
	 f=Mglobal(g,tmp2,tmp3); 
	 if (!f) {
		 i=strlen(tmp2);
		 tmp2[i]=2;
		 tmp2[i+1]=0;
		 f=Mglobal(NEXT,tmp2,tmp3);
		 if (f==1)
			 strmove(tmp4,"10");
			 else strmove(tmp4,"0");
		 }
	else {
		 strmove(tmp4,"1");
		 i=strlen(tmp2);
		 tmp2[i]=2;
		 tmp2[i+1]=0;
		 f=Mglobal(NEXT,tmp2,tmp3);
		 if (f==1)
			 strcat(tmp4,"1");
			 }
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp4,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 strmove(_ReturnVal,"");
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp1)==NULL) VariableNotFound(LineNumber);
	 g=0;
	 strmove(gtmp,"^a\x01");
	 strcatx(gtmp,tmp0);
	 strcatx(gtmp,tmp1);
	 strmove(tmp2,gtmp);
	 f=Mglobal(g,tmp2,tmp3); 
	 if (g==RETRIEVE && f==0)  VariableNotFound(LineNumber);
	 strmove(_ReturnVal,tmp3);
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
	 } 
/*=================================================================================*/
LineNumber=37; //       if i=0,j=0 set ^a(i,j)=0 quit "0"
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"0")==0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 if (sym_(11,"j",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"0")==0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp1)==NULL) VariableNotFound(LineNumber);
	 strmove(gtmpL,"^a\xce");
	 strcat(gtmpL,tmp0);
	 strcat(gtmpL,"\xd0");
	 strcat(gtmpL,tmp1);
	 strcat(gtmpL,"\xcf");
	 f=Mglobal(STORE,gtmpL,"0");
	 strmove(_ReturnVal,"");
	 strmove(_ReturnVal,"0");
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
	 } 
	 } 
/*=================================================================================*/
LineNumber=38; //       if i'=0,j=0 set x=$$^^Cost(s,t,i-1,0)+$$^^Score($e(s,i,i),"-") set ^a(i,j)=x q x
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"0")!=0)
		 strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 if (sym_(11,"j",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"0")==0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 if (sym_(11,"s",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"t",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp2)==NULL) VariableNotFound(LineNumber);
	 sub(tmp2,"1",tmp3);
	 strmove(_Arg0,tmp0); // Set up arguments
	 strmove(_Arg1,tmp1); // Set up arguments
	 strmove(_Arg2,tmp3); // Set up arguments
	 strmove(_Arg3,"0"); // Set up arguments
	 _ArgCount=4;
	 strmove(tmp4,(char *)Cost("",_Arg0,_Arg1,_Arg2,_Arg3));
	 if (sym_(11,"s",tmp5)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp6)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp7)==NULL) VariableNotFound(LineNumber);
	 _extract(tmp8,tmp5,tmp6,tmp7);
	 strmove(_Arg0,tmp8); // Set up arguments
	 strmove(_Arg1,"-"); // Set up arguments
	 _ArgCount=2;
	 strmove(tmp9,(char *)Score("",_Arg0,_Arg1));
	 add(tmp4,tmp9,tmp10);
	 sym_(0,"x",tmp10); // Store result
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp1)==NULL) VariableNotFound(LineNumber);
	 strmove(gtmpL,"^a\xce");
	 strcat(gtmpL,tmp0);
	 strcat(gtmpL,"\xd0");
	 strcat(gtmpL,tmp1);
	 strcat(gtmpL,"\xcf");
	 if (sym_(11,"x",tmp0)==NULL) VariableNotFound(LineNumber);
	 f=Mglobal(STORE,gtmpL,tmp0);
	 strmove(_ReturnVal,"");
	 if (sym_(11,"x",tmp0)==NULL) VariableNotFound(LineNumber);
	 strmove(_ReturnVal,tmp0);
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
	 } 
	 } 
/*=================================================================================*/
LineNumber=39; //       if i=0,j'=0 set x=$$^^Cost(s,t,0,j-1)+$$^^Score("-",$e(t,j,j)) set ^a(i,j)=x q x
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"0")==0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 if (sym_(11,"j",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"0")!=0)
		 strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 if (sym_(11,"s",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"t",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp2)==NULL) VariableNotFound(LineNumber);
	 sub(tmp2,"1",tmp3);
	 strmove(_Arg0,tmp0); // Set up arguments
	 strmove(_Arg1,tmp1); // Set up arguments
	 strmove(_Arg2,"0"); // Set up arguments
	 strmove(_Arg3,tmp3); // Set up arguments
	 _ArgCount=4;
	 strmove(tmp4,(char *)Cost("",_Arg0,_Arg1,_Arg2,_Arg3));
	 if (sym_(11,"t",tmp5)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp6)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp7)==NULL) VariableNotFound(LineNumber);
	 _extract(tmp8,tmp5,tmp6,tmp7);
	 strmove(_Arg0,"-"); // Set up arguments
	 strmove(_Arg1,tmp8); // Set up arguments
	 _ArgCount=2;
	 strmove(tmp9,(char *)Score("",_Arg0,_Arg1));
	 add(tmp4,tmp9,tmp10);
	 sym_(0,"x",tmp10); // Store result
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp1)==NULL) VariableNotFound(LineNumber);
	 strmove(gtmpL,"^a\xce");
	 strcat(gtmpL,tmp0);
	 strcat(gtmpL,"\xd0");
	 strcat(gtmpL,tmp1);
	 strcat(gtmpL,"\xcf");
	 if (sym_(11,"x",tmp0)==NULL) VariableNotFound(LineNumber);
	 f=Mglobal(STORE,gtmpL,tmp0);
	 strmove(_ReturnVal,"");
	 if (sym_(11,"x",tmp0)==NULL) VariableNotFound(LineNumber);
	 strmove(_ReturnVal,tmp0);
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
	 } 
	 } 
/*=================================================================================*/
LineNumber=40; //       set a=$$^^Cost(s,t,i-1,j-1)+$$^^Score($e(s,i,i),$e(t,j,j))
/*=================================================================================*/
	 if (sym_(11,"s",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"t",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp2)==NULL) VariableNotFound(LineNumber);
	 sub(tmp2,"1",tmp3);
	 if (sym_(11,"j",tmp4)==NULL) VariableNotFound(LineNumber);
	 sub(tmp4,"1",tmp5);
	 strmove(_Arg0,tmp0); // Set up arguments
	 strmove(_Arg1,tmp1); // Set up arguments
	 strmove(_Arg2,tmp3); // Set up arguments
	 strmove(_Arg3,tmp5); // Set up arguments
	 _ArgCount=4;
	 strmove(tmp6,(char *)Cost("",_Arg0,_Arg1,_Arg2,_Arg3));
	 if (sym_(11,"s",tmp7)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp8)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp9)==NULL) VariableNotFound(LineNumber);
	 _extract(tmp10,tmp7,tmp8,tmp9);
	 if (sym_(11,"t",tmp11)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp12)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp13)==NULL) VariableNotFound(LineNumber);
	 _extract(tmp14,tmp11,tmp12,tmp13);
	 strmove(_Arg0,tmp10); // Set up arguments
	 strmove(_Arg1,tmp14); // Set up arguments
	 _ArgCount=2;
	 strmove(tmp15,(char *)Score("",_Arg0,_Arg1));
	 add(tmp6,tmp15,tmp16);
	 sym_(0,"a",tmp16); // Store result
/*=================================================================================*/
LineNumber=41; //       set b=$$^^Cost(s,t,i-1,j)+$$^^Score($e(s,i,i),"-")
/*=================================================================================*/
	 if (sym_(11,"s",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"t",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp2)==NULL) VariableNotFound(LineNumber);
	 sub(tmp2,"1",tmp3);
	 if (sym_(11,"j",tmp4)==NULL) VariableNotFound(LineNumber);
	 strmove(_Arg0,tmp0); // Set up arguments
	 strmove(_Arg1,tmp1); // Set up arguments
	 strmove(_Arg2,tmp3); // Set up arguments
	 strmove(_Arg3,tmp4); // Set up arguments
	 _ArgCount=4;
	 strmove(tmp5,(char *)Cost("",_Arg0,_Arg1,_Arg2,_Arg3));
	 if (sym_(11,"s",tmp6)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp7)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp8)==NULL) VariableNotFound(LineNumber);
	 _extract(tmp9,tmp6,tmp7,tmp8);
	 strmove(_Arg0,tmp9); // Set up arguments
	 strmove(_Arg1,"-"); // Set up arguments
	 _ArgCount=2;
	 strmove(tmp10,(char *)Score("",_Arg0,_Arg1));
	 add(tmp5,tmp10,tmp11);
	 sym_(0,"b",tmp11); // Store result
/*=================================================================================*/
LineNumber=42; //       set c=$$^^Cost(s,t,i,j-1)+$$^^Score("-",$e(t,j,j))
/*=================================================================================*/
	 if (sym_(11,"s",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"t",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp2)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp3)==NULL) VariableNotFound(LineNumber);
	 sub(tmp3,"1",tmp4);
	 strmove(_Arg0,tmp0); // Set up arguments
	 strmove(_Arg1,tmp1); // Set up arguments
	 strmove(_Arg2,tmp2); // Set up arguments
	 strmove(_Arg3,tmp4); // Set up arguments
	 _ArgCount=4;
	 strmove(tmp5,(char *)Cost("",_Arg0,_Arg1,_Arg2,_Arg3));
	 if (sym_(11,"t",tmp6)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp7)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp8)==NULL) VariableNotFound(LineNumber);
	 _extract(tmp9,tmp6,tmp7,tmp8);
	 strmove(_Arg0,"-"); // Set up arguments
	 strmove(_Arg1,tmp9); // Set up arguments
	 _ArgCount=2;
	 strmove(tmp10,(char *)Score("",_Arg0,_Arg1));
	 add(tmp5,tmp10,tmp11);
	 sym_(0,"c",tmp11); // Store result
/*=================================================================================*/
LineNumber=43; //       set x=a
/*=================================================================================*/
	 if (sym_(11,"a",tmp0)==NULL) VariableNotFound(LineNumber);
	 sym_(0,"x",tmp0); // Store result
/*=================================================================================*/
LineNumber=44; //       if b>x set x=b
/*=================================================================================*/
	 if (sym_(11,"b",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"x",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (numcomp(tmp0,tmp1)>0) strmove(tmp2,"1");
	    else strmove(tmp2,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp2,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 if (sym_(11,"b",tmp0)==NULL) VariableNotFound(LineNumber);
	 sym_(0,"x",tmp0); // Store result
	 } 
/*=================================================================================*/
LineNumber=45; //       if c>x set x=c
/*=================================================================================*/
	 if (sym_(11,"c",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"x",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (numcomp(tmp0,tmp1)>0) strmove(tmp2,"1");
	    else strmove(tmp2,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp2,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 if (sym_(11,"c",tmp0)==NULL) VariableNotFound(LineNumber);
	 sym_(0,"x",tmp0); // Store result
	 } 
/*=================================================================================*/
LineNumber=46; //       set ^a(i,j)=x
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp1)==NULL) VariableNotFound(LineNumber);
	 strmove(gtmpL,"^a\xce");
	 strcat(gtmpL,tmp0);
	 strcat(gtmpL,"\xd0");
	 strcat(gtmpL,tmp1);
	 strcat(gtmpL,"\xcf");
	 if (sym_(11,"x",tmp0)==NULL) VariableNotFound(LineNumber);
	 f=Mglobal(STORE,gtmpL,tmp0);
/*=================================================================================*/
LineNumber=47; //       quit x
/*=================================================================================*/
	 strmove(_ReturnVal,"");
	 if (sym_(11,"x",tmp0)==NULL) VariableNotFound(LineNumber);
	 strmove(_ReturnVal,tmp0);
	 _SymFree(1); /* pop symbol table */;
	 return _ReturnVal;
/*=================================================================================*/
LineNumber=49; //       zmain
/*=================================================================================*/
	 goto _epilogue;
_eps:	 if (strlen(offset)==0) goto _fcn;
	 ErrorMessage("Error - entry point label not found", LineNumber);

//=================================================================================
_epilogue: tmp0[0]=0; tmp1[0]=0;  /*  Function Epilogue */
#ifndef _MSC_VER
	 Mltoa(getpid(),atmp);
	 cleanLocks("",atmp);
#endif
	 Mglobal(GCLOSE,tmp0,tmp1);  /* Close Globals */
#ifndef _MSC_VER
	 if (SymLoadFlg) SysDump((long) getppid()); /* dump symbol table */
#else
	 if (SymLoadFlg) SysDump((long) 999L); /* dump symbol table */
#endif
	 return 0; }  /* Terminate */
//=================================================================================



int Cost_label_lookup(char *label) { return -1; }
char * Cost_text_function(int disp) { return NULL; }


int main(int argc, char *argv[]) {

//#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//#+ Intermediate temporary variables used during execution of string expressions
//#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

char _ftmp[STR_MAX]; /* intermediate temp */
/*** Temporary variables */
//#+  intermediate variables
char for1_incr[FORPARM],for1_lim[FORPARM],for1_init[FORPARM];
int for1F; int for1T; long for1; double for1D;
char for2_incr[FORPARM],for2_lim[FORPARM],for2_init[FORPARM];
int for2F; int for2T; long for2; double for2D;
jmp_buf for0J;
jmp_buf for1J;
jmp_buf for2J;
char _Arg0[STR_MAX];
char _Arg1[STR_MAX];
char _Arg2[STR_MAX];
char _Arg3[STR_MAX];
char tmp0[STR_MAX];
char tmp1[STR_MAX];
char tmp2[STR_MAX];
char tmp3[STR_MAX];
char tmp4[STR_MAX];
char tmp5[STR_MAX];
char tmp6[STR_MAX];
char tmp7[STR_MAX];
char _dummy[STR_MAX]; /* temporary variable */
unsigned char atmp[STR_MAX]; /* temporary variable */
unsigned char gtmp[STR_MAX]; /* temporary variable */
unsigned char gtmpL[STR_MAX]; /* temporary variable */
unsigned char tmp[STR_MAX]; /* temporary variable */
int _label_lookup(char *); /* resolution of labels */
char * _text_function(int);
static unsigned char _ReturnVal[STR_MAX]; /* function returns */
int _ArgCount=0; /* Nbr of args to extrinsic */
long i,_jj,_j,_k,_new;
int f=0;

int SymLoadFlg=0; /* was the symbol table loaded from disk? */
in_file[5]=stdin; /* console default */
out_file[5]=stdout; /* console default */
__label_lookup=_label_lookup;
__text_function=_text_function;
signal(SIGINT,&sigint);  //* trap Ctrl-C


#ifdef CLIENT
if (argc < 2) {
#ifdef DEFAULT_IP
   printf("Warning: Using default IP\n");
   client_init(DEFAULT_IP);
#else
   printf("Usage: %s <server IP>\n", argv[0]);
   exit(-1);
#endif
} else {
   client_init(argv[1]);
}
#endif
#ifndef _MSC_VER
	 if (strcmp(argv[0],"***")!=0) SymLoadFlg=SysLoad((long)getppid()); /* load symbol table? */
	 else SymLoadFlg=SysLoad((long)getpid()); /* load symbol table? */
#else
	 if (strcmp(argv[0],"***")!=0) SymLoadFlg=SysLoad(999L); /* load symbol table? */
	 else SymLoadFlg=SysLoad(999L); /* load symbol table? */
#endif
/*=================================================================================*/
LineNumber=50; //       set s="acbcdb"
/*=================================================================================*/
	 sym_(0,"s","acbcdb"); // Store result
/*=================================================================================*/
LineNumber=51; //       set t="cadbd"
/*=================================================================================*/
	 sym_(0,"t","cadbd"); // Store result
/*=================================================================================*/
LineNumber=52; //       kill ^a
/*=================================================================================*/
	 strmove(gtmp,"");
	 strcat(gtmp,"^a");
	 {	unsigned char tmp14[STR_MAX],tmp15[STR_MAX];
		keyfix(gtmp);
		 _k=strlen(gtmp);
		 strmove(tmp14,gtmp);
		 Mglobal(GKILL,gtmp,tmp15);
		 while(1) {
		 _j=Mglobal(XNEXT,gtmp,tmp15);
		 if (_j&&strncmp(tmp14,gtmp,_k)==0) {
			 Mglobal(GKILL,gtmp,tmp15);
			 continue;
			 }
		break;
		 }
	 }
/*=================================================================================*/
LineNumber=53; //       write !,"Smith-Waterman Optimal Sequence Aligments between ",s," and ",t,!!
/*=================================================================================*/
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 fprintf(out_file[io],"\n"); hor[io]=0; ver[io]++;
	 hor[io]+=fprintf(out_file[io],"%s","Smith-Waterman Optimal Sequence Aligments between ");
	 if (sym_(11,"s",tmp0)==NULL) VariableNotFound(LineNumber);
	 hor[io]+=fprintf(out_file[io],"%s",tmp0);
	 hor[io]+=fprintf(out_file[io],"%s"," and ");
	 if (sym_(11,"t",tmp0)==NULL) VariableNotFound(LineNumber);
	 hor[io]+=fprintf(out_file[io],"%s",tmp0);
	 fprintf(out_file[io],"\n"); hor[io]=0; ver[io]++;
	 fprintf(out_file[io],"\n"); hor[io]=0; ver[io]++;
/*=================================================================================*/
LineNumber=54; //       do ^^Cost(s,t,$l(s),$l(t))
/*=================================================================================*/
	 _ArgCount=0;
	 { 	 if (sym_(11,"s",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"t",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"s",tmp2)==NULL) VariableNotFound(LineNumber);
	 _length(tmp3,tmp2,"");
	 if (sym_(11,"t",tmp4)==NULL) VariableNotFound(LineNumber);
	 _length(tmp5,tmp4,"");
	 strmove(_Arg0,tmp0); // Set up arguments
	 strmove(_Arg1,tmp1); // Set up arguments
	 strmove(_Arg2,tmp3); // Set up arguments
	 strmove(_Arg3,tmp5); // Set up arguments
	 _ArgCount=4;
	 strmove(tmp6,(char *)Cost("",_Arg0,_Arg1,_Arg2,_Arg3));
	 }
 /*=================================================================================*/
LineNumber=55; //       for i=0:1:$l(t) write ?(i+1*6),$j(i,5)
/*=================================================================================*/
	 strmove(for1_init,"0");
	 strmove(for1_incr,"1");
	 if (sym_(11,"t",tmp0)==NULL) VariableNotFound(LineNumber);
	 _length(tmp1,tmp0,"");
	 strmove(for1_lim,tmp1);
	 if (strchr(for1_incr,'.')) { 
	     for1D=atof(for1_incr);
	     for1F=for1D<0.0 ? 1 : 0;
	     for1T=1;
	     }
	 else { 
	     for1=atol(for1_incr); 
	     for1F=for1<0 ? 1 : 0;
	     for1T=0;
	     } /* increment */
	 for ( sym_(0,"i",for1_init);        /* initialize loop variable */
	       for1F ? numcomp(sym_(11,"i",_dummy),for1_lim)>=0: /* limit expression */
	                numcomp(sym_(11,"i",_dummy),for1_lim)<=0; /* select compare method */
	       for1T ? add3(sym_(11,"i",_dummy),for1D,_dummy), sym_(0,"i",_dummy)
	              : add1(sym_(11,"i",_dummy),for1,_dummy), sym_(0,"i",_dummy))
	 if (setjmp(for1J)==0) goto For1;
	 goto For1Exit; /* bypass block */
For1: /* FOR loop entry point */
	 do { 
	 LineNumber=55;
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 add1(tmp0,1,tmp1);
	 mult1(tmp1,6,tmp2);
	 if (hor[io]>atoi(tmp2)) {
		 fprintf(out_file[io],"\n");
		 for(i=0;i<atoi(tmp2);i++) fprintf(out_file[io]," ");
		 hor[io]=atoi(tmp2);
		ver[io]++;
		 }
	 else if (hor[io]<atoi(tmp2)) {
		 for(i=hor[io];i<atoi(tmp2);i++) fprintf(out_file[io]," ");
		 hor[io]=atoi(tmp2);
		 }
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 _justify(tmp1,tmp0,"5","-1");
	 hor[io]+=fprintf(out_file[io],"%s",tmp1);
	 } while (0); longjmp(for1J,99); /* FOR loop 1 close */
For1Exit:
/*=================================================================================*/
LineNumber=56; //       write !," "
/*=================================================================================*/
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 fprintf(out_file[io],"\n"); hor[io]=0; ver[io]++;
	 hor[io]+=fprintf(out_file[io],"%s"," ");
/*=================================================================================*/
LineNumber=57; //       for i=1:1:$l(t) write ?(i+1*6),$j($e(t,i,i),5)
/*=================================================================================*/
	 strmove(for2_init,"1");
	 strmove(for2_incr,"1");
	 if (sym_(11,"t",tmp0)==NULL) VariableNotFound(LineNumber);
	 _length(tmp1,tmp0,"");
	 strmove(for2_lim,tmp1);
	 if (strchr(for2_incr,'.')) { 
	     for2D=atof(for2_incr);
	     for2F=for2D<0.0 ? 1 : 0;
	     for2T=1;
	     }
	 else { 
	     for2=atol(for2_incr); 
	     for2F=for2<0 ? 1 : 0;
	     for2T=0;
	     } /* increment */
	 for ( sym_(0,"i",for2_init);        /* initialize loop variable */
	       for2F ? numcomp(sym_(11,"i",_dummy),for2_lim)>=0: /* limit expression */
	                numcomp(sym_(11,"i",_dummy),for2_lim)<=0; /* select compare method */
	       for2T ? add3(sym_(11,"i",_dummy),for2D,_dummy), sym_(0,"i",_dummy)
	              : add1(sym_(11,"i",_dummy),for2,_dummy), sym_(0,"i",_dummy))
	 if (setjmp(for2J)==0) goto For2;
	 goto For2Exit; /* bypass block */
For2: /* FOR loop entry point */
	 do { 
	 LineNumber=57;
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 add1(tmp0,1,tmp1);
	 mult1(tmp1,6,tmp2);
	 if (hor[io]>atoi(tmp2)) {
		 fprintf(out_file[io],"\n");
		 for(i=0;i<atoi(tmp2);i++) fprintf(out_file[io]," ");
		 hor[io]=atoi(tmp2);
		ver[io]++;
		 }
	 else if (hor[io]<atoi(tmp2)) {
		 for(i=hor[io];i<atoi(tmp2);i++) fprintf(out_file[io]," ");
		 hor[io]=atoi(tmp2);
		 }
	 if (sym_(11,"t",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp2)==NULL) VariableNotFound(LineNumber);
	 _extract(tmp3,tmp0,tmp1,tmp2);
	 _justify(tmp4,tmp3,"5","-1");
	 hor[io]+=fprintf(out_file[io],"%s",tmp4);
	 } while (0); longjmp(for2J,99); /* FOR loop 1 close */
For2Exit:
/*=================================================================================*/
LineNumber=58; //       write !
/*=================================================================================*/
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 fprintf(out_file[io],"\n"); hor[io]=0; ver[io]++;
/*=================================================================================*/
LineNumber=59; //       set i=-1
/*=================================================================================*/
	 mult1("1",-1,tmp0);
	 sym_(0,"i",tmp0); // Store result
/*=================================================================================*/
LineNumber=60; //       for  do
/*=================================================================================*/
	 while(1) {  /* Argumentless FOR */
	   goto Do_Block_Entry0; 
Do_Block_Return0:; /* return from argumentless do */
	 } 
	 goto Do_Block_Bypass0; /* by pass indented group */
Do_Block_Entry0: do { /* dotted indent entry */
/*=================================================================================*/
LineNumber=61; //       . set i=$n(^a(i))
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 g=2;
	 strmove(gtmp,"^a\x01");
	 strcatx(gtmp,tmp0);
	 strmove(tmp1,gtmp);
	 f=Mglobal(g,tmp1,tmp2); 
	 if (g==RETRIEVE && f==0)  VariableNotFound(LineNumber);
	 sym_(0,"i",tmp2); // Store result
/*=================================================================================*/
LineNumber=62; //       . if i="-1" break
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"-1")==0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 goto Do_Block_Bypass0; // break
	 }
/*=================================================================================*/
LineNumber=63; //       . write $j(i,3)," "
/*=================================================================================*/
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 _justify(tmp1,tmp0,"3","-1");
	 hor[io]+=fprintf(out_file[io],"%s",tmp1);
	 hor[io]+=fprintf(out_file[io],"%s"," ");
/*=================================================================================*/
LineNumber=64; //       . write:i>0 $e(s,i,i),":"
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (numcomp1(tmp0,0)>0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 if (atoi(tmp1)) { /* postconditional */
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 if (sym_(11,"s",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp1)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"i",tmp2)==NULL) VariableNotFound(LineNumber);
	 _extract(tmp3,tmp0,tmp1,tmp2);
	 hor[io]+=fprintf(out_file[io],"%s",tmp3);
	 hor[io]+=fprintf(out_file[io],"%s",":");
	 } /* post conditional */
/*=================================================================================*/
LineNumber=65; //       . set j=-1
/*=================================================================================*/
	 mult1("1",-1,tmp0);
	 sym_(0,"j",tmp0); // Store result
/*=================================================================================*/
LineNumber=66; //       . for  do
/*=================================================================================*/
	 while(1) {  /* Argumentless FOR */
	   goto Do_Block_Entry1; 
Do_Block_Return1:; /* return from argumentless do */
	 } 
	 goto Do_Block_Bypass1; /* by pass indented group */
Do_Block_Entry1: do { /* dotted indent entry */
/*=================================================================================*/
LineNumber=67; //       .. set j=$n(^a(i,j))
/*=================================================================================*/
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp1)==NULL) VariableNotFound(LineNumber);
	 g=2;
	 strmove(gtmp,"^a\x01");
	 strcatx(gtmp,tmp0);
	 strcatx(gtmp,tmp1);
	 strmove(tmp2,gtmp);
	 f=Mglobal(g,tmp2,tmp3); 
	 if (g==RETRIEVE && f==0)  VariableNotFound(LineNumber);
	 sym_(0,"j",tmp3); // Store result
/*=================================================================================*/
LineNumber=68; //       .. if j="-1" break
/*=================================================================================*/
	 if (sym_(11,"j",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (strcmp(tmp0,"-1")==0) strmove(tmp1,"1");
	    else strmove(tmp1,"0");
	 tpx=0;  /* Default $Test indicator */
	 if (numcomp1(tmp1,0)!=0) {  /* Test expression for True */
	 tpx=1;  /* Set $Test indicator True */
	 goto Do_Block_Bypass1; // break
	 }
/*=================================================================================*/
LineNumber=69; //       .. write ?(j+1*6),$j(^a(i,j),5)
/*=================================================================================*/
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 if (sym_(11,"j",tmp0)==NULL) VariableNotFound(LineNumber);
	 add1(tmp0,1,tmp1);
	 mult1(tmp1,6,tmp2);
	 if (hor[io]>atoi(tmp2)) {
		 fprintf(out_file[io],"\n");
		 for(i=0;i<atoi(tmp2);i++) fprintf(out_file[io]," ");
		 hor[io]=atoi(tmp2);
		ver[io]++;
		 }
	 else if (hor[io]<atoi(tmp2)) {
		 for(i=hor[io];i<atoi(tmp2);i++) fprintf(out_file[io]," ");
		 hor[io]=atoi(tmp2);
		 }
	 if (sym_(11,"i",tmp0)==NULL) VariableNotFound(LineNumber);
	 if (sym_(11,"j",tmp1)==NULL) VariableNotFound(LineNumber);
	 g=0;
	 strmove(gtmp,"^a\x01");
	 strcatx(gtmp,tmp0);
	 strcatx(gtmp,tmp1);
	 strmove(tmp2,gtmp);
	 f=Mglobal(g,tmp2,tmp3); 
	 if (g==RETRIEVE && f==0)  VariableNotFound(LineNumber);
	 _justify(tmp4,tmp3,"5","-1");
	 hor[io]+=fprintf(out_file[io],"%s",tmp4);
	 } while (0); /* dotted un-indent 1 */
	 goto Do_Block_Return1; /* return */
Do_Block_Bypass1:; 
/*=================================================================================*/
LineNumber=70; //       . write !
/*=================================================================================*/
	 if (out_file[io]==NULL) ErrorMessage("Write to input file",LineNumber);
	 fprintf(out_file[io],"\n"); hor[io]=0; ver[io]++;
	 } while(0); // dotted un-indent 0
	 goto Do_Block_Return0; // return 
Do_Block_Bypass0:; 
/*=================================================================================*/
LineNumber=71; //       halt 
/*=================================================================================*/
	 goto _epilogue;

//=================================================================================
_epilogue: tmp0[0]=0; tmp1[0]=0;  /*  Function Epilogue */
#ifndef _MSC_VER
	 Mltoa(getpid(),atmp);
	 cleanLocks("",atmp);
#endif
	 Mglobal(GCLOSE,tmp0,tmp1);  /* Close Globals */
#ifndef _MSC_VER
	 if (SymLoadFlg) SysDump((long) getppid()); /* dump symbol table */
#else
	 if (SymLoadFlg) SysDump((long) 999L); /* dump symbol table */
#endif
	 return 0; }  /* Terminate */
//=================================================================================



int _label_lookup(char *label) { return -1; }
char * _text_function(int disp) { return NULL; }

