Like in the other presented module, the command line is analyzed
first. This is done in exactly the same way, and the result only
influences the location to which the results will be written.
Thereafter the results of the eye examinations done are extracted from
the table verlauf . Again,
the function splitdb is used to split up the
given input. To save memory, the just gathered information is evaluated
in the next loop, because the data is needed only once, and so the
command undef %aug is used to free the
memory
.
Next the age of all patients is extracted from the table diabetik , and stored in the hash age. Due to performance reasons, again, all information is gathered in one pass through the whole table. Afterwards, the file is closed and not used again in this module.
The last pieces of information needed to calculate the desired statistics are the urin_album fields from the table ualbumin and the according dates. This is done in the next loop. If multiple values have been entered for the same patient in the same period of time, the average of those has to be used. Due to this, all those numeric values are added up for each patient and each period of time, while the total number of values is also saved for each of those sums.
Thereafter the ``real'' calculations are done. First, the required averages are determined, and then divided into the groups given in the specification. The number of patients in each group is saved in absolute values and only transformed to percentages for the output after all calculations have been done. Again, this is done due to performance reasons, because integer calculations are much faster than floating-point arithmetics .