<!---  Produced by FS2LSL (Flash Scratch to LSL),  John K. Bennett,  ATLAS Institute, University of Colorado at Boulder,  http://redwood.colorado.edu/jkb/fs2lsl/  -->
<program>
  <globvars>
    <stack x="10" y="5">
      <block spec="Declare Global Variables"/>
      <block spec="global comment: %s">
        <blockarg val="Listing 1.7: Function Form (embelished)"/>
      </block>
    </stack>
  </globvars>
  <functions>
    <func>
      <stack x="14" y="85">
        <block funcSpec="integer saySomeTimes(string message)"/>
        <block spec="comment: %s">
          <blockarg val="// say something up to 5 times"/>
        </block>
        <block spec="comment: %s">
          <blockarg val="// return how many times message is said"/>
        </block>
        <block spec="create local var: %g type: %m value: %t">
          <blockarg val="count"/>
          <blockarg val="integer"/>
          <block spec=" %n %P %n ">
            <blockarg val="1"/>
            <blockarg val="+"/>
            <block spec="random #: 0 to %n">
              <blockarg val="5"/>
            </block>
          </block>
        </block>
        <block spec="create local var: %g type: %m value: %t">
          <blockarg val="i"/>
          <blockarg val="integer"/>
          <blockarg val="none"/>
        </block>
        <block spec="for ( %s ; %s ; %n )">
          <blockarg val="i = 0"/>
          <block spec=" %n %Q %n ">
            <block varName="i" varScope="local"/>
            <blockarg val="&lt;"/>
            <block varName="count" varScope="local"/>
          </block>
          <blockarg val="i++"/>
          <stack>
            <block spec="say to owner %s">
              <block varName="message" varScope="proc"/>
            </block>
          </stack>
        </block>
        <block spec="return( %n )">
          <block varName="count" varScope="local"/>
        </block>
      </stack>
    </func>
  </functions>
  <states>
    <state>
      <stacks>
        <stack x="16" y="339">
          <block spec="state %s">
            <blockarg val="default"/>
          </block>
          <block spec="when I enter this state"/>
          <block spec="comment: %s">
            <blockarg val="Say the message, then the returned count."/>
          </block>
          <block spec="say to owner %s">
            <block spec="%s as a %m">
              <block fCallArgSpec="saySomeTimes( %s )" funcName="saySomeTimes" numArgs="1">
                <blockarg val="&quot;Starting Up&quot;"/>
              </block>
              <blockarg val="string"/>
            </block>
          </block>
        </stack>
        <stack x="27" y="479">
          <block spec="when I am touched"/>
          <block spec="comment: %s">
            <blockarg val="Say the message, then the returned count."/>
          </block>
          <block spec="say to owner %s">
            <block spec="%s as a %m">
              <block fCallArgSpec="saySomeTimes( %s )" funcName="saySomeTimes" numArgs="1">
                <blockarg val="&quot;Touched&quot;"/>
              </block>
              <blockarg val="string"/>
            </block>
          </block>
        </stack>
      </stacks>
    </state>
  </states>
</program>