// Modellname: modell

// Die Makrodefinition '_impexp' dient zur Exportierung
// der Funktionen, Klassen und Variablen innerhalb der Library,
// wird aber eigentlich nur fuer Windows benoetigt :-(

#ifdef WIN32
  #undef _impexp
  #define _impexp __declspec(dllexport)
#else
  #undef _impexp
  #define _impexp
#endif

#include <stdio.h>
#include "sfxprg.h" // enthaelt die Funktionen der C-Schnittstelle


const int BdeBst        = 20;
const int BdeSchreiben  = 999;
const double bohren_stat = 89.22;
const double schleifen_stat = 88.12;
const double gewinde_stat = 54.49;
const double umspannen_stat = 28.28;
const double fraesen_stat = 262.28;
const double aufbohren_stat = 34.16;
const double drehen_stat = 39.71;

FILE *BdeDatei = NULL;
Ustring BdeDatName( "modell.out" );

void _impexp init_prog( ){
    DateiMitModellPfad( BdeDatName );
    BdeDatei = fopen ( BdeDatName.str( ), "w" );
    //fprintf( BdeDatei, "Modellzeit;Bst3; Bst8;  Bst5;  Bst6; Frae; Belegung17; Belegung18; Bst4; Bst2;\n" );
    fprintf( BdeDatei, "Modellzeit; Bohren; Bohren stat.;Schleifen;Schleifen stat.;Gewindeschneiden; Gewinde stat.;Umspannen;Umspannen stat.;Fraesen;Freasen stat.; Belegung17; Belegung18; Aufbohren; Aufbohren stat.; Drehen; Drehen stat.;inside;Durchlaufzeit1;Durchlaufzeit2;Durchlaufzeit3;Durchlaufzeit4;Durchlaufzeit5;Durchlaufzeit6;Durchlaufzeit7;Durchlaufzeit8;Durchlaufzeit9;Meldungen\n" );
    fclose ( BdeDatei );
    installProg( BdeSchreiben );
    planeEin( SimTime::convertMinutes ( 12.0 ), ETprogramm, BdeBst, BdeSchreiben );
}

void _impexp prog_999( ){
    BdeDatei = fopen( BdeDatName.str( ), "a" );
    fprintf( BdeDatei, "%10.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%4i;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%5.2f;%2i\n",
                       Modellzeit( ).inHours( ),
                       MitAuslastung( 3 ),
                       bohren_stat,
                       MitAuslastung( 8 ),
                       schleifen_stat,
                       MitAuslastung( 5 ),
                       gewinde_stat,
                       MitAuslastung( 6 ),
                       umspannen_stat,
                       MitAuslastung( 7 ) + MitAuslastung( 11 ) + MitAuslastung( 12 ),
                       fraesen_stat,
                       MaxBelegung( 17 ),
                       MaxBelegung( 18 ),
                       MitAuslastung( 4 ),
                       aufbohren_stat,
                       MitAuslastung( 2 ),
                       drehen_stat,
                       AnzIndAvisIst( 9 ),
                       MitDurchlaufzeit( 1 ).inMinutes( ),
                       MitDurchlaufzeit( 2 ).inMinutes( ),
                       MitDurchlaufzeit( 3 ).inMinutes( ),
                       MitDurchlaufzeit( 4 ).inMinutes( ),
                       MitDurchlaufzeit( 5 ).inMinutes( ),
                       MitDurchlaufzeit( 6 ).inMinutes( ),
                       MitDurchlaufzeit( 7 ).inMinutes( ),
                       MitDurchlaufzeit( 8 ).inMinutes( ),
                       MitDurchlaufzeit( 9 ).inMinutes( ),
                       Meldungen( 1 )
                       );//Auslastung???
    fclose ( BdeDatei );
    if( (Meldungen( 1 ) > 0 ) || Modellzeit( ) < Modellende( ) ){
        planeDelta( SimTime::convertMinutes( 12.0 ), ETprogramm, BdeBst, BdeSchreiben );
    }
    else simAbbruch( );
}

void _impexp exit_prog( ){
}
