<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:'Courier New',monospace;" dir="ltr">
<p>Walt:</p>
<p><br>
</p>
<p>After expansion, <br>
</p>
<p>  n[i] := scantokens aa;<br>
</p>
<p>becomes<br>
</p>
<p>  n[i] := <span>12 34 45 1 0  234</span>;</p>
<p>which is invalid.</p>
<p><br>
</p>
<p>You should arrange to either (1) split off the numbers in</p>
<p>aa one at a time, or (2) create mydata with a separate line<br>
</p>
<p>for each number and read it one line at a time.</p>
<p><br>
</p>
Cheers,<br>
<br>
<div id="Signature">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px"><font size="3" face="Courier New">Daniel H. Luecking [luecking@uark.edu]
<br>
Department of Mathematical Sciences<br>
1 University of Arkansas<br>
Fayetteville, AR, USA 72701-1201</font><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> metapost <metapost-bounces@tug.org> on behalf of Walt Burkhard <burkhard@cs.ucsd.edu><br>
<b>Sent:</b> Friday, April 21, 2017 6:13 PM<br>
<b>To:</b> Metapost List<br>
<b>Subject:</b> [metapost] scantokens</font>
<div> </div>
</div>
<div>
<div dir="ltr">
<div class="gmail_default" style="font-family:garamond,serif; font-size:large">
<div class="gmail_default">Hello Fellow MetaPosters,</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default">I am using the scantokens command and have observed some rather weird standard output remarks. ---</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default">Here is my program ---</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default">string aa ;</div>
<div class="gmail_default">numeric n[] , i , j , len ;</div>
<div class="gmail_default">numeric wide ;</div>
<div class="gmail_default">%%  mydata contains one sequence of numbers " 12 34 45 1 0  234"</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default">vardef mydigits ( expr nn ) =</div>
<div class="gmail_default">  numeric w ;</div>
<div class="gmail_default">  if (nn > 99) and (nn < 1000) :</div>
<div class="gmail_default">    w := 3 ;</div>
<div class="gmail_default">    w</div>
<div class="gmail_default">  elseif (nn > 9) and (nn < 100) :</div>
<div class="gmail_default">    w := 2 ;</div>
<div class="gmail_default">    w</div>
<div class="gmail_default">  else :</div>
<div class="gmail_default">    w := 1 ;</div>
<div class="gmail_default">    w</div>
<div class="gmail_default">  fi</div>
<div class="gmail_default">enddef ;</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default">aa := readfrom ( "mydata" ) ;</div>
<div class="gmail_default">message ("aa "&aa ) ;</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default">for i = 0 upto 5 :</div>
<div class="gmail_default">  len := length aa ;</div>
<div class="gmail_default">  spaces := 0 ;</div>
<div class="gmail_default">  for j = 0 upto len :</div>
<div class="gmail_default">    if substring (j,j+1) of aa = " " :  spaces := spaces+1 ; else : fi exitif true ; fi ;</div>
<div class="gmail_default">  endfor ;</div>
<div class="gmail_default">  aa := substring (spaces,len) of aa ;</div>
<div class="gmail_default">  n[i] := scantokens aa ;</div>
<div class="gmail_default">  wide :=  mydigits ( n[i] ) ;</div>
<div class="gmail_default">  len := length aa ;</div>
<div>
<div>  aa := substring (wide,len) of aa ;</div>
<div>endfor ;</div>
<div><br>
</div>
<div>for i = 0 upto 5 :</div>
<div>  message ( "n["&decimal i&"] "&decimal n[i] ) ;</div>
<div>endfor ;</div>
<div><br>
</div>
<div>end</div>
<div><br>
</div>
<div><br>
</div>
<div>AND here is the mydata file ---</div>
<div><br>
</div>
<div> 12 34 45 1 0  234</div>
<div><br>
</div>
<div>The scantokens commands seem to want to indicate that there is more to read than just the next number!</div>
<div><br>
</div>
<div>Here is a portion of the output I obtain ---</div>
<div><br>
</div>
<div>This is MetaPost, version 1.9991 (TeX Live 2016) (kpathsea version 6.2.2)</div>
<div>(/usr/local/texlive/2016/texmf-dist/metapost/base/<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__mpost.mp&d=DwMFaQ&c=7ypwAowFJ8v-mw8AB-SdSueVQgSDL4HiiSaLK01W8HA&r=TC6doj34eEZMeTCOMVYeIK4ttwYpTurqDpMOi43sP18&m=abeM8ifl3acGToYAZzBoTJxhOKzeHVPINt2QhoStkYU&s=qWEXXzhF1oqlzQC88L7WnGB_k10FjyBQUf-ed2VmV4E&e=">mpost.mp</a></div>
<div>(/usr/local/texlive/2016/texmf-dist/metapost/base/<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__plain.mp&d=DwMFaQ&c=7ypwAowFJ8v-mw8AB-SdSueVQgSDL4HiiSaLK01W8HA&r=TC6doj34eEZMeTCOMVYeIK4ttwYpTurqDpMOi43sP18&m=abeM8ifl3acGToYAZzBoTJxhOKzeHVPINt2QhoStkYU&s=bzeG1FO7B6JSDFzqFBYQxs6AvZwpxA97bwS3Y5zQlk4&e=">plain.mp</a></div>
<div>Preloading the plain mem file, version 1.005) ) (./<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__mytest.mp&d=DwMFaQ&c=7ypwAowFJ8v-mw8AB-SdSueVQgSDL4HiiSaLK01W8HA&r=TC6doj34eEZMeTCOMVYeIK4ttwYpTurqDpMOi43sP18&m=abeM8ifl3acGToYAZzBoTJxhOKzeHVPINt2QhoStkYU&s=-O3lzwAypZSOmpyVVf1gSe5NMlTV6xkuFZdrBrN7-yY&e=">mytest.mp</a></div>
<div>aa  12 34 45 1 0  234</div>
<div>! Extra tokens will be flushed.</div>
<div><to be read again></div>
<div>                   34</div>
<div><scantokens> 12 34</div>
<div>                   45 1 0  234</div>
<div><to be read again></div>
<div>                   ;</div>
<div><for(0)> ...s,len)of.aa;n[(EXPR0)]:=scantokens.aa;</div>
<div>                                                  wide:=mydigits(n[(EXPR0)])...</div>
<div>l.34 endfor</div>
<div>            ;</div>
<div><br>
</div>
<div>MetaPost interrupts the processing at this point, but if an "r" is entered from the keyboard, MetaPost continues</div>
<div>with much more similar output and then finally ---</div>
<div><br>
</div>
</div>
<div>
<div>n[0] 12</div>
<div>n[1] 34</div>
<div>n[2] 45</div>
<div>n[3] 1</div>
<div>n[4] 0</div>
<div>n[5] 234 )</div>
<div><br>
</div>
<div>Is there a way to avoid these extra standard output remarks?</div>
<div><br>
</div>
<div><br>
</div>
<div>Many thanks in advance.</div>
<div><br>
</div>
<div>Walt</div>
<div>ps    The zipped file jkljkl.zip contains both <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__mytest.mp&d=DwMFaQ&c=7ypwAowFJ8v-mw8AB-SdSueVQgSDL4HiiSaLK01W8HA&r=TC6doj34eEZMeTCOMVYeIK4ttwYpTurqDpMOi43sP18&m=abeM8ifl3acGToYAZzBoTJxhOKzeHVPINt2QhoStkYU&s=-O3lzwAypZSOmpyVVf1gSe5NMlTV6xkuFZdrBrN7-yY&e=">
mytest.mp</a> and mydata.</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>