%%
%% This is file `struktex.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% struktex.dtx  (with options: `struktex')
%% 
%% Copyright (C) 1989-2010 by Jobst Hoffmann.  All rights reserved.
%% 
%% IMPORTANT COPYRIGHT NOTICE:
%% 
%% No other permissions to copy or distribute this file in any form
%% are granted and in particular NO PERMISSION to modify its contents.
%% 
%% You are NOT ALLOWED to change this file.
%% 
%% Please address error reports and any problems in case of UNCHANGED versions
%% to
%%         j.hoffmann_(at)_fh-aachen.de
\NeedsTeXFormat{LaTeX2e}[1999/12/01]{%
  \def\@svn@ $#1Date: #2-#3-#4 #5$$#6Revision: #7$ {%
  \ProvidesPackage{struktex}[#2/#3/#4 v#7 Nassi Shneiderman Charts (Jobst Hoffmann)]}
  \@svn@ $Date: 2010-09-21 21:32:08 +0200 (Di, 21 Sep 2010) $$Revision: 133 $ %
}
%%
\RequirePackage{ifthen}
\RequirePackage{struktxf}
\RequirePackage{struktxp}
\newcommand{\dbgString@nss}[1]{\typeout{===> dbg String:\space#1}}
\newcommand{\dbgCount@nss}[2][]{%
  \def\argI{#1}%  ^^A dbg
  \typeout{===> dbg Count:\space\space\ifx\argI\empty\else(#1)\space\fi\string#2 = \the#2}}
\newcommand{\dbgCoord@nss}[3][]{%
  \def\argI{#1}%  ^^A dbg
  \typeout{===> dbg Coord:\space\space\ifx\argI\empty\else(#1)\space\fi(\string#2,
    \string#3) = (\the#2, \the#3)}}%  ^^A dbg
\newcommand{\dbgMark@nss}[3][]{%
  \def\argI{#1}%  ^^A dbg
  \put(#2,#3){\makebox(0,0)[cc]{\ifx\argI\empty$\bullet$\else#1\fi}}}% ^^A dbg
\newboolean{curves}
\newboolean{emlines}
\newboolean{pictIIe}
\newboolean{anygradient}
\DeclareOption{curves}{%
    \setboolean{anygradient}{true}
    \setboolean{curves}{true}
    \setboolean{emlines}{false}
    \setboolean{pictIIe}{false}
}
\DeclareOption{emlines}{%
    \setboolean{anygradient}{true}
    \setboolean{curves}{false}
    \setboolean{emlines}{true}
    \setboolean{pictIIe}{false}
}
\DeclareOption{pict2e}{%
    \setboolean{anygradient}{true}
    \setboolean{curves}{false}
    \setboolean{emlines}{false}
    \setboolean{pictIIe}{true}
}
\DeclareOption{english}{%
  \def\declarationtitlename@nss{providing memory space:}%
  \def\pTruename@nss{true}%
  \def\pFalsename@nss{false}%
}
\DeclareOption{german}{%
  \def\declarationtitlename@nss{Speicherplatz bereitstellen:}
  \def\pTruename@nss{WAHR}%
  \def\pFalsename@nss{FALSCH}%
}
\DeclareOption{ngerman}{%
  \def\declarationtitlename@nss{Speicherplatz bereitstellen:}
  \def\pTruename@nss{WAHR}%
  \def\pFalsename@nss{FALSCH}%
}
\newboolean{verification}
\DeclareOption{verification}%
{%
    \setboolean{verification}{true}
}
\newboolean{filler}
\setboolean{filler}{true}
\DeclareOption{nofiller}%
{%
    \setboolean{filler}{false}
}
\let\ifdraft@nss\iffalse
\let\iffinal@nss\iftrue
\DeclareOption{draft}%
{%
  \let\ifdraft@nss\iftrue
  \let\iffinal@nss\iffalse
}
\DeclareOption{final}%
{%
  \let\ifdraft@nss\iffalse
  \let\iffinal@nss\iftrue
}
\ProcessOptions*\relax
\ifcurves%
    \RequirePackage{curves}
\else\ifemlines
    \RequirePackage{emlines2}
\else\ifpictIIe
    \RequirePackage{pict2e}
\fi\fi\fi
\def\StrukTeX{S\kern-.05emt\kern-.05em\raise.5ex\hbox{r}%
              \kern-.1667emu\kern-.05em\lower.5ex\hbox{k}%
              \kern-.2emT\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}
\newdimen\savelength@nss
\newcount\gx@nss \newcount\gy@nss \newcount\gsize@nss
\countdef\param@nss=199
\countdef\x@nss=220     \countdef\y@nss=221      \countdef\xsize@nss=222
\countdef\ydepth@nss=223
\countdef\xx@nss=224    \countdef\yy@nss=225
\countdef\tempx@nss=226 \countdef\tempxx@nss=227
\countdef\tempy@nss=229 \countdef\tempyy@nss=230
\ifpictIIe%
     \countdef\tempxxx@nss=228  \countdef\tempyyy@nss=231
\fi
\newbox\TextBox@nss \newdimen\TextBoxHt@nss
\DeclareMathSymbol\varnothing{\mathord}{AMSb}{"3F}
\let\emptyset\varnothing
\def\filler@nss{%
    \iffiller\ensuremath{\emptyset}\fi%
}
\def\c@nter@nss{%
    \leftskip=0pt plus 2em \rightskip=\leftskip \parfillskip=0pt
    \spaceskip=.333em \xspaceskip=.5em
    \pretolerance=9999 \tolerance=9999
    \hyphenpenalty=9999 \exhyphenpenalty=9999%
}
\def\Position@nss{}%
\newcommand{\PositionNSS}[1]{%
    \def\Position@nss{#1}%
}
\def\struktogramm(#1,#2){%
    \let\ifthenelse=\ifthenelse@nss%
    \let\ifend=\ifend@nss%
    \ifdraft@nss\let\struktogramm@nss=\struktogramm@Proof\fi%
    \@ifnextchar [{\struktogramm@nss(#1,#2)}{\struktogramm@nss(#1,#2)[]}%
}
\def\endstruktogramm{%
            \endstr@kt%
        \end{picture}%
    \end{minipage}%
    \setlength{\unitlength}{\savelength@nss}%
}
\def\struktogramm@NoProof(#1,#2)[#3]{%
    \def\next{#3}
    \setlength{\savelength@nss}{\unitlength}
    \setlength{\unitlength}{0.001mm}
    \begin{minipage}[\Position@nss]{#1mm}
        \ifx\next\empty\else #3\\[\smallskipamount]\fi%
        \begin{picture}(#1000,#2000)%
            \str@kt{0}{#2000}{#1000}%
}
\def\struktogramm@Proof(#1,#2)[#3]{%
    \def\next{#3}%
    \setlength{\savelength@nss}{\unitlength}%
    \setlength{\unitlength}{0.001mm}%
    \begin{minipage}[\Position@nss]{#1mm}%
        \ifx\next\empty\else #3\\[\smallskipamount]\fi%
        \begin{picture}(#1000,#2000)%
            \put(0,0){\makebox(0,0)[cc]{$\bullet$}}%
            \put(0,#2000){\makebox(0,0)[cc]{$\bullet$}}%
            \put(#1000,0){\makebox(0,0)[cc]{$\bullet$}}%
            \put(#1000,#2000){\makebox(0,0)[cc]{$\bullet$}}%
            \str@kt{0}{#2000}{#1000}%
}
\def\sProofOn%
{%
    \let\struktogramm@nss=\struktogramm@Proof%
}
\def\sProofOff%
{%
    \let\struktogramm@nss=\struktogramm@NoProof%
}
\let\struktogramm@nss=\struktogramm@NoProof%
\def\openstrukt#1#2%
{%
    \setlength{\savelength@nss}{\unitlength}
    \setlength{\unitlength}{0.001mm}
    \begin{picture}(#1000,#2000)
        \str@kt{0}{#2000}{#1000}%
}
\def\closestrukt%
{%
        \endstr@kt
    \end{picture}
    \setlength{\unitlength}{\savelength@nss}%
}
\def\getoption{\@ifnextchar [{\getnum}{\param@nss=0\next}}
\def\getnum[#1]{\param@nss=#1\next}
\def\str@kt#1#2#3{%
  \dbgString@nss{Beginn \string\str@kt}
  \global\gx@nss=#1\global\gy@nss=#2\global\gsize@nss=#3%
  \begingroup%
    \x@nss=\gx@nss\y@nss=\gy@nss\xsize@nss=\gsize@nss%
    \dbgString@nss{rectangle size}
    \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss}
    \dbgCount@nss[Breite]{\xsize@nss}
}
\def\endstr@kt{%
    \global\gy@nss=\y@nss%
  \endgroup%
  \ydepth@nss=\gy@nss%
  \dbgString@nss{Ende \string\str@kt}
}
\def\set@nss#1#2{%
  \dbgString@nss{Beginn \string\set@nss}
  \setbox\TextBox@nss=\hbox{#1}%
  \tempxx@nss=\xsize@nss\advance\tempxx@nss by-#2%
  \ifdim\wd\TextBox@nss>\tempxx@nss\unitlength%
    \setbox\TextBox@nss=\vbox{\hsize=\tempxx@nss\unitlength\noindent#1}%
  \else
    \setbox\TextBox@nss=\hbox to \tempxx@nss\unitlength{#1\hss}%
  \fi%
}
\def\block@nss#1#2{%
  \dbgString@nss{Beginn \string\block@nss}
  \tempy@nss=#1%
  \dbgCount@nss{\ydepth@nss}
  \TextBoxHt@nss=\ht\TextBox@nss%
  \advance\TextBoxHt@nss by\dp\TextBox@nss%
  \advance\TextBoxHt@nss by 2mm%
  \dbgCount@nss[original]{\TextBoxHt@nss}
  \ifdim\TextBoxHt@nss<\tempy@nss\unitlength%
    \TextBoxHt@nss=\tempy@nss\unitlength%
  \fi%
  \dbgCount@nss[korrigiert]{\TextBoxHt@nss}
  \TextBoxHt@nss=0.00536\TextBoxHt@nss%
  \dbgCount@nss[skaliert]{\TextBoxHt@nss}
  \ydepth@nss=\TextBoxHt@nss\advance\y@nss by-\ydepth@nss%
  \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss}
  \dbgCoord@nss[Breite, Hoehe]{\xsize@nss}{\ydepth@nss}
  \ifx#21%
    \put(\x@nss,\y@nss){%
        \framebox(\xsize@nss,\ydepth@nss){\box\TextBox@nss}%
    }%
  \else\ifx#20%
      \put(\x@nss,\y@nss){%
          \makebox(\xsize@nss,\ydepth@nss){\box\TextBox@nss}%
      }%
  \else%
      \advance\y@nss by \ydepth@nss%
  \fi\fi%
}
\def\declarationtitle{\declarationtitlename@nss}
\newlength{\descriptionindent} \setlength{\descriptionindent}{1.5em}
\newlength{\descriptionwidth}  \setlength{\descriptionwidth}{40pt}
\newlength{\descriptionsep}    \setlength{\descriptionsep}{\tabcolsep}
\newlength{\descriptionwidth@nss}
\newcommand{\descriptionlabel@nss}[1]%
{%
    \settowidth{\descriptionwidth@nss}{#1}%
    \ifnum\descriptionwidth@nss>\descriptionwidth%  % term > labelwidth
        \parbox[b]{\descriptionwidth}%
        {%
            \makebox[0pt][l]{#1}\\%
        }%
    \else%                                      % term < labelwidth
        #1%
    \fi%
    \hfil\relax%
}
\newenvironment{declaration}[1][\declarationtitle]%
{%
    \def\next{#1}%
    \ifx\next\empty\else #1\\\fi
    \let\description=\description@nss
    \tempxx@nss=\xsize@nss\advance\tempxx@nss by -\tempx@nss%
    \begin{minipage}[t]{\tempxx@nss\unitlength}
    \begin{list}{}%
    {%
        \renewcommand{\makelabel}{\descriptionlabel@nss}%
        \setlength{\labelwidth}{\descriptionwidth}%
        \setlength{\itemsep}{0pt} \setlength{\topsep}{0pt}%
        \setlength{\parsep}{0pt} \setlength{\partopsep}{0pt}
        \setlength{\leftmargin}{\descriptionwidth}%
        \addtolength{\leftmargin}{\descriptionsep}%
        \addtolength{\leftmargin}{\descriptionindent}%
    }%
}%
{%
    \end{list}%
    \end{minipage}
}
\newcommand{\description@nss}[2]{\item[#1] \{#2\}}
\def\assign{\let\next=\@assign\getoption}%
\def\@assign#1{%
  \dbgString@nss{Beginn \string\@assign}
  \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss}
  \dbgCount@nss[Breite]{\xsize@nss}
  \tempx@nss=\xsize@nss\divide\tempx@nss by 6%
  \set@nss{#1}{\tempx@nss}%
  \tempy@nss=\number\param@nss000%
  \block@nss{\tempy@nss}{1}%
  \dbgString@nss{Ende \string\@assign}
  \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss}
}
\def\sub{\let\next=\@sub\getoption}
\def\@sub#1%
{%
  \@assign{#1}\tempx@nss=\xsize@nss\divide\tempx@nss by 20%
  \tempxx@nss=\x@nss\advance\tempxx@nss by \tempx@nss%
  \put(\tempxx@nss,\y@nss){\line(0,1){\ydepth@nss}}%
  \tempxx@nss=\x@nss\advance\tempxx@nss by \xsize@nss%
  \advance\tempxx@nss by -\tempx@nss%
  \put(\tempxx@nss,\y@nss){\line(0,1){\ydepth@nss}}%
}
\def\exit{\let\next=\@exit\getoption}
\def\@exit#1%
{%
    \tempx@nss=\xsize@nss\divide\tempx@nss by 6%
    \set@nss{#1}{\tempx@nss}%
    \tempy@nss=\number\param@nss000%
    \block@nss{\tempy@nss}{1}%
    \divide\ydepth@nss by 2%
    \advance\y@nss by \ydepth@nss%
    \ifnum\ydepth@nss<3500%
    {%
       \multiply\ydepth@nss by 2%
       \put(\x@nss,\y@nss){\line(2,1){\ydepth@nss}}%
       \put(\x@nss,\y@nss){\line(2,-1){\ydepth@nss}}%
    }%
    \else%
       \put(\x@nss,\y@nss){\line(1,1){\ydepth@nss}}%
       \put(\x@nss,\y@nss){\line(1,-1){\ydepth@nss}}%
    \fi%
    \advance\y@nss by-\ydepth@nss%
}
\def\return{\let\next=\@return\getoption}
\def\@return#1%
{%
    \tempy@nss=\number\param@nss000%
    \ifnum\tempy@nss<7000 \tempy@nss=7000 \fi%
    \set@nss{#1}{\tempy@nss} \block@nss{\tempy@nss}{1}%
    \divide\ydepth@nss by 2%
    \advance\y@nss by \ydepth@nss%
    \put(\x@nss,\y@nss){\line(1,1){\ydepth@nss}}%
    \put(\x@nss,\y@nss){\line(1,-1){\ydepth@nss}}%
    \tempx@nss=\x@nss\advance\tempx@nss by \xsize@nss%
    \put(\tempx@nss,\y@nss){\line(-1,1){\ydepth@nss}}%
    \put(\tempx@nss,\y@nss){\line(-1,-1){\ydepth@nss}}%
    \advance\y@nss by-\ydepth@nss%
}
\countdef\condindent@nss=232 \countdef\index@nss=233%
\newdimen\indentmeasure@nss \newdimen\indentmeasureright@nss
\newdimen\thisindent@nss \newdimen\thisindentright@nss
\newdimen\thislength@nss
\countdef\gindhelp@nss=234
\def\ifthenelse@nss{\let\next=\@ifthenelse@nss\getoption}
\def\@ifthenelse@nss#1#2#3#4#5{%
  \dbgString@nss{Beginn \string\@ifthenelse@nss}
  \ifanygradient
        \xx@nss=#1 \advance\xx@nss by #2%
        \ifnum\number\param@nss000>0%
            \tempyy@nss=\number\param@nss000%
            \tempx@nss=\xsize@nss%
            \multiply\tempx@nss by #1 \divide\tempx@nss by \xx@nss%
            \tempxx@nss=\xsize@nss%
            \multiply\tempxx@nss by #2 \divide\tempxx@nss by \xx@nss%
        \else%
            \tempyy@nss=\xsize@nss \divide\tempyy@nss by \xx@nss%
            \tempx@nss=\tempyy@nss \multiply\tempx@nss by #1%
            \tempxx@nss=\tempyy@nss \multiply\tempxx@nss by #2%
        \fi%
        \xx@nss=\tempx@nss \advance\xx@nss by \x@nss%
        \tempy@nss=\y@nss \advance\tempy@nss by -\tempyy@nss%
        \ifemlines%
            \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}%
        \else\ifcurves%
            \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)%
        \else\ifpictIIe%
            \tempyyy@nss=\tempyy@nss
            \divide\tempyyy@nss by 1000
            \tempxxx@nss=\tempx@nss
            \divide\tempxxx@nss by 1000
            \put(\x@nss,\y@nss){\line(\tempxxx@nss, -\tempyyy@nss){\tempx@nss}}
        \fi\fi\fi%
        \advance\x@nss by \xsize@nss%
        \ifemlines%
            \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}%
        \else\ifcurves%
            \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)
        \else\ifpictIIe%
            \tempxxx@nss=\tempxx@nss
            \divide\tempxxx@nss by 1000
            \put(\x@nss,\y@nss){\line(-\tempxxx@nss, -\tempyyy@nss){\tempxx@nss}}
        \fi\fi\fi%
     \advance\x@nss by -\xsize@nss \advance\y@nss by -\tempyy@nss%
    \tempy@nss=\tempyy@nss\divide\tempy@nss by 5000%
    \ifnum\tempy@nss<1 \tempy@nss=1\fi%
    \indentmeasure@nss=\xsize@nss\unitlength%
    \gindhelp@nss=#1\advance\gindhelp@nss by #2%
    \divide\indentmeasure@nss by \gindhelp@nss%
    \indentmeasureright@nss = \indentmeasure@nss%
    \multiply\indentmeasure@nss by #1%
    \multiply\indentmeasureright@nss by #2%
    \divide\indentmeasure@nss by \tempyy@nss%
    \divide\indentmeasureright@nss by \tempyy@nss%
    \phantom{\vbox{\hsize=0pt\global\gindhelp@nss=\the\baselineskip}}%
    \multiply\gindhelp@nss by 360%
    \multiply\indentmeasure@nss by \gindhelp@nss%
    \multiply\indentmeasureright@nss by \gindhelp@nss%
    \xdef\shape{}\index@nss=0%
    \loop%
        \advance\index@nss by 1% %Zahl der Zeile
        \thisindent@nss=\indentmeasure@nss%
        \multiply\thisindent@nss by \index@nss%
        \advance\thisindent@nss by 0.175cm%
        \xdef\shape{\shape\the\thisindent@nss}%
        \thisindentright@nss=\indentmeasureright@nss%
        \multiply\thisindentright@nss by \index@nss%
        \advance\thisindentright@nss by 0.175cm%
        \thislength@nss=\xsize@nss\unitlength%
        \advance\thislength@nss by -\thisindent@nss
        \advance\thislength@nss by -\thisindentright@nss
        \xdef\shape{\shape\the\thislength@nss}%
        \ifnum\index@nss<\tempy@nss%
    \repeat%
  \else %\ifanygradient
    \ifnum\number\param@nss000>0%
      \typeout{struktex warning:}%
      \typeout{[...] not supplied without curves, emlines2, or pict2e}%
    \fi%
    \tempx@nss=#1 \advance\tempx@nss by #2%
    \tempyy@nss=\xsize@nss \divide\tempyy@nss by \tempx@nss%
    \tempx@nss=\tempyy@nss \multiply\tempx@nss by #1%
    \put(\x@nss,\y@nss){\line(#1,-1){\tempx@nss}}%
    \tempxx@nss=\tempyy@nss \multiply\tempxx@nss by #2%
    \advance\x@nss by \xsize@nss%
    \put(\x@nss,\y@nss){\line(-#2,-1){\tempxx@nss}}%
    \advance\x@nss by -\xsize@nss \advance\y@nss by -\tempyy@nss%
    \tempy@nss=\tempyy@nss\divide\tempy@nss by 5000%
    \ifnum\tempy@nss<1 \tempy@nss=1\fi%
    \xdef\shape{}\index@nss=0%
    \loop%
      \advance\index@nss by 1%
      \condindent@nss=#1\multiply\condindent@nss by\index@nss%
      \multiply\condindent@nss by 5000%
      \xdef\shape{\shape\the\condindent@nss\unitlength}%
      \condindent@nss=#1\advance\condindent@nss by #2%
      \multiply\condindent@nss by\index@nss%
      \multiply\condindent@nss by -5000%
      \advance\condindent@nss by \xsize@nss%
      \xdef\shape{\shape\the\condindent@nss\unitlength}%
      \ifnum\index@nss<\tempy@nss%
    \repeat%
  \fi %\ifanygradient
  \put(\x@nss,\y@nss){%
    \framebox(\xsize@nss,\tempyy@nss)[tl]{%
      \vbox{%
        \hsize=\xsize@nss\unitlength%
        \parshape=\tempy@nss \shape \c@nter@nss%
                                %dies sorgt f"ur den Einzug
        \noindent\vrule width0pt height12pt \relax #3%
                                %hier wird der Text ausgegeben
      }%
    }%
  }%
  \divide\tempyy@nss by 2%
  \xx@nss=\xsize@nss\advance\xx@nss by-\tempx@nss%
  \advance\xx@nss by-\tempxx@nss%
  \ifodd\xx@nss\advance\tempxx@nss by 1\fi%
  \divide\xx@nss by 2\advance\tempxx@nss by \xx@nss%
  \advance\tempx@nss by \xx@nss%
  \put(\x@nss,\y@nss){\makebox(\tempx@nss,\tempyy@nss){#4}}%
  \xx@nss=\x@nss\advance\xx@nss by \tempx@nss%
  \put(\xx@nss,\y@nss){\makebox(\tempxx@nss,\tempyy@nss){#5}}%
  \str@kt{\x@nss}{\y@nss}{\tempx@nss}%
  \dbgString@nss{Ende \string\@ifthenelse@nss}
}
\def\change{%
  \dbgString@nss{\string\change}
    \endstr@kt\str@kt{\xx@nss}{\y@nss}{\tempxx@nss}%
}
\def\ifend@nss{%
  \dbgString@nss{Beginn \string\ifend@nss}
  \global\gy@nss=\y@nss\endgroup\tempy@nss=\gy@nss%
  \ifnum\tempy@nss<\ydepth@nss%
    \y@nss=\tempy@nss\advance\ydepth@nss by-\tempy@nss%
    \put(\x@nss,\y@nss){%
      \framebox(\tempx@nss,\ydepth@nss){%
        \ifnum\ydepth@nss>5000\filler@nss\fi%
      }%
    }%
  \else%
    \ifnum\tempy@nss>\ydepth@nss%
      \y@nss=\ydepth@nss\advance\tempy@nss by-\ydepth@nss%
      \put(\xx@nss,\y@nss){%
        \framebox(\tempxx@nss,\tempy@nss){%
          \ifnum\tempy@nss>5000\filler@nss\fi%
        }%
      }%
    \else%
      \y@nss=\ydepth@nss%
    \fi%
  \fi%
  \dbgString@nss{Ende \string\ifend@nss}
}
\def\forever{\let\next=\@forever\getoption}
\def\@forever{
    \tempx@nss=\xsize@nss
    \divide\tempx@nss by 6
    \set@nss{\mbox{\rule{0mm}{3ex}}}{\tempx@nss}
    \tempy@nss=\number\param@nss000
    \block@nss{\tempy@nss}{2}
    \advance\x@nss by \ydepth@nss
    \advance\y@nss by -\ydepth@nss
    \tempxx@nss=\xsize@nss
    \advance\tempxx@nss by -\ydepth@nss
    \tempy@nss=\ydepth@nss
    \str@kt{\x@nss}{\y@nss}{\tempxx@nss}
}
\def\foreverend{
    \endstr@kt
    \advance\x@nss by-\tempy@nss
    \advance\ydepth@nss by -\tempy@nss
    \tempyy@nss=\ydepth@nss
    \ydepth@nss=-\ydepth@nss
    \advance\ydepth@nss by \y@nss
    \advance\ydepth@nss by \tempy@nss
    \y@nss=\tempyy@nss
    \put(\x@nss,\y@nss){\framebox(\xsize@nss,\ydepth@nss){}}
    \put(\x@nss,\y@nss){\makebox(\xsize@nss,\tempy@nss){\box\TextBox@nss}}
}
\let\dfr\forever
\let\dfrend\foreverend
\def\while{\let\next=\@while\getoption}
\def\@while#1{%
  \dbgString@nss{Beginn \string\@while}
  \tempx@nss=\xsize@nss\divide\tempx@nss by 6
  \set@nss{#1\hskip\xsize@nss\unitlength}{\tempx@nss}
  \tempy@nss=\number\param@nss000 \block@nss{\tempy@nss}{0}
  \tempy@nss=\y@nss\advance\y@nss by \ydepth@nss
  \tempx@nss=\x@nss\advance\tempx@nss by \ydepth@nss
  \tempxx@nss=\xsize@nss\advance\tempxx@nss by -\ydepth@nss
  \str@kt{\tempx@nss}{\tempy@nss}{\tempxx@nss}%
}
\def\whileend{%
  \endstr@kt\tempy@nss=\y@nss\advance\tempy@nss by-\ydepth@nss
  \y@nss=\ydepth@nss
  \put(\x@nss,\y@nss){\framebox(\xsize@nss,\tempy@nss){}}%
  \dbgString@nss{Ende \string\whileend}
}
\def\until{\let\next=\@until\getoption}
\def\@until#1{\tempx@nss=\xsize@nss\divide\tempx@nss by 6
    \set@nss{#1\hskip\xsize@nss\unitlength}{\tempx@nss}
    \tempy@nss=\number\param@nss000 \block@nss{\tempy@nss}{2}
    \advance\x@nss by \ydepth@nss\tempxx@nss=\xsize@nss
    \advance\tempxx@nss by -\ydepth@nss \tempy@nss=\ydepth@nss
    \str@kt{\x@nss}{\y@nss}{\tempxx@nss} }
\def\untilend{\endstr@kt\advance\x@nss by-\tempy@nss
    \advance\ydepth@nss by -\tempy@nss
    \tempyy@nss=\ydepth@nss\ydepth@nss=-\ydepth@nss%
    \advance\ydepth@nss by \y@nss
    \y@nss=\tempyy@nss
    \put(\x@nss,\y@nss){\framebox(\xsize@nss,\ydepth@nss){}}
    \put(\x@nss,\y@nss){\makebox(\xsize@nss,\tempy@nss)
    {\box\TextBox@nss}}}
\def\case{\let\next=\@case\getoption}
\def\@case#1#2#3#4{%
  \dbgString@nss{Beginn \string\@case}
  \tempxx@nss=\number#2%
  \ifanygradient%
  %{%
        \ifnum\number\param@nss000>0
            \tempyy@nss=\number\param@nss000%
            \ifodd\number#1
                \advance\tempxx@nss by -1
            \fi
        \else
            \tempyy@nss=\xsize@nss
            \divide\tempyy@nss by #1
        \fi
        \ifnum\number#2=\tempxx@nss
            \xx@nss=\x@nss \advance\xx@nss by \xsize@nss
            \tempy@nss=\y@nss \advance\tempy@nss by -\tempyy@nss
            \ifemlines%
                \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}%
            \else\ifcurves%
                \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)%
            \else\ifpictIIe%
                \tempxxx@nss=\xx@nss
                \advance\tempxxx@nss by -\x@nss
                \divide\tempxxx@nss by 1000
                \tempyyy@nss=\tempy@nss
                \advance\tempyyy@nss by -\y@nss
                \divide\tempyyy@nss by 1000
                \advance\xx@nss by -\x@nss
                \put(\x@nss,\y@nss){\line(\tempxxx@nss, \tempyyy@nss){\xx@nss}}
            \fi\fi\fi%
        \else
            \tempx@nss=\xsize@nss
            \multiply\tempx@nss by \tempxx@nss \divide\tempx@nss by #2
            \xx@nss=\x@nss \advance\xx@nss by \tempx@nss
            \tempy@nss=\y@nss \advance\tempy@nss by -\tempyy@nss
            \ifemlines%
                \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}%
            \else\ifcurves%
                \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)%
            \else\ifpictIIe%
                \begingroup
                    \tempxxx@nss=\xx@nss
                    \advance\tempxxx@nss by -\x@nss
                    \divide\tempxxx@nss by 1000
                    \tempyyy@nss=\tempy@nss
                    \advance\tempyyy@nss by -\y@nss
                    \divide\tempyyy@nss by 1000
                    \advance\xx@nss by -\x@nss
                    \put(\x@nss,\y@nss){\line(\tempxxx@nss,
                        \tempyyy@nss){\xx@nss}}
                \endgroup
            \fi\fi\fi%
            \advance\x@nss by \xsize@nss
            \ifemlines%
                \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}%
            \else\ifcurves%
                \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)%
            \else\ifpictIIe%
                \tempxxx@nss=\x@nss
                \advance\tempxxx@nss by -\xx@nss
                \divide\tempxxx@nss by 1000
                \tempyyy@nss=\tempy@nss
                \advance\tempyyy@nss by -\y@nss
                \divide\tempyyy@nss by 1000
                \xx@nss=-\xx@nss
                \advance\xx@nss by \x@nss
                \put(\x@nss,\y@nss){\line(-\tempxxx@nss, \tempyyy@nss){\xx@nss}}
            \fi\fi\fi%
            \advance\x@nss by -\xsize@nss
        \fi
    %}{
    \else% \ifanygradient
        \ifnum\number\param@nss000>0
            \typeout{struktex warning:}%
            \typeout{[...] not supplied without curves, emlines2, or pict2e}%
        \fi
        \put(\x@nss,\y@nss){\line(#1,-1){\xsize@nss}}
        \tempyy@nss=\xsize@nss
        \divide\tempyy@nss by #1
    %}
    \fi% \ifanygradient
    \tempx@nss=\xsize@nss
    \divide\tempx@nss by 2
    \divide\tempyy@nss by 2
    \advance\x@nss by \tempx@nss
    \advance\y@nss by -\tempyy@nss
    \put(\x@nss,\y@nss){\makebox(\tempx@nss,\tempyy@nss){#3}}
    \advance\x@nss by -\tempx@nss
    \advance\y@nss by \tempyy@nss
    \xx@nss=\x@nss
    \yy@nss=\y@nss
    \tempx@nss=\xsize@nss
    \divide\tempx@nss by #2
    \ifnum\number\param@nss000>0
        \tempy@nss=\number\param@nss000%
    \else
        \tempy@nss=\xsize@nss
        \divide\tempy@nss by #1
    \fi
    \condindent@nss=\tempy@nss
    \divide \condindent@nss by \tempxx@nss
    \advance\y@nss by -\tempy@nss
    \put(\x@nss,\y@nss)%
    {%
        \makebox(\tempx@nss,\tempy@nss)[lb]{\raise3pt\hbox{~#4}}%
    }%
    \ydepth@nss=1000000%
    \str@kt{\x@nss}{\y@nss}{\tempx@nss}%
    \dbgString@nss{Ende: \string\@case}
    \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss}
    \dbgCount@nss[Breite]{\tempx@nss}
}
\def\switch{%
    \@ifnextchar [{\@switch}{\@switch[l]}%
}
\def\@switch[#1]#2{%
  \dbgString@nss{Beginn \string\@switch}
    \global\gy@nss=\y@nss\endgroup
    \tempyy@nss=\gy@nss
    \ifnum\tempyy@nss<\ydepth@nss
        \ydepth@nss=\tempyy@nss
    \fi
    \advance\x@nss by \tempx@nss
    \advance\tempy@nss by -\condindent@nss
    \put(\x@nss,\y@nss)%
            {\makebox(\tempx@nss,\tempy@nss)[#1b]{\raise3pt\hbox{~#2~}}}
    \str@kt{\x@nss}{\y@nss}{\tempx@nss}
}
\def\caseend{%
  \dbgString@nss{Ende: \string\caseend}
  \global\gy@nss=\y@nss\endgroup
  \tempyy@nss=\gy@nss
  \ifnum\tempyy@nss<\ydepth@nss
    \ydepth@nss=\tempyy@nss
  \fi
  \x@nss=\xx@nss
  \y@nss=\ydepth@nss
  \tempyy@nss=\yy@nss
  \advance\tempyy@nss by -\ydepth@nss
  \put(\x@nss,\y@nss){\framebox(\xsize@nss,\tempyy@nss){}}
  \tempxx@nss=\x@nss
  \dbgCount@nss[width?]{\xsize@nss}
  \loop
    \dbgString@nss{draw vertical line}
    \dbgCoord@nss[Ursprung]{\tempxx@nss}{\y@nss}
    \dbgCount@nss[Laenge]{\tempyy@nss}
    \advance\tempyy@nss by -\condindent@nss
    \advance\tempxx@nss by \tempx@nss
    \put(\tempxx@nss,\y@nss){\line(0,1){\tempyy@nss}}
    \xx@nss=\tempxx@nss
    \advance\xx@nss by -\x@nss
    \advance\xx@nss by \tempx@nss
    \advance\xx@nss by 100
    \dbgCount@nss[loop control]{\xx@nss}
    \dbgCount@nss[compare to]{\xsize@nss}
    \ifnum \xx@nss<\xsize@nss
  \repeat
}
\def\inparallel{\let\next=\@inparallel\getoption}
\def\@inparallel#1#2{%
  \dbgString@nss{Beginn \string\@inparallel}
\tempyy@nss=\number\param@nss000%
\dbgCoord@nss[Ursprung inparallel]{\x@nss}{\y@nss}
\dbgMark@nss{\x@nss}{\y@nss}
\tempxx@nss=\xsize@nss
\advance\tempxx@nss by 1500% prevent rounding errors
\divide\tempxx@nss by 3000%
\dbgCount@nss[Number of dashes]{\tempxx@nss}
\yy@nss=\y@nss\advance\yy@nss by -2000%
\dbgCoord@nss[draw top dashed line, origin]{\x@nss}{\yy@nss}
\dbgCount@nss[length based on]{\xsize@nss}
\multiput(\x@nss,\yy@nss)(3000, 0){\tempxx@nss}{\line(1,0){1500}}%
\advance\yy@nss by -2000%
\multiput(\x@nss,\yy@nss)(3000, 0){\tempxx@nss}{\line(1,0){1500}}%
\xx@nss=\x@nss%
\advance\xx@nss by \xsize@nss%
\divide\xsize@nss by #1%
\tempx@nss=\xsize@nss\divide\tempx@nss by 6%
\begingroup
\y@nss=\yy@nss%
\dbgCoord@nss[Ursprung Task 1]{\x@nss}{\y@nss}
\set@nss{#2}{\tempx@nss}%
\dbgCount@nss[optionale Hoehe der Task]{\tempyy@nss}
\block@nss{\tempyy@nss}{0}%
\tempyy@nss=\TextBoxHt@nss%
\dbgCount@nss[Hoehe der Task]{\tempyy@nss}
}
\def\inparallelend{%
  \dbgString@nss{Beginn \string\@inparallelend}
  \dbgCoord@nss[Endkoordinate]{\x@nss}{\y@nss}
  \global\tempy@nss=\y@nss%
  \global\tempyy@nss=\tempyy@nss%
  \endgroup
\begingroup%
\dbgCoord@nss[left and right limits]{\x@nss}{\xx@nss}
\dbgCount@nss[step size]{\xsize@nss}
\tempx@nss=\xsize@nss%
\divide\tempx@nss by 2%
\advance\xx@nss by -\tempx@nss%
\tempx@nss=\x@nss%
\loop%
\dbgString@nss{draw vertical line}
\advance\tempx@nss by \xsize@nss%
\dbgCoord@nss[Ursprung]{\tempx@nss}{\tempy@nss}
\dbgCount@nss[Laenge]{\tempyy@nss}
\put(\tempx@nss,\tempy@nss){\line(0,1){\tempyy@nss}}%
\tempxx@nss=\tempx@nss%
\advance\tempxx@nss by \xsize@nss%
\dbgCount@nss[loop control]{\tempxx@nss}
\dbgCount@nss[compare to]{\xx@nss}
\ifnum \tempxx@nss<\xx@nss%
\repeat
\endgroup
\dbgCoord@nss[draw bottom, origin]{\x@nss}{\tempy@nss}
\multiput(\x@nss,\tempy@nss)(3000, 0){\tempxx@nss}{\line(1,0){1500}}%
\advance\tempy@nss by -2000%
\multiput(\x@nss,\tempy@nss)(3000, 0){\tempxx@nss}{\line(1,0){1500}}%
\advance\tempy@nss by -2000%
\dbgCount@nss{\tempyy@nss}
\advance\tempyy@nss by 8000%
\advance\xx@nss by -\x@nss%
\dbgCoord@nss[Breite, Hoehe]{\xx@nss}{\tempyy@nss}
\put(\x@nss,\tempy@nss){\framebox(\xx@nss,\tempyy@nss){}}%
\xsize@nss=\xx@nss%
\y@nss=\tempy@nss%
\dbgCoord@nss[Endkoordinate inparallel]{\x@nss}{\y@nss}
\dbgCount@nss[Breite]{\xsize@nss}
\dbgString@nss{Ende \string\@inparallelend}
}
\def\task{\let\next=\@task\getoption}
\def\@task#1{%
  \dbgString@nss{Beginn \string\@task}
  \advance\x@nss by \xsize@nss%
  \y@nss=\yy@nss%
  \dbgCoord@nss[Ursprung parallele Task]{\x@nss}{\y@nss}
  \set@nss{#1}{\tempx@nss}%
  \ifnum\number\param@nss000>\tempyy@nss%
    \tempyy@nss=\number\param@nss000%
  \fi%
  \dbgCount@nss[Hoehe parallele Task]{\tempyy@nss}
  \block@nss{\tempyy@nss}{0}%
}
\newbox\CenterBox@nss%
\def\centernss{%
    \begin{trivlist}%
    \item[] \strut%
        \setbox\CenterBox@nss=\hbox%
                              \bgroup%
}
\def\endcenternss{%
                              \egroup%
        \strut\hfill\box\CenterBox@nss\hfill\strut%
    \end{trivlist}%
}
\def\CenterNssFile#1{%
    \begin{trivlist}%
        \item[] \setbox\CenterBox@nss=\hbox{\input{#1.nss}}%
        \strut\hfill\box\CenterBox@nss\hfill\strut%
    \end{trivlist}%
}
\let\centernssfile=\CenterNssFile
  \newcommand\assert{\let\next=\assert@nss\getoption}%
  \newcommand\assert@nss[1]{}%
\ifthenelse{\boolean{verification}}{%
    \countdef\xsizeo@nss=232%
    \countdef\ydeptho@nss=233%
  \renewcommand{\assert@nss}[1]{%
    \tempx@nss=\xsize@nss\divide\tempx@nss by 6%
    \set@nss{#1}{\tempx@nss}\tempy@nss=\number\param@nss000%
    \assertblock@nss{\tempy@nss}{1}%
  }
%%
  \newcommand{\assertblock@nss}[2]{%
    \tempy@nss=#1\TextBoxHt@nss=\ht\TextBox@nss%
    \advance\TextBoxHt@nss by\dp\TextBox@nss%
    \advance\TextBoxHt@nss by 2mm%
    \ifdim\TextBoxHt@nss<\tempy@nss\unitlength%
        \TextBoxHt@nss=\tempy@nss\unitlength%
    \fi%
    \TextBoxHt@nss=0.00536\TextBoxHt@nss%
    \ydepth@nss=\TextBoxHt@nss\advance\y@nss by-\ydepth@nss%
    \xsizeo@nss=\xsize@nss \tempx@nss=\x@nss
    \divide\xsizeo@nss by 2%
    \advance\tempx@nss by+\xsizeo@nss%
    \ydeptho@nss=\ydepth@nss \tempy@nss=\y@nss
    \divide\ydeptho@nss by 2%
    \advance\tempy@nss by+\ydeptho@nss%
    \ifx#21%
        \put(\x@nss,\y@nss)%
        {%
            \framebox(\xsize@nss,\ydepth@nss){\box\TextBox@nss}%
        }%
        \put(\tempx@nss,\tempy@nss){\oval(\xsize@nss,\ydepth@nss)}%
    \else%
        \ifx#20%
            \put(\x@nss,\y@nss)%
            {%
                \makebox(\xsize@nss,\ydepth@nss){\box\TextBox@nss}%
            }%
            \put(\tempx@nss,\tempy@nss){\oval(\xsize@nss,\ydeptho@nss)}%
        \else%
            \advance\y@nss by \ydepth@nss%
        \fi%
    \fi%
  }
}
{} % end of \ifthenelse{\boolean{verification}}
\endinput
%%
%% End of file `struktex.sty'.
