```--- a/inst/odepkg.m
+++ b/inst/odepkg.m
@@ -20,18 +20,19 @@
%# A more detailed help for the odepkg implementation will be added here soon.
%# @end deftypefn

-%# Some tests from mine
-%# @unnumberedsubsec ode2f
-%# @command{ode2f} integrates a system of ordinary differential equations using a 2nd order Runge-Kutta formulae called Ralston's method. This choice of 2nd order coefficients provides a minimum bound on truncation error. For more information see Ralston & Rabinowitz (1978) or Numerical Methods for Engineers, 2nd Ed., Chappra & Cannle, McGraw-Hill, 1985. 2nd-order accurate RK methods have a local error estimate of O(h^3). @command{ode2f} requires two function evaluations per integration step.
-
%# Maintainer: Thomas Treichl
%# Created: 20060912
%# ChangeLog:

%# File will be cleaned up in the future
function [] = odepkg (varargin)
-%# File will be cleaned up in the future
-  if (ischar (varargin{1}) == true)
+
+  %# Check number and types of all input arguments
+  if (nargin == 0 || nargin >= 2)
+    help ('odepkg');
+    error ('Number of input arguments must be exactly one');
+
+   elseif (ischar (varargin{1}) == true)

%# Hidden developer functions are called if any valid string is
%# given as an input argument.
@@ -46,19 +47,19 @@
odepkg_outputselection_check;
end

-  else %# if (ischar (varargin{1}) ~= true)
-    help ('odepkg');
-    return;
-  end
+  else
+    error ('The one and only input argument must be a valid string');
+
+  end %# Check number and types of all input arguments

%# The call of this function may take a while and will open a lot of
%# figures that have to be checked.
function [] = odepkg_package_check ()

+  test ('ode78', 'verbose'); clear ('all');
+  test ('ode54', 'verbose'); clear ('all');
+  test ('ode45', 'verbose'); clear ('all');
test ('ode23', 'verbose'); clear ('all');
-  test ('ode45', 'verbose'); clear ('all');
-  test ('ode54', 'verbose'); clear ('all');
-  test ('ode78', 'verbose'); clear ('all');

test ('odeget.m', 'verbose'); clear ('all');
test ('odeset.m', 'verbose'); clear ('all');
@@ -138,14 +139,15 @@
A = odeset ('InitialStep', 1e-3, 'MaxStep', 1e-1, 'OutputSel', [1 2 3]);
[x, y] = ode78 (@odepkg_equations_lorenz, [0 25], [3 15 1], A);
subplot(2, 2, 4); plot (x, y);
-%[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 26), [0 0]);
-%[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 25), [0 0]);
-%[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 22), [0 0]);
-%[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 26), [0 0]);
-%[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 30), [0 0]);
-%[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 13), [0 0]);
-%[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, logspace (-1, 0, 13), [0 0]);
-%[vx, vy, va, vb, vc] = ode23 (@odepkg_equations_secondorderlag, logspace (-1, 0, 31), [0 0]);
+
+%#[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 26), [0 0]);
+%#[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 25), [0 0]);
+%#[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 22), [0 0]);
+%#[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 26), [0 0]);
+%#[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 30), [0 0]);
+%#[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, linspace (0, 2.5, 13), [0 0]);
+%#[vx, vy, va, vb, vc] = ode78 (@odepkg_equations_secondorderlag, logspace (-1, 0, 13), [0 0]);
+%#[vx, vy, va, vb, vc] = ode23 (@odepkg_equations_secondorderlag, logspace (-1, 0, 31), [0 0]);

%# File will be cleaned up in the future
function [] = odepkg_versus_lsode ()
@@ -208,6 +210,33 @@
xdot = ((1 - x) * t - t^2) / epsilon;
endfunction

+%!function y = f(x)
+%! y = 3 * x;
+%!test
+%!  d = f(3) * 3
+
+%% test/octave.test/error/error-2.m
+%!function g ()
+%! error ("foo\n");
+%!function f ()
+%! g
+%!error <foo> f ();
+
+%!shared A
+%!demo A
+%!  function y=f(x)
+%!    y=x;
+%!  endfunction
+%!  f(3)
+%!demo A
+
+%# Diese demo kann dann mit dem Befehl
+%#   [A, B] = example ('odepkg', 1);
+%# extrahiert werden und mit dem Aufruf
+%#   eval (A);
+%# ausgef�hrt werden
+%#   Baue eventuell eine neue demo.m function
+
%# Local Variables: ***
%# mode: octave ***
%# End: ***
```