| [n,ix,ifmt,idigit]=ivout(n,ix,ifmt,idigit); |
function [n,ix,ifmt,idigit]=ivout(n,ix,ifmt,idigit);
persistent i j k1 k2 lout ndigit ;
if isempty(i), i=0; end;
if isempty(j), j=0; end;
if isempty(k1), k1=0; end;
if isempty(k2), k2=0; end;
if isempty(lout), lout=0; end;
if isempty(ndigit), ndigit=0; end;
%***BEGIN PROLOGUE IVOUT
%***SUBSIDIARY
%***PURPOSE Subsidiary to SPLP
%***LIBRARY SLATEC
%***TYPE INTEGER (IVOUT-I)
%***AUTHOR Hanson, R. J., (SNLA)
% Wisniewski, J. A., (SNLA)
%***DESCRIPTION
%
% INTEGER VECTOR OUTPUT ROUTINE.
%
% INPUT..
%
% N,IX(*) PRINT THE INTEGER ARRAY IX(I),I=1,...,N, ON OUTPUT
% UNIT LOUT. THE HEADING IN THE FORTRAN FORMAT
% STATEMENT IFMT(*), DESCRIBED BELOW, IS PRINTED AS A FIRST
% STEP. THE COMPONENTS IX(I) ARE INDEXED, ON OUTPUT,
% IN A PLEASANT FORMAT.
% IFMT(*) A FORTRAN FORMAT STATEMENT. THIS IS PRINTED ON OUTPUT
% UNIT LOUT WITH THE VARIABLE FORMAT FORTRAN STATEMENT
% WRITE(LOUT,IFMT)
% IDIGIT PRINT UP TO ABS(IDIGIT) DECIMAL DIGITS PER NUMBER.
% THE SUBPROGRAM WILL CHOOSE THAT INTEGER 4,6,10 OR 14
% WHICH WILL PRINT AT LEAST ABS(IDIGIT) NUMBER OF
% PLACES. IF IDIGIT.LT.0, 72 PRINTING COLUMNS ARE UTILIZED
% TO WRITE EACH LINE OF OUTPUT OF THE ARRAY IX(*). (THIS
% CAN BE USED ON MOST TIME-SHARING TERMINALS). IF
% IDIGIT.GE.0, 133 PRINTING COLUMNS ARE UTILIZED. (THIS CAN
% BE USED ON MOST LINE PRINTERS).
%
% EXAMPLE..
%
% PRINT AN ARRAY CALLED (COSTS OF PURCHASES) OF LENGTH 100 SHOWING
% 6 DECIMAL DIGITS PER NUMBER. THE USER IS RUNNING ON A TIME-SHARING
% SYSTEM WITH A 72 COLUMN OUTPUT DEVICE.
%
% DIMENSION ICOSTS(100)
% N = 100
% IDIGIT = -6
% CALL IVOUT(N,ICOSTS,'(''1COSTS OF PURCHASES'')',IDIGIT)
%
%***SEE ALSO SPLP
%***ROUTINES CALLED I1MACH
%***REVISION HISTORY (YYMMDD)
% 811215 DATE WRITTEN
% 890531 Changed all specific intrinsics to generic. (WRB)
% 891214 Prologue converted to Version 4.0 format. (BAB)
% 900402 Added TYPE section. (WRB)
% 910403 Updated AUTHOR section. (WRB)
%***end PROLOGUE IVOUT
ix_shape=size(ix);ix=reshape(ix,1,[]);
%
% GET THE UNIT NUMBER WHERE OUTPUT WILL BE WRITTEN.
%***FIRST EXECUTABLE STATEMENT IVOUT
j = 2;
[lout ,j]=i1mach(j);
disp({});
if( n<=0 )
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
end;
ndigit = fix(idigit);
if( idigit==0 )
ndigit = 4;
end;
if( idigit<0 )
%
ndigit = fix(-idigit);
if( ndigit<=4 )
%
for k1 = 1 : 10: n ;
k2 = fix(min(n,k1+9));
for i=(k1):(k2), writef(lout,[repmat(' ',1,1),'%4i',' - ','%4i',repmat([repmat(' ',1,1),'%5i'] ,1,20) ' \n'], k1 , k2 ,ix(i)); end;
end; k1 = fix(n +1);
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
%
elseif( ndigit<=6 ) ;
%
for k1 = 1 : 7: n ;
k2 = fix(min(n,k1+6));
for i=(k1):(k2), writef(lout,[repmat(' ',1,1),'%4i',' - ','%4i',repmat([repmat(' ',1,1),'%7i'] ,1,15) ' \n'], k1 , k2 ,ix(i)); end;
end; k1 = fix(n +1);
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
%
elseif( ndigit>10 ) ;
%
for k1 = 1 : 3: n ;
k2 = fix(min(n,k1+2));
for i=(k1):(k2), writef(lout,[repmat(' ',1,1),'%4i',' - ','%4i',repmat([repmat(' ',1,1),'%15i'] ,1,7) ' \n'], k1 , k2 ,ix(i)); end;
end; k1 = fix(n +1);
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
else;
%
for k1 = 1 : 5: n ;
k2 = fix(min(n,k1+4));
for i=(k1):(k2), writef(lout,[repmat(' ',1,1),'%4i',' - ','%4i',repmat([repmat(' ',1,1),'%11i'] ,1,10) ' \n'], k1 , k2 ,ix(i)); end;
end; k1 = fix(n +1);
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
end;
%
elseif( ndigit<=4 ) ;
%
for k1 = 1 : 20: n ;
k2 = fix(min(n,k1+19));
for i=(k1):(k2), writef(lout,[repmat(' ',1,1),'%4i',' - ','%4i',repmat([repmat(' ',1,1),'%5i'] ,1,20) ' \n'], k1 , k2 ,ix(i)); end;
end; k1 = fix(n +1);
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
%
elseif( ndigit<=6 ) ;
%
for k1 = 1 : 15: n ;
k2 = fix(min(n,k1+14));
for i=(k1):(k2), writef(lout,[repmat(' ',1,1),'%4i',' - ','%4i',repmat([repmat(' ',1,1),'%7i'] ,1,15) ' \n'], k1 , k2 ,ix(i)); end;
end; k1 = fix(n +1);
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
%
elseif( ndigit>10 ) ;
%
for k1 = 1 : 7: n ;
k2 = fix(min(n,k1+6));
for i=(k1):(k2), writef(lout,[repmat(' ',1,1),'%4i',' - ','%4i',repmat([repmat(' ',1,1),'%15i'] ,1,7) ' \n'], k1 , k2 ,ix(i)); end;
end; k1 = fix(n +1);
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
else;
%
for k1 = 1 : 10: n ;
k2 = fix(min(n,k1+9));
for i=(k1):(k2), writef(lout,[repmat(' ',1,1),'%4i',' - ','%4i',repmat([repmat(' ',1,1),'%11i'] ,1,10) ' \n'], k1 , k2 ,ix(i)); end;
end; k1 = fix(n +1);
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
return;
end;
%format (1X,i4,' - ',i4,20(1X,i5));
%format (1X,i4,' - ',i4,15(1X,i7));
%format (1X,i4,' - ',i4,10(1X,i11));
%format (1X,i4,' - ',i4,7(1X,i15));
ix_shape=zeros(ix_shape);ix_shape(:)=ix(1:numel(ix_shape));ix=ix_shape;
end
%DECK J4SAVE
|
|