************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 55 C ***<<<< RDD COMMON START >>>*** ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 55 C add multidimension cell address form P# 56 C and LDV[ndim,mxd1,mxd2,mxd3,...,mxdn] function to load dimension 57 C vector. d1...dn are cells in the P#<...> forms, or are literals 58 C where a literal is something starting with a digit. Accumulators can be 59 C used via their aliases as a0,b0,... if needed. 60 C The address will be computed as cell (d1*mxd2)+d2)*mxd3+d3... 61 integer*4 idvec(100),mxdims,mxdwk 62 common/idvc/mxdims,idvec,mxdwk 63 C ***<<<< RDD COMMON START >>>*** ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 2404 INTEGER*4 FNAM(25) 2405 character*4 fnmx(25) 2406 CHARACTER*1 FCHNM(4,25) 2407 equivalence(fnmx(1)(1:1),fnam(1),fchnm(1,1)) ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 2412 INTEGER*4 FNAM(26) 2413 character*4 fnmx(26) 2414 CHARACTER*1 FCHNM(4,26) 2415 equivalence(fnmx(1)(1:1),fnam(1),fchnm(1,1)) ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 2412 3 'RND ','PMT','PVL','AVE','CHS'/ 2413 C DATA I63/63/,I192/192/,I255/255/,I128/128/ ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 2420 3 'RND ','PMT','PVL','AVE','CHS','LDV'/ 2421 C DATA I63/63/,I192/192/,I255/255/,I128/128/ ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 4933 IF(INDEXF.NE.1)GOTO 100 ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 4941 integer*4 idvec(100),mxdims,mxdwk 4942 common/idvc/mxdims,idvec,mxdwk 4943 IF(INDEXF.NE.1)GOTO 100 ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 5241 RETURN ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 5251 if(indexf.ne.27)goto 2700 5252 C LDV Load Dimension Vector; sets up for multidimensionally addressed 5253 C cells (available in case someone WANTS really badly to address a 5254 C really large dimensional matrix...) 5255 idvec(mxdwk)=var 5256 mxdwk=min0(100,mxdwk+1) 5257 mxdims=mxdwk-1 5258 ac=mxdwk-1 5259 acx=ac 5260 return 5261 2700 continue 5262 RETURN ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 5575 IF(INDEXF.LT.1.OR.INDEXF.GT.26)GOTO 1000 5576 C HERE IF A FUNCTION OR AN IF STMT (FORMAT= IF varRELvarstmt|else-stmt) ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 5596 IF(INDEXF.LT.1.OR.INDEXF.GT.27)GOTO 1000 5597 C HERE IF A FUNCTION OR AN IF STMT (FORMAT= IF varRELvarstmt|else-stmt) ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 5764 C USE AND TO DELIMIT FUNCTION ARGS. ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 5785 C LDV 27 Load multidimension vector 5786 C USE AND TO DELIMIT FUNCTION ARGS. ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 5768 IF(INDEXF.LT.1.OR.INDEXF.GT.26)GOTO 1000 5769 C HERE IF A FUNCTION OR AN IF STMT (FORMAT= IF varRELvarstmt|else-stmt) ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 5790 IF(INDEXF.LT.1.OR.INDEXF.GT.27)GOTO 1000 5791 C HERE IF A FUNCTION OR AN IF STMT (FORMAT= IF varRELvarstmt|else-stmt) ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 7054 INTEGER*4 FNAM(26) 7055 character*4 fnmx(26) 7056 equivalence(fnmx(1)(1:1),fnam(1)) 7057 CHARACTER*1 FCHNM(4,26) 7058 EQUIVALENCE(FNAM(1),FCHNM(1,1)) ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 7076 INTEGER*4 FNAM(27) 7077 character*4 fnmx(27) 7078 equivalence(fnmx(1)(1:1),fnam(1)) 7079 CHARACTER*1 FCHNM(4,27) 7080 EQUIVALENCE(FNAM(1),FCHNM(1,1)) ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 7062 3 'RND ','PMT','PVL','AVE','CHS','ATM'/ 7063 INDEXF=0 ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 7084 3 'RND ','PMT','PVL','AVE','CHS','ATM','LDV'/ 7085 INDEXF=0 ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 7070 DO 1 N1=1,26 7071 DO 2 N2=1,3 ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 7092 DO 1 N1=1,27 7093 DO 2 N2=1,3 ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 8916 REAL*8 AC,SS,CTR,ACX 8917 KIRR=0 8918 SS=0. ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 8938 integer*4 idvec(100),mxdims 8939 integer*4 mxdwk 8940 common/idvc/mxdims,idvec,mxdwk 8941 REAL*8 AC,SS,CTR,ACX 8942 KIRR=0 8943 mxdwk=1 8944 SS=0. ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 9158 DIMENSION LINE(LEND) ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 9184 integer*4 idvec(100),mxdims 9185 integer*4 mxdwk 9186 common/idvc/mxdims,idvec,mxdwk 9187 DIMENSION LINE(LEND) ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 9368 if(line(lstchr).eq.'_')iundr=1 ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 9397 C if we see p#< go treat multidim case addresses 9398 ivvv=0 9399 if(line(lstchr).eq.'<')goto 6120 9400 ivvv=1 9401 if(line(lstchr).eq.'|')goto 6120 9402 if(line(lstchr).eq.'_')iundr=1 ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 9539 END ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 9573 6120 continue 9574 C handle P# cells using dimension vector 9575 C also P#|d1;d2;d3;..dn> will be relative to current cell 9576 C so that the P# for will be absolute, and the P#|d;d;d;d> form 9577 C will be relative to the current cell. 9578 id1=0 9579 id2=0 9580 c use iii for index into dimension vector 9581 iii=1 9582 c use kkk for accumulator for cell address 9583 c default to display row (i.e., past the accumulators etc.) 9584 kkk=Mcols+1 9585 CALL REFLEC(PCOL,PROW,IRX) 9586 if(ivvv.eq.1)kkk=irx 9587 kkkscl=1 9588 kkkbase=kkk 9589 kkk=0 9590 ivalid=1 9591 lstchr=lstchr+1 9592 6121 continue 9593 csm=ichar(line(lstchr)) 9594 if(line(lstchr).eq.'>')goto 6130 9595 if(csm.lt.48)goto 6130 9596 if(csm.gt.57)goto 6122 9597 c look for literal 9598 C now get the second numeric string and bump LSTCHR past it. 9599 NUM=0 9600 CALL GN(LSTCHR,LEND,NUM,LINE) 9601 kkk=kkk+num*kkkscl 9602 kkkscl=kkkscl*idvec(iii) 9603 iii=iii+1 9604 c accept any delimiter for literal numbers 9605 lstchr=lstchr+1 9606 goto 6126 9607 6122 continue 9608 c look for cell name 9609 c then get value if possible 9610 if(line(lstchr).eq.'>')goto 6130 9611 c 9612 k=lstchr 9613 kk=lstchr+20 9614 klstc=kk 9615 c 9616 c Call copy (without this mod) of varscn subroutine to do the examining of 9617 c variable names, so we don't wind up recursively calling ourselves. 9618 c 9619 call varsc2(line,k,kk,klstc,kr1,kr2,kvld) 9620 if(kvld.eq.0)goto 6140 9621 c try normal processing if this doesn't look like regular variables 9622 c accept any delimiter that works for cellnames too. 9623 lstchr=klstc+1 9624 c Get the values of the variables and store as integers 9625 call xvblgt(kr1,kr2,xac) 9626 c use integer part of cell value. 9627 k=xac 9628 c note if k=0 for initial dimensions we do not grow them... 9629 c could change this but it seems useful for the relative stuff. 9630 kkk=kkk+k*kkkscl 9631 kkkscl=kkkscl*idvec(iii) 9632 iii=iii+1 9633 c 9634 6126 continue 9635 c common operation... 9636 if(iii.le.mxdims)goto 6121 9637 6130 continue 9638 c convert cell index in kkk back to col and row 9639 kkk=kkk+kkkbase 9640 kkk=max0(0,kkk) 9641 c (wonder if this has id1, id2 backwards...?) 9642 id1=MOD(kkk,MCols) 9643 id2=((kkk-id1)/MCols)+1 9644 return 9645 6140 continue 9646 ivalid=0 9647 return 9648 END ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 13008 IF(INDEXF.EQ.6.OR.INDEXF.LT.1.OR.INDEXF.GT.26)GOTO 12202 13009 C NOW KNOW THERE IS A FUNCTION THERE, SO HANDLE IT. ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 13117 IF(INDEXF.EQ.6.OR.INDEXF.LT.1.OR.INDEXF.GT.27)GOTO 12202 13118 C NOW KNOW THERE IS A FUNCTION THERE, SO HANDLE IT. ************ ************ File DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4 16282 CALL SWRT('V27-03C',7) 16283 CALL UVT100(13,0,0) ****** File DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14 16391 CALL SWRT('V27-05B',7) 16392 CALL UVT100(13,0,0) ************ Number of difference sections found: 17 Number of difference records found: 125 DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DUA1:[ANALY.ANALYRIM]ARV4V5.DIFF;6- DUA1:[ANALY.ANALYRIM]ANALYRIMV4.FOR;4- DUA1:[ANALY.ANALYRIM]ANALYRIMV5.FOR;14