[31m-- main is main file of main project written with Ada.[m
[31m-- Main is Copyright (C) 2025 Manuel De Girardi ; [m
[31m--[m
[31m--   This program is free software; you can redistribute it and/or modify[m
[31m--   it under the terms of the GNU General Public License as published by[m
[31m--   the Free Software Foundation; either version 2 of the License, or[m
[31m--   (at your option) any later version.[m
[31m--[m
[31m--   This program is distributed in the hope that it will be useful,[m
[31m--   but WITHOUT ANY WARRANTY; without even the implied warranty of[m
[31m--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the[m
[31m--   GNU General Public License for more details.[m
[31m--[m
[31m--   You should have received a copy of the GNU General Public License[m
[31m--   along with this program; if not, write to the Free Software[m
[31m--   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA[m
[31m--[m
[31m-- Date := 2025-09-28 12:41:51 ; [m
[31m-- Version := 0.22.5a ; [m
[01;34mwith[m Gnat[31m.[mSockets[31m;[m
[01;34muse[m Gnat[31m.[mSockets[31m;[m
[01;34mwith[m Ada[31m.[mTask_Identification[31m;[m
[01;34muse[m Ada[31m.[mTask_Identification[31m;[m
[01;34mwith[m Gnat[31m.[mSha1[31m;[m
[01;34muse[m Gnat[31m;[m
[01;34mwith[m Ada[31m.[mUnchecked_Deallocation[31m;[m
[01;34mwith[m Text_Io[31m;[m
[01;34mwith[m Ada[31m.[mWide_Text_Io[31m;[m
[01;34muse[m Ada[31m.[mWide_Text_Io[31m;[m
[01;34mwith[m Ada[31m.[mCharacters[31m.[mHandling[31m;[m
[01;34muse[m Ada[31m.[mCharacters[31m.[mHandling[31m;[m
[01;34mwith[m Ada[31m.[mContainers[31m.[mVectors[31m;[m
[01;34muse[m Ada[31m.[mContainers[31m;[m
[01;34mwith[m Ada[31m.[mCalendar[31m;[m
[01;34mwith[m Ada[31m.[mCalendar[31m.[mFormatting[31m;[m
[01;34muse[m Ada[31m.[mCalendar[31m;[m
[01;34mwith[m Sky[31m.[mStock[31m;[m
[01;34mwith[m sky[31m.[mStocks_manager[31m;[m
[01;34mwith[m M[31m.[mAccountant[31m;[m
[01;34mwith[m M[31m.[mBalance[31m;[m
[01;34muse[m Sky[31m.[mStock[31m;[m
[01;34muse[m Sky[31m.[mStocks_manager[31m;[m
[01;34muse[m M[31m.[mAccountant[31m;[m
[01;34muse[m M[31m.[mBalance[31m;[m
[01;34mwith[m Ada[31m.[mCalendar[31m;[m
[01;34muse[m Ada[31m.[mCalendar[31m;[m
[01;34mwith[m M[31m.[mErrors[31m;[m
[01;34muse[m M[31m.[mErrors[31m;[m
[01;34mwith[m Ada[31m.[mStrings[31m.[mWide_Fixed[31m;[m
[01;34muse[m Ada[31m.[mStrings[31m.[mWide_Fixed[31m;[m
[01;34muse[m Ada[31m.[mStrings[31m;[m
[01;34mwith[m M[31m.[mProject[31m;[m
[01;34mwith[m Gnat[31m.[mDirectory_operations[31m;[m
[01;34muse[m Gnat[31m.[mDirectory_operations[31m;[m
[01;34mwith[m Gnat[31m.[mDirectory_Operations[31m.[mIteration[31m;[m
[01;34muse[m Gnat[31m.[mDirectory_Operations[31m.[mIteration[31m;[m
[01;34mwith[m gnat[31m.[mos_lib[31m;[m
[01;34muse[m Gnat[31m;[m

[01;34mpackage[m [01;34mbody[m M[31m.[mServers [01;34mis[m
   [01;34muse[m Engineer[31m;[m
   [01;34muse[m Engineer[31m.[mClasses[31m;[m
   [01;34muse[m Engineer[31m.[mClasses[31m.[mAbstract_Vectors[31m;[m
   
   [01;34mprocedure[m [01;30mProduct_save[m[31m([mProduct [31m:[m [01;34min[m Product_Class[31m;[mFile [31m:[m [01;34min[m [01;34mout[m File_Type[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mProduct[31m.[mName[31m.[m[01;34mall[m[31m));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mProduct[31m.[mName[31m.[m[01;34mall[m[31m));[m
      [01;30mPut_Line[m[31m([mFile[31m,[m Product[31m.[mDescription[31m.[m[01;34mall[m[31m);[m
      [01;30mPut_Line[m[31m([mProduct[31m.[mDescription[31m.[m[01;34mall[m[31m);[m
      [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mProduct[31m.[mDocumentation[31m.[m[01;34mall[m[31m));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mProduct[31m.[mDocumentation[31m.[m[01;34mall[m[31m));[m
      [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mFixed_Unit_Ht'[01;30mImage[m[31m([mProduct[31m.[mUnit_HT[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mFixed_Unit_Ht'[01;30mImage[m[31m([mProduct[31m.[mUnit_HT[31m)));[m
      [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mFixed_Factor'[01;30mImage[m[31m([mProduct[31m.[mTVA_Rate[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mFixed_Factor'[01;30mImage[m[31m([mProduct[31m.[mTVA_Rate[31m)));[m
      [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mFixed_Total'[01;30mImage[m[31m([mProduct[31m.[mTVA[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mFixed_Total'[01;30mImage[m[31m([mProduct[31m.[mTVA[31m)));[m
      [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mFixed_Unit_TTC'[01;30mImage[m[31m([mProduct[31m.[mUnit_TTC[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mFixed_Unit_TTC'[01;30mImage[m[31m([mProduct[31m.[mUnit_TTC[31m)));[m

   [01;34mend[m Product_Save[31m;[m
   [01;34mprocedure[m [01;30mProduct_Restore[m[31m([mProduct [31m:[m [01;34mout[m Product_Class[31m;[mFile [31m:[m [01;34min[m [01;34mout[m File_Type[31m)[m [01;34mis[m
   [01;34mbegin[m
      Product[31m.[mName [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[01;30mTo_String[m[31m([m[01;30mGet_Line[m[31m([mFile[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mProduct[31m.[mName[31m.[m[01;34mall[m[31m));[m
      Product[31m.[mDescription [31m:=[m [01;34mnew[m [32mWide_String[m ' [31m([m[01;30mGet_Line[m[31m([mFile[31m));[m
      [01;30mPut_Line[m[31m([mProduct[31m.[mDescription[31m.[m[01;34mall[m[31m);[m
      Product[31m.[mDocumentation [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[01;30mTo_String[m[31m([m[01;30mGet_Line[m[31m([mFile[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mProduct[31m.[mDocumentation[31m.[m[01;34mall[m[31m));[m
      Product[31m.[mUnit_Ht [31m:=[m Fixed_Unit_Ht'[01;30mValue[m[31m([m[01;30mTo_String[m[31m([m[01;30mGet_Line[m[31m([mFile[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mFixed_Unit_Ht'[01;30mImage[m[31m([mProduct[31m.[mUnit_HT[31m)));[m
      Product[31m.[mTVA_Rate [31m:=[m Fixed_Factor'[01;30mValue[m[31m([m[01;30mTo_String[m[31m([m[01;30mGet_Line[m[31m([mFile[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mFixed_Factor'[01;30mImage[m[31m([mProduct[31m.[mTVA_Rate[31m)));[m
      Product[31m.[mTVA [31m:=[m Fixed_Total'[01;30mValue[m[31m([m[01;30mTo_String[m[31m([m[01;30mGet_Line[m[31m([mFile[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mFixed_Total'[01;30mImage[m[31m([mProduct[31m.[mTVA[31m)));[m
      Product[31m.[mUnit_TTC [31m:=[m Fixed_Unit_Ttc'[01;30mValue[m[31m([m[01;30mTo_String[m[31m([m[01;30mGet_Line[m[31m([mFile[31m)));[m
      [01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mFixed_Unit_TTC'[01;30mImage[m[31m([mProduct[31m.[mUnit_TTC[31m)));[m
   [01;34mend[m Product_Restore[31m;[m
   
   
   [01;34mprocedure[m Game_Save [01;34mis[m
      File [31m:[m File_Type[31m;[m
   [01;34mbegin[m
      [01;30mCreate[m[31m([mFile[31m,[m Out_File[31m,[m [31m"main_game.txt"[m[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
      [01;34mif[m Current_Game[31m.[mCount [31m/=[m [35m0[m [01;34mthen[m
	 [01;34mfor[m I [01;34min[m [35m1[m[31m..[mCurrent_Game[31m.[mCount [01;34mloop[m
	    [01;30mProduct_Save[m[31m([mCurrent_Game[31m.[m[01;30mProducts[m[31m([mI[31m).[m[01;34mall[m[31m,[m File[31m);[m
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      [01;30mClose[m[31m([mFile[31m);[m
   [01;34mend[m Game_Save[31m;[m
   [01;34mprocedure[m Game_Restore [01;34mis[m
      File [31m:[m File_Type[31m;[m
   [01;34mbegin[m
      [01;30mOpen[m[31m([mFile[31m,[m In_File[31m,[m [31m"main_game.txt"[m[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
      [01;34mwhile[m [01;34mnot[m [01;30mEnd_Of_File[m[31m([mFile[31m)[m [01;34mloop[m
	 [01;34mdeclare[m
	    Product [31m:[m Product_Access [31m:=[m [01;34mnew[m Product_Class[31m;[m
	 [01;34mbegin[m
	    [01;30mProduct_Restore[m[31m([mProduct[31m.[m[01;34mall[m[31m,[m File[31m);[m
	    Current_Game[31m.[m[01;30mProducts[m[31m([mCurrent_Game[31m.[mCount[31m+[m[35m1[m[31m)[m [31m:=[m Product[31m;[m
	    Current_Game[31m.[mCount [31m:=[m Current_Game[31m.[mCount [31m+[m [35m1[m[31m;[m
	 [01;34mend[m[31m;[m
	 
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;30mClose[m[31m([mFile[31m);[m
   [01;34mexception[m
      [01;34mwhen[m Name_Error [31m=>[m
	 [01;30mPut_Line[m[31m([m[31m"Products file : main_game.txt : not found."[m[31m);[m
	 [01;34mraise[m[31m;[m
      [01;34mwhen[m End_Error [31m=>[m
	 [01;30mClose[m[31m([mFile[31m);[m
   [01;34mend[m Game_Restore[31m;[m
   
   
   
   
   [01;34mfunction[m [01;30mEqual_Command[m [31m([mLeft[31m,[m Right [31m:[m Command_Record[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
   [01;34mbegin[m
      [01;34mreturn[m Left [31m=[m Right[31m;[m
   [01;34mend[m Equal_Command[31m;[m
   [01;34mfunction[m [01;30mEqual_Facture[m [31m([mLeft[31m,[m Right [31m:[m Facture_Record[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
   [01;34mbegin[m
      [01;34mreturn[m Left [31m=[m Right[31m;[m
   [01;34mend[m Equal_Facture[31m;[m
   [01;34mfunction[m [01;30mEqual_Client[m [31m([mLeft[31m,[m Right [31m:[m Client_Record[31m)[m [01;34mreturn[m [32mBoolean[m [01;34mis[m
   [01;34mbegin[m
      [01;34mreturn[m Left [31m=[m Right[31m;[m
   [01;34mend[m Equal_Client[31m;[m
   
   
   [01;34msubtype[m Command_Index [01;34mis[m Positive[31m;[m
   [01;34msubtype[m facture_Index [01;34mis[m Positive[31m;[m
   [01;34msubtype[m Client_Index [01;34mis[m Positive[31m;[m
   [01;34mpackage[m  Command_vectors [01;34mis[m [01;34mnew[m [01;30mVectors[m [31m([mCommand_Index[31m,[m Command_Record[31m,[m equal_Command[31m);[m
   [01;34mpackage[m Facture_Vectors [01;34mis[m [01;34mnew[m [01;30mVectors[m [31m([mFacture_Index[31m,[m Facture_Record[31m,[m equal_Facture[31m);[m
   [01;34mpackage[m Client_Vectors [01;34mis[m [01;34mnew[m [01;30mVectors[m [31m([mClient_Index[31m,[m Client_Record[31m,[m equal_Client[31m);[m
   
   
   
   
   [01;34mtype[m Business_Manager[31m;[m
   
   
   [01;34mtask[m [01;34mtype[m [01;30mConsole_Process[m[31m([mBusiness [31m:[m [01;34maccess[m Business_Manager[31m)[m [01;34mis[m
      [01;34mentry[m [01;30mAdd[m[31m([mClient [31m:[m [01;34min[m [01;34mout[m Client_Record[31m;[m Command [31m:[m [01;34min[m [01;34mout[m Command_Record[31m;[m Facture [31m:[m [01;34min[m [01;34mout[m Facture_Record[31m;[m Success [31m:[m [01;34mout[m [32mBoolean[m[31m;[m Id_Transaction [31m:[m [01;34mout[m Natural[31m);[m
      [01;34mentry[m [01;30mDelete[m[31m([mClient [31m:[m [01;34min[m Client_Record[31m;[m Success [31m:[m [01;34mout[m [32mBoolean[m[31m);[m
      [01;34mentry[m [01;30mDelete[m[31m([mId_Transaction [31m:[m [01;34min[m Natural[31m;[m Success [31m:[m [01;34mout[m [32mBoolean[m[31m);[m
      [01;34mentry[m [01;30mGet[m[31m([mId_Transaction [31m:[m [01;34min[m Natural[31m;[m Facture [31m:[m [01;34mout[m Facture_Record[31m;[m Success [31m:[m [01;34mout[m [32mBoolean[m[31m);[m
      [01;34mentry[m [01;30mPaiement[m[31m([mId_Transaction [31m:[m [01;34min[m Natural[31m);[m
      [01;34mentry[m [01;30mMessage[m [31m([mMsg [31m:[m [01;34min[m [32mWide_String[m[31m);[m
      [01;34mentry[m [01;30mReceive[m [31m([mWchar [31m:[m [01;34min[m Wide_Character[31m);[m
      [01;34mentry[m Halt[31m;[m
   [01;34mend[m Console_Process[31m;[m
   
   
   [01;34mtype[m Business_Manager [01;34mis[m [01;34mlimited[m
      [01;34mrecord[m
	 Num_Deal       [31m:[m Natural [31m:=[m [35m0[m[31m;[m
	 Id_Transaction [31m:[m Natural [31m:=[m [35m0[m[31m;[m
	 Commandes      [31m:[m Command_Vectors[31m.[mVector[31m;[m
	 Factures       [31m:[m Facture_Vectors[31m.[mVector[31m;[m
	 Clients        [31m:[m Client_Vectors[31m.[mVector[31m;[m
	 Console        [31m:[m [01;30mConsole_Process[m[31m([mBusiness_Manager'[01;34maccess[m[31m);[m
      [01;34mend[m [01;34mrecord[m[31m;[m
	 
   
   
   [01;34mtask[m [01;34mbody[m Console_Process [01;34mis[m
   [01;34mbegin[m
      [01;34mloop[m
	 [01;34mselect[m
	    [01;34maccept[m [01;30mGet[m[31m([mId_Transaction [31m:[m [01;34min[m Natural[31m;[m Facture [31m:[m [01;34mout[m Facture_Record[31m;[m Success [31m:[m [01;34mout[m [32mboolean[m[31m)[m [01;34mdo[m
	       Success [31m:=[m False[31m;[m
	       [01;34mfor[m F [01;34min[m [35m1[m[31m..[mFacture_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mfactures[31m)[m [01;34mloop[m
		  [01;34mdeclare[m
		     E [31m:[m [01;34mconstant[m facture_Record [31m:=[m Facture_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mFactures[31m,[m F[31m);[m
		  [01;34mbegin[m
		     [01;34mif[m E[31m.[mId_transaction [31m=[m Id_Transaction [01;34mthen[m				 
			Facture [31m:=[m E[31m;[m
			Success [31m:=[m True[31m;[m
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m
	    [01;34mend[m Get[31m;[m
	 [01;34mor[m
	    [01;34maccept[m [01;30mPaiement[m[31m([mId_Transaction [31m:[m [01;34min[m Natural[31m)[m [01;34mdo[m
	       [01;34mfor[m F [01;34min[m [35m1[m[31m..[mFacture_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mfactures[31m)[m [01;34mloop[m
		  [01;34mdeclare[m
		     E [31m:[m facture_Record [31m:=[m Facture_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mFactures[31m,[m F[31m);[m
		  [01;34mbegin[m
		     [01;34mif[m E[31m.[mId_transaction [31m=[m Id_Transaction [01;34mthen[m				 
			E[31m.[mPayed [31m:=[m True[31m;[m
			Facture_Vectors[31m.[m[01;30mReplace_element[m[31m([mBusiness[31m.[mFactures[31m,[m F[31m,[m E[31m);[m
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m
	       [01;34mfor[m Cmd [01;34min[m [35m1[m[31m..[mCommand_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mCommandes[31m)[m [01;34mloop[m
		  [01;34mdeclare[m
		     E [31m:[m Command_Record [31m:=[m Command_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mCommandes[31m,[m Cmd[31m);[m
		  [01;34mbegin[m
		     [01;34mif[m E[31m.[mId_transaction [31m=[m Id_Transaction [01;34mthen[m				 
			E[31m.[mPayed [31m:=[m True[31m;[m
			Command_Vectors[31m.[m[01;30mReplace_element[m[31m([mBusiness[31m.[mCommandes[31m,[m Cmd[31m,[m E[31m);[m
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m
	       [01;34mfor[m F [01;34min[m [35m1[m[31m..[mClient_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mClients[31m)[m [01;34mloop[m
		  [01;34mdeclare[m
		     E [31m:[m Client_Record [31m:=[m Client_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mClients[31m,[m F[31m);[m
		  [01;34mbegin[m
		     [01;34mif[m E[31m.[mId_transaction [31m=[m Id_Transaction [01;34mthen[m				 
			E[31m.[mPayed [31m:=[m True[31m;[m
			Client_Vectors[31m.[m[01;30mReplace_element[m[31m([mBusiness[31m.[mClients[31m,[m F[31m,[m E[31m);[m
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m
	    [01;34mend[m Paiement[31m;[m
	 [01;34mor[m
	    [01;34maccept[m [01;30mDelete[m[31m([mId_Transaction [31m:[m [01;34min[m Natural[31m;[m Success [31m:[m [01;34mout[m [32mBoolean[m[31m)[m [01;34mdo[m
	       Success [31m:=[m False[31m;[m

	       [01;34mfor[m C [01;34min[m [35m1[m[31m..[mClient_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mClients[31m)[m [01;34mloop[m

		  [01;34mdeclare[m
		     E [31m:[m [01;34mconstant[m Client_Record [31m:=[m Client_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mClients[31m,[m C[31m);[m
		  [01;34mbegin[m

		     [01;34mif[m E[31m.[mId_transaction [31m=[m Id_Transaction [01;34mthen[m

			[01;34mfor[m F [01;34min[m [35m1[m[31m..[mFacture_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mfactures[31m)[m [01;34mloop[m

			   [01;34mdeclare[m
			      E [31m:[m [01;34mconstant[m facture_Record [31m:=[m Facture_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mFactures[31m,[m F[31m);[m
			   [01;34mbegin[m

			      [01;34mif[m [01;30mClient_record[m[31m([mE[31m).[mId_transaction [31m=[m Id_Transaction [01;34mthen[m				 
				 Facture_Vectors[31m.[m[01;30mdelete[m[31m([mBusiness[31m.[mFactures[31m,[m  F[31m);[m
			      [01;34mend[m [01;34mif[m[31m;[m
			   [01;34mend[m[31m;[m
			[01;34mend[m [01;34mloop[m[31m;[m

			[01;34mfor[m cmd [01;34min[m [35m1[m[31m..[mCommand_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mCommandes[31m)[m [01;34mloop[m

			   [01;34mdeclare[m
			      E [31m:[m [01;34mconstant[m Command_Record [31m:=[m Command_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mCommandes[31m,[m cmd[31m);[m
			   [01;34mbegin[m

			      [01;34mif[m [01;30mClient_record[m[31m([mE[31m).[mId_Transaction [31m=[m Id_transaction [01;34mthen[m				 
				 Command_Vectors[31m.[m[01;30mdelete[m[31m([mBusiness[31m.[mCommandes[31m,[m  cmd[31m);[m
			      [01;34mend[m [01;34mif[m[31m;[m
			   [01;34mend[m[31m;[m
			[01;34mend[m [01;34mloop[m[31m;[m

			Client_Vectors[31m.[m[01;30mdelete[m[31m([mBusiness[31m.[mClients[31m,[m  C[31m);[m
			Success [31m:=[m True[31m;[m			
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m
	    [01;34mend[m Delete[31m;[m
	 [01;34mor[m
	    [01;34maccept[m [01;30mAdd[m[31m([mClient [31m:[m [01;34min[m [01;34mout[m Client_Record[31m;[m Command [31m:[m [01;34min[m [01;34mout[m Command_Record[31m;[m Facture [31m:[m [01;34min[m [01;34mout[m Facture_Record[31m;[m Success [31m:[m [01;34mout[m [32mBoolean[m[31m;[m Id_Transaction [31m:[m [01;34mout[m Natural[31m)[m [01;34mdo[m
	       Success [31m:=[m False[31m;[m
	       Client[31m.[mId_Transaction [31m:=[m Business[31m.[mId_Transaction [31m+[m [35m1[m[31m;[m
	       Command[31m.[mId_Transaction [31m:=[m Business[31m.[mId_Transaction [31m+[m [35m1[m[31m;[m
	       Facture[31m.[mId_Transaction [31m:=[m Business[31m.[mId_Transaction [31m+[m [35m1[m[31m;[m
	       Business[31m.[mClients [31m:=[m Client_Vectors[31m.[m[31m"&"[m[31m([mBusiness[31m.[mClients[31m,[m Client[31m);[m
	       Business[31m.[mCommandes [31m:=[m Command_Vectors[31m.[m[31m"&"[m[31m([mBusiness[31m.[mCommandes[31m,[m Command[31m);[m
	       Business[31m.[mFactures [31m:=[m Facture_Vectors[31m.[m[31m"&"[m[31m([mBusiness[31m.[mFactures[31m,[m Facture[31m);[m
	       Success [31m:=[m True[31m;[m
	       Id_Transaction [31m:=[m Business[31m.[mId_Transaction [31m+[m [35m1[m[31m;[m
	       Business[31m.[mId_Transaction [31m:=[m Business[31m.[mId_Transaction [31m+[m [35m1[m[31m;[m
	    [01;34mend[m Add[31m;[m
	 [01;34mor[m	    
	    [01;34maccept[m [01;30mDelete[m[31m([mClient [31m:[m [01;34min[m Client_Record[31m;[m Success [31m:[m [01;34mout[m [32mBoolean[m[31m)[m [01;34mdo[m
	       Success [31m:=[m False[31m;[m
	       [01;34mfor[m C [01;34min[m [35m1[m[31m..[mClient_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mClients[31m)[m [01;34mloop[m
		  [01;34mdeclare[m
		     E [31m:[m [01;34mconstant[m Client_Record [31m:=[m Client_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mClients[31m,[m C[31m);[m
		  [01;34mbegin[m
		     [01;34mif[m E [31m=[m Client [01;34mthen[m
			[01;34mfor[m F [01;34min[m [35m1[m[31m..[mFacture_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mfactures[31m)[m [01;34mloop[m
			   [01;34mdeclare[m
			      E [31m:[m [01;34mconstant[m facture_Record [31m:=[m Facture_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mFactures[31m,[m F[31m);[m
			   [01;34mbegin[m
			      [01;34mif[m [01;30mClient_record[m[31m([mE[31m)[m [31m=[m Client [01;34mthen[m				 
				 Facture_Vectors[31m.[m[01;30mdelete[m[31m([mBusiness[31m.[mFactures[31m,[m  F[31m);[m
			      [01;34mend[m [01;34mif[m[31m;[m
			   [01;34mend[m[31m;[m
			[01;34mend[m [01;34mloop[m[31m;[m
			[01;34mfor[m cmd [01;34min[m [35m1[m[31m..[mCommand_Vectors[31m.[m[01;30mLast_Index[m[31m([mBusiness[31m.[mCommandes[31m)[m [01;34mloop[m
			   [01;34mdeclare[m
			      E [31m:[m [01;34mconstant[m Command_Record [31m:=[m Command_Vectors[31m.[m[01;30mElement[m[31m([mBusiness[31m.[mCommandes[31m,[m cmd[31m);[m
			   [01;34mbegin[m
			      [01;34mif[m [01;30mClient_record[m[31m([mE[31m)[m [31m=[m Client [01;34mthen[m				 
				 Command_Vectors[31m.[m[01;30mdelete[m[31m([mBusiness[31m.[mCommandes[31m,[m  cmd[31m);[m
			      [01;34mend[m [01;34mif[m[31m;[m
			   [01;34mend[m[31m;[m
			[01;34mend[m [01;34mloop[m[31m;[m
			Client_Vectors[31m.[m[01;30mdelete[m[31m([mBusiness[31m.[mClients[31m,[m  C[31m);[m
			Success [31m:=[m True[31m;[m			
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m
	    [01;34mend[m Delete[31m;[m					      
	 [01;34mor[m
	    [01;34maccept[m [01;30mMessage[m[31m([mMsg [31m:[m [01;34min[m [32mWide_String[m[31m)[m [01;34mdo[m
	       New_Line[31m;[m
	       [01;30mPut_Line[m[31m([mMsg[31m);[m
	       New_Line[31m;[m
	    [01;34mend[m Message[31m;[m
	 [01;34mor[m
	    [01;34maccept[m [01;30mReceive[m [31m([mWchar [31m:[m [01;34min[m Wide_Character[31m);[m
	 [01;34mor[m
	    [01;34maccept[m Halt[31m;[m

	    [01;34mexit[m[31m;[m
	 [01;34mend[m [01;34mselect[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
   [01;34mend[m Console_Process[31m;[m
   
   
   
   Business [31m:[m Business_Manager[31m;[m
   
   
   
   [01;34mtask[m Main_Server [01;34mis[m
      [01;34mentry[m Initialize[31m;[m
      [01;34mentry[m Start[31m;[m
      [01;34mentry[m Stop[31m;[m
      [01;34mentry[m Halt[31m;[m
   [01;34mend[m Main_Server[31m;[m
   
   [01;34mtask[m Products_Server [01;34mis[m
      [01;34mentry[m Initialize[31m;[m
      [01;34mentry[m Start[31m;[m
      [01;34mentry[m Stop[31m;[m
      [01;34mentry[m Halt[31m;[m
   [01;34mend[m Products_Server[31m;[m
   
   
   
   
   [01;34mtask[m [01;34mbody[m Server [01;34mis[m
      End_Of_Task [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      Add  [31m:[m Gnat[31m.[msockets[31m.[mSock_Addr_Type[31m;[m
      Socket   [31m:[m Socket_Type[31m;[m
   [01;34mbegin[m  
      [01;34maccept[m Initialize[31m;[m

      
      Products_Server[31m.[mInitialize[31m;[m
      Main_Server[31m.[mInitialize[31m;[m
      [01;34maccept[m Start [01;34mdo[m
	 Products_Server[31m.[mStart[31m;[m
	 Main_Server[31m.[mStart[31m;[m
	 
      [01;34mend[m Start[31m;[m

      [01;34mloop[m
	 [01;34mselect[m
	    [01;34maccept[m Initialize[31m;[m
	 [01;34mor[m
	    [01;34maccept[m [01;30mStandby[m[31m([mEnd_Of_Program [31m:[m [01;34mout[m [32mBoolean[m[31m)[m [01;34mdo[m
	       End_Of_Program [31m:=[m End_Of_Task[31m;[m
	    [01;34mend[m Standby[31m;[m
	    [01;34mexit[m[31m;[m
	 [01;34mor[m
	    [01;34maccept[m Start [01;34mdo[m
	       Products_Server[31m.[mStart[31m;[m
	       Main_Server[31m.[mStart[31m;[m

	    [01;34mend[m Start[31m;[m
	 [01;34mor[m
	    [01;34maccept[m Stop[31m;[m

	    Add[31m.[mAddr [31m:=[m
	      Gnat[31m.[mSockets[31m.[m[01;30mAddresses[m [31m([mGnat[31m.[mSockets[31m.[m[01;30mGet_Host_By_Name[m [31m([m[31m"localhost"[m[31m),[m [35m1[m[31m);[m
	    
	    Add[31m.[mPort [31m:=[m [35m1970[m[31m;[m
	    Gnat[31m.[msockets[31m.[m[01;30mCreate_Socket[m [31m([mSocket[31m);[m
	    [01;34mdelay[m [35m0.1[m[31m;[m
	    Gnat[31m.[mSockets[31m.[mSet_Socket_Option
	      [31m([mSocket[31m,[m
	       Gnat[31m.[mSockets[31m.[mSocket_Level[31m,[m
	       [31m([mGnat[31m.[mSockets[31m.[mReuse_Address[31m,[m True[31m));[m      
	    [01;34mdelay[m [35m0.1[m[31m;[m      
	    Gnat[31m.[msockets[31m.[m[01;30mConnect_Socket[m [31m([mSocket[31m,[m Add[31m);[m
	    [01;34mdelay[m [35m0.1[m[31m;[m
	    Sockets[31m.[m[01;30mClose_Socket[m[31m([mSocket[31m);[m

	    Main_Server[31m.[mStop[31m;[m
	    
	    Add[31m.[mPort [31m:=[m [35m1988[m[31m;[m
	    Gnat[31m.[msockets[31m.[m[01;30mCreate_Socket[m [31m([mSocket[31m);[m
	    [01;34mdelay[m [35m0.1[m[31m;[m
	    Gnat[31m.[mSockets[31m.[mSet_Socket_Option
	      [31m([mSocket[31m,[m
	       Gnat[31m.[mSockets[31m.[mSocket_Level[31m,[m
	       [31m([mGnat[31m.[mSockets[31m.[mReuse_Address[31m,[m True[31m));[m      
	    [01;34mdelay[m [35m0.1[m[31m;[m      
	    Gnat[31m.[msockets[31m.[m[01;30mConnect_Socket[m [31m([mSocket[31m,[m Add[31m);[m
	    [01;34mdelay[m [35m0.1[m[31m;[m
	    Sockets[31m.[m[01;30mClose_Socket[m[31m([mSocket[31m);[m

	    Products_Server[31m.[mStop[31m;[m
	       
	 [01;34mor[m
	    [01;34maccept[m Halt [01;34mdo[m
	       End_Of_Task [31m:=[m True[31m;[m	       

	       Business[31m.[mConsole[31m.[mhalt[31m;[m

	    [01;34mend[m Halt[31m;[m
	    Main_Server[31m.[mHalt[31m;[m
	    Products_Server[31m.[mHalt[31m;[m
	    [01;34mexit[m[31m;[m
	 [01;34mend[m [01;34mselect[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m      
   [01;34mend[m Server[31m;[m
   
   [01;34mprocedure[m Ctrl_C_Procedure [01;34mis[m
      Add  [31m:[m Gnat[31m.[msockets[31m.[mSock_Addr_Type[31m;[m
      Socket   [31m:[m Socket_Type[31m;[m
      
      
      
   [01;34mbegin[m

      

      Add[31m.[mAddr [31m:=[m
	   Gnat[31m.[mSockets[31m.[m[01;30mAddresses[m [31m([mGnat[31m.[mSockets[31m.[m[01;30mGet_Host_By_Name[m [31m([m[31m"localhost"[m[31m),[m [35m1[m[31m);[m
      
      Add[31m.[mPort [31m:=[m [35m1970[m[31m;[m
      Gnat[31m.[msockets[31m.[m[01;30mCreate_Socket[m [31m([mSocket[31m);[m
      [01;34mdelay[m [35m0.1[m[31m;[m
      Gnat[31m.[mSockets[31m.[mSet_Socket_Option
	[31m([mSocket[31m,[m
	 Gnat[31m.[mSockets[31m.[mSocket_Level[31m,[m
	 [31m([mGnat[31m.[mSockets[31m.[mReuse_Address[31m,[m True[31m));[m      
      [01;34mdelay[m [35m0.1[m[31m;[m      
      Gnat[31m.[msockets[31m.[m[01;30mConnect_Socket[m [31m([mSocket[31m,[m Add[31m);[m
      [01;34mdelay[m [35m0.1[m[31m;[m
      Sockets[31m.[m[01;30mClose_Socket[m[31m([mSocket[31m);[m

      Add[31m.[mPort [31m:=[m [35m1988[m[31m;[m
      Gnat[31m.[msockets[31m.[m[01;30mCreate_Socket[m [31m([mSocket[31m);[m
      [01;34mdelay[m [35m0.1[m[31m;[m
      Gnat[31m.[mSockets[31m.[mSet_Socket_Option
	[31m([mSocket[31m,[m
	 Gnat[31m.[mSockets[31m.[mSocket_Level[31m,[m
	 [31m([mGnat[31m.[mSockets[31m.[mReuse_Address[31m,[m True[31m));[m      
      [01;34mdelay[m [35m0.1[m[31m;[m      
      Gnat[31m.[msockets[31m.[m[01;30mConnect_Socket[m [31m([mSocket[31m,[m Add[31m);[m
      [01;34mdelay[m [35m0.1[m[31m;[m
      Sockets[31m.[m[01;30mClose_Socket[m[31m([mSocket[31m);[m
      
      Server[31m.[mHalt[31m;[m      
      [01;30mPut_Line[m[31m([m[31m"End of Ctrl_C_Process"[m[31m);[m
   [01;34mend[m Ctrl_C_Procedure[31m;[m
   
   [01;34mtype[m Socket_Access [01;34mis[m [01;34maccess[m [01;34mall[m Socket_Type[31m;[m
   
   [01;34mtask[m [01;34mtype[m [01;30mHuman_Thread_Server[m[31m([mSocket [31m:[m Socket_Access[31m)[m [01;34mis[m
      [01;34mentry[m [01;30mGet_Id[m[31m([mId [31m:[m [01;34mout[m Task_Id[31m);[m
   [01;34mend[m Human_Thread_Server[31m;[m
   
   [01;34mtype[m Thread_server_Access [01;34mis[m [01;34maccess[m Human_Thread_server[31m;[m
   
   [01;34mtype[m Human_Thread_Server_Task [01;34mis[m
      [01;34mrecord[m
	 Id [31m:[m Task_Id [31m:=[m Null_Task_id[31m;[m
	 Thread_server [31m:[m Thread_server_access[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m
   [01;34mtype[m thread_server_Task_Access [01;34mis[m [01;34maccess[m Human_Thread_Server_Task[31m;[m   
   
   
   
   
   [31m--  task body Human_Thread_Server is[m
      
   [31m--     type String_Access is access all String;[m
      
   [31m--     Channel         : constant Stream_Access := Stream(Socket.all);[m
   [31m--     Logname         : constant String_Access := new String ' ("webi");[m
   [31m--     Passwd          : constant Gnat.sha1.Message_Digest := Sha1.Digest("webi");[m
   [31m--     Logged          : Boolean := False;[m
      
   [31m--     Logname_Input : String_Access;[m
   [31m--     Passwd_Input   : Gnat.Sha1.Message_Digest;[m
   [31m--     Enregistrement : Enregistrement_Record;[m
      
   [31m--     Bank_Info : Bank_Info_Type := Null_Card;[m
   [31m--     Command : Command_Record;[m
   [31m--     Index : Natural := 0;[m
   [31m--     Facture : Facture_Record;[m
   [31m--     Sum : Price_Type := 0.0;[m
   [31m--     TVA : Price_Type := 0.0;[m
      
   [31m--     Client  : Client_Record;[m
   [31m--     Bank_Card  : Bank_Info_Type := Null_Card;[m
   [31m--     Success    : Boolean := False;[m
   [31m--     Id_Transaction : Natural := 0;[m
   [31m--     Step : Command_Enum := Null_item;[m
   [31m--     File : File_Type;[m
      
   [31m--     Payed : Boolean := False;[m
      
   [31m--  begin[m
      
   [31m--     accept Get_Id(Id : out Task_Id) do[m
   [31m--  	 Id := Current_Task;[m
   [31m--     end Get_Id;      [m
   [31m--     Logname_input := new String ' (String'Input(Channel)); [m
   [31m--     Passwd_Input :=  Sha1.Message_Digest'Input(Channel);[m
   [31m--     if Logname_Input.all = Logname.all and[m
   [31m--  	Passwd_Input = Passwd then[m
   [31m--  	 --Wide_Text_Io.Put_Line("Checking for user """ & Logname.all & """");	 	    	 [m
   [31m--  	 Logged := True;[m
   [31m--  	 --Wide_Text_Io.Put_Line("Adduser for user """ & Logname.all & """");[m
   [31m--     end if;	 [m
   [31m--     Boolean'Output(Channel, Logged);[m
   [31m--     Text_Io.Put_Line("Logged : " & Boolean'Image(Logged));[m
   [31m--     if Logged then[m
	 
   [31m--  	 Step := Command_Enum'Input(Channel);[m
   [31m--  	 Put_Line("Step : " & To_Wide_String(Command_Enum'Image(Step)));[m
   [31m--  	 case Step is[m
   [31m--  	    when Cmd =>[m
   [31m--  	       Open(File, Append_File, "cmd.txt", Form=>"WCEM=8");[m
   [31m--  	       Put_Line(File, "Command: " & To_Wide_String(Formatting.Image(Clock)));[m
   [31m--  	       Put_Line("Command: " & To_Wide_String(Formatting.Image(Clock)));[m
   [31m--  	       begin[m
		  
   [31m--  		  Text_Io.Put_Line("Command...");[m
		  
		  
   [31m--  		  Enregistrement.coordonates.name := Wide_String'Input(Channel);[m
   [31m--  		  Enregistrement.coordonates.Email := String'Input(Channel);[m
   [31m--  		  Enregistrement.coordonates.Address := Wide_String'Input(Channel);[m
   [31m--  		  Enregistrement.coordonates.Phone := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(1) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(2) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(3) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(4) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(5) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(6) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(7) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(8) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(9) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Programs(10) := String'Input(Channel);[m
   [31m--  		  Enregistrement.Logicial.Objectif := Wide_String'Input(Channel);[m
   [31m--  		  Enregistrement.Logicial.Motivations := Wide_String'Input(Channel);[m
   [31m--  		  Enregistrement.Logicial.Objet := Wide_String'Input(Channel);[m
   [31m--  		  Enregistrement.Logicial.Arguments := Wide_String'Input(Channel);[m
		  
		  
   [31m--  		  New_Line;[m
		  
		  
   [31m--  		  for Program in 1..5 loop[m
   [31m--  		     declare[m
   [31m--  			Product : Product_Enum := Null_Item;[m
			
   [31m--  		     begin[m
   [31m--  			Product := Product_Enum'Value(Enregistrement.Programs(Program));[m
   [31m--  			if Product /= Null_Item then[m
   [31m--  			   Command.Products(Product) := My_Prices(Product);		     [m
   [31m--  			   Index := Index + 1;[m
   [31m--  			end if;[m
   [31m--  		     exception[m
   [31m--  			when others =>[m
   [31m--  			   null;	       [m
   [31m--  		     end;[m
   [31m--  		  end loop;[m
   [31m--  		  Text_Io.Put_Line("Prices...");[m
		  
   [31m--  		  for Product in Product_Enum loop[m
   [31m--  		     Command.Ht_Sum := Command.Ht_Sum + Command.Products(Product);[m
   [31m--  		  end loop;[m
   [31m--  		  for Product in Product_Enum loop[m
   [31m--  		     Command.TVA := Command.TVA + Price_Type(Price_type(Command.Products(Product) / 100.0)) * 10.0;[m
   [31m--  		  end loop;[m
   [31m--  		  Text_Io.Put_Line("TVA...");[m
   [31m--  		  Command.TTC_Sum := Command.Ht_Sum + Command.Tva;[m
   [31m--  		  Text_Io.Put_Line("Total...");[m
   [31m--  		  Natural'Output(Channel, Index);[m
   [31m--  		  Text_Io.Put_Line("index...");[m
   [31m--  		  for Product in skywalker..Product_Enum'Pred(Null_Item) loop[m
   [31m--  		     if Command.Products(Product) /= 0.0 then[m
   [31m--  			Product_enum'Output (Channel, Product);[m
   [31m--  			Price_Type 'Output(Channel, Command.Products(Product));		  [m
   [31m--  		     end if;[m
   [31m--  		  end loop;[m
   [31m--  		  Price_Type'Output(Channel, Command.Ht_Sum);[m
   [31m--  		  Price_Type'Output(Channel, Command.TVA);[m
   [31m--  		  Price_Type'Output(Channel, Command.TTC_Sum);[m
		  
		  
		  
		  
   [31m--  		  Put_Line(File, "-----------------------------------------------------");[m
   [31m--  		  Put_Line(File, "--                                                 --");[m
   [31m--  		  Put_Line(File, "--                 NEW CLIENT                      --");[m
   [31m--  		  Put_Line(File, "--                                                 --");[m
   [31m--  		  Put_Line(File, "-----------------------------------------------------");[m
   [31m--  		  Put_Line(File, Enregistrement.Coordonates.Name);[m
   [31m--  		  Put_Line(File, To_Wide_String(Enregistrement.Coordonates.Email));[m
   [31m--  		  Put_Line(File, Enregistrement.Coordonates.Address);[m
   [31m--  		  Put_Line(File, To_Wide_String(Enregistrement.Coordonates.Phone));[m
   [31m--  		  New_Line(File);	    [m
   [31m--  		  New_Line(File);[m
   [31m--  		  Put_Line(File, Enregistrement.logicial.Objectif);[m
   [31m--  		  Put_Line(File, Enregistrement.logicial.Motivations);[m
   [31m--  		  Put_Line(File, Enregistrement.logicial.Objet);[m
   [31m--  		  Put_Line(File, Enregistrement.logicial.Arguments);[m
   [31m--  		  New_Line(File);[m
   [31m--  		  for Product in Skywalker..Product_Enum'Pred(Null_Item) loop[m
   [31m--  		     if Command.Products(Product) /= 0.0 then[m
   [31m--  			Put(File, To_Wide_String(Product_Enum'Image(Product)) & " : ");[m
   [31m--  			Put_Line(File, To_Wide_String(Price_Type 'image(Command.Products(Product))) & " euro ;"); [m
			
   [31m--  		     end if;[m
   [31m--  		  end loop;[m
   [31m--  		  Put_Line(File, "Total HT   : " & To_Wide_String(Price_Type'image(Command.Ht_Sum)) & " euro ; ");[m
   [31m--  		  Put_Line(File, "Total TVA  : " & To_Wide_String(Price_Type'image(Command.TVA)) & " euro ; ");[m
   [31m--  		  Put_Line(File, "total TTC  : " & To_Wide_String(Price_Type'image(Command.TTC_Sum)) & " euro ");[m
		  
   [31m--  		  Close(File);[m
   [31m--  		  Command_Record(Facture) := Command;	    [m
   [31m--  		  Client := Client_Record(Facture);[m
   [31m--  		  Business.Console.Add(Client, Command, Facture, Success, Id_transaction);[m
   [31m--  		  if Success then[m
   [31m--  		     if Id_Transaction /= 0 then[m
			
   [31m--  			Natural'Output(Channel, Id_Transaction);[m
			
   [31m--  		     end if;	    [m
		     
   [31m--  		  else[m
   [31m--  		     Business.Console.Message("Client " & Client.Name & " not registered !");[m
   [31m--  		     --  Put_Line(Enregistrement.Coordonates.Name);[m
   [31m--  		     --  Put_Line(To_Wide_String(Enregistrement.Coordonates.Email));[m
   [31m--  		     --  Put_Line(Enregistrement.Coordonates.Address);[m
   [31m--  		     --  Put_Line(To_Wide_String(Enregistrement.Coordonates.Phone));[m
   [31m--  		     --  New_Line;[m
   [31m--  		     --  for I in 1..5 loop[m
   [31m--  		     --  	  Put_Line(To_Wide_String(Enregistrement.Programs(I)));[m
   [31m--  		     --  end loop;[m
   [31m--  		     --  New_Line;[m
   [31m--  		     --  Put_Line(Enregistrement.logicial.Objectif);[m
   [31m--  		     --  Put_Line(Enregistrement.logicial.Motivations);[m
   [31m--  		     --  Put_Line(Enregistrement.logicial.Objet);[m
   [31m--  		     --  Put_Line(Enregistrement.logicial.Arguments);[m
   [31m--  		     --  New_Line;[m
		     
   [31m--  		     --  else[m
   [31m--  		     --  	  Business.Console.Message("Client " & Client.Name & " deleted !");[m
   [31m--  		     --  end if;	   	       [m
   [31m--  		  end if;[m
		  
		  
		  
   [31m--  	       exception[m
   [31m--  		  when Socket_Exception : Socket_Error =>		  [m
   [31m--  		     --Ada.Text_Io.Put_Line(Error_Type'Image(Resolve_Exception(Socket_Exception)));[m
		     
   [31m--  		     raise;[m
   [31m--  		  when Host_Exception : Host_Error =>[m
   [31m--  		     --Ada.Text_Io.Put_Line(Error_Type'Image(Resolve_Exception(Host_Exception)));[m
		     
   [31m--  		     raise;[m
   [31m--  		  when others =>		  [m
		     
   [31m--  		     --Environment_Thread.Halt;[m
   [31m--  		     --Text_Io.Put_Line("Human_Thread_Server : others exception environment halted.");		  [m
   [31m--  		     raise;[m
   [31m--  	       end;[m
   [31m--  	    when Paiement =>[m
   [31m--  	       Open(File, Append_File,"cmd.Txt", Form=>"WCEM=8");[m
   [31m--  	       Put_Line(File, "Paiement: ");[m
   [31m--  	       Id_Transaction := Natural'Input(Channel);[m
	       
   [31m--  	       Put_Line(File, "Transaction No" & To_Wide_String(Natural'Image(Id_Transaction)));[m
   [31m--  	       Business.Console.Get(Id_Transaction, Facture, success);[m
   [31m--  	       if Success then[m
		  
   [31m--  		  Command := Command_Record(Facture);[m
   [31m--  		  for Product in Skywalker..Product_Enum'Pred(Null_Item) loop[m
   [31m--  		     if Command.Products(Product) /= 0.0 then[m
			
   [31m--  			Put(To_Wide_String(Product_Enum'Image(Product)) & " : ");[m
   [31m--  			Put_Line(To_Wide_String(Price_Type 'image(Command.Products(Product))) & " No ;"); [m
   [31m--  			Index := Index + 1;[m
   [31m--  		     end if;[m
   [31m--  		  end loop;[m
   [31m--  		  Put_Line(File, "Total HT   : " & To_Wide_String(Price_Type'image(Command.Ht_Sum)) & " euro. ; ");[m
   [31m--  		  Put_Line(File, "Total TVA  : " & To_Wide_String(Price_Type'image(Command.TVA)) & " euro. ; ");[m
   [31m--  		  Put_Line(File, "total TTC  : " & To_Wide_String(Price_Type'image(Command.TTC_Sum)) & " euro. ");[m
		  

   [31m--  		  --------------------------------------------------[m
   [31m--  		  -- Facture :[m
   [31m--  		  --------------------------------------------------		  [m
		  
   [31m--  		  Natural'Output(Channel, Index);		  [m
		  
		  
		  
   [31m--  		  for Product in Skywalker..Product_Enum'Pred(Null_Item) loop[m
   [31m--  		     if Command.Products(Product) /= 0.0 then[m
			
   [31m--  			Product_enum'Output (Channel, Product);[m
   [31m--  			Price_Type 'Output(Channel, Command.Products(Product));		  [m
   [31m--  		     end if;[m
   [31m--  		  end loop;[m
   [31m--  		  Price_Type'Output(Channel, Command.Ht_Sum);[m
   [31m--  		  Price_Type'Output(Channel, Command.TVA);[m
   [31m--  		  Price_Type'Output(Channel, Command.TTC_Sum);		  [m
		  
   [31m--  		  declare[m

   [31m--  		     Outvoice : OutVoice_Record;[m
   [31m--  		  begin[m
   [31m--  		     Outvoice.Account_Num := 707;[m
   [31m--  		     Outvoice.Total_Ht := Fixed_Total(Command.Ht_Sum);[m
   [31m--  		     Outvoice.Total_TVA := Fixed_Total(Command.TVA);[m
   [31m--  		     Outvoice.Total_TTC := Fixed_Total(Command.TTC_Sum);[m
   [31m--  		     Outvoice.Date := Clock;[m
		     
   [31m--  		     Charge(M.Balance.Balance, Outvoice, Payed);[m
		     
   [31m--  		     if Payed then[m

   [31m--  			Outvoice.Date := Clock;[m

   [31m--  			Outvoice.Account_Num := Outvoice.Accounting(1).Account_Num;[m

   [31m--  			Outvoice.voice_Num := M.Balance.Outvoice_Num + 1;[m

   [31m--  			M.Balance.Outvoice_Num := M.Balance.Outvoice_Num + 1;[m

   [31m--  			if Save(Outvoice, "charged.txt") then[m
			   
   [31m--  			   Add(Accounts, Outvoice);[m
   [31m--  			   for Product in Skywalker..Product_Enum'Pred(Null_Item) loop[m
   [31m--  			      if Command.Products(Product) /= 0.0 then[m
   [31m--  				 declare[m
   [31m--  				    Stock : Stock_Record;[m
   [31m--  				 begin[m
   [31m--  				    Move(To_Wide_String(Product_Enum'Image(Product)), stock.Name);[m
   [31m--  				    Sky.Stocks_Manager.Remove_From_stock(Sky.Stocks_Manager.Hardware, Stock.Name, 1.0);[m
   [31m--  				 end;[m
   [31m--  			      end if;[m
   [31m--  			   end loop;[m
   [31m--  			   Outvoice := Null_Outvoice;[m
   [31m--  			end if;[m
			
   [31m--  		     else[m
   [31m--  			Put_Line("bad Request in Get");[m
   [31m--  		     end if;[m
   [31m--  		  end;[m
   [31m--  	       end if;[m
   [31m--  	       Close(File);[m
	       
   [31m--  	    when others =>[m
   [31m--  	       raise Program_Error;[m
   [31m--  	 end case;[m
	 

   [31m--  	 --Environment_Thread.Halt;[m
   [31m--  	 --Text_Io.Put_Line("Human_Thread_Server : environment halted.");[m
   [31m--  	 Gnat.Sockets.Close_Socket(Socket.all);[m
   [31m--     else[m
   [31m--  	 Gnat.Sockets.Close_Socket (Socket.all);[m
   [31m--     end if;[m
   [31m--  exception[m
   [31m--     when Constraint_Error =>[m
   [31m--  	 --Text_Io.Put_Line("Human_Thread_Server : Constraint_error");[m
   [31m--  	 Gnat.Sockets.Close_Socket(Socket.all);[m
   [31m--  end Human_Thread_Server;[m
   
   Errno [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m
   
   [01;34mfunction[m [01;30mSystem[m[31m([mLine [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mInteger[m[31m;[m
   [01;34mpragma[m [01;30mImport[m [31m([mC[31m,[m System[31m,[m [31m"system"[m[31m);[m
   
   
   
   
   [01;34mprocedure[m [01;30mLast_Planning[m [31m([mObj [31m:[m [01;34min[m Abstract_Access[31m;[mVector [31m:[m [01;34min[m [01;34mout[m Abstract_Vectors[31m.[mVector[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m Obj [31m=[m [01;34mnull[m [01;34mthen[m
	 [01;34mreturn[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      [01;34mif[m Obj[31m.[m[01;34mall[m [01;34min[m Planning_Class [01;34mthen[m
	 Vector [31m:=[m Vector [31m&[m Obj[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      [01;34mif[m Abstract_Vectors[31m.[m[01;30mLength[m[31m([mObj[31m.[mChilds[31m)[m [31m/=[m [35m0[m [01;34mthen[m
	 [01;34mfor[m Child [01;34min[m [35m1[m[31m..[mAbstract_Vectors[31m.[m[01;30mLength[m[31m([mObj[31m.[mChilds[31m)[m [01;34mloop[m
	    [01;34mdeclare[m
	       E [31m:[m [01;34mconstant[m Abstract_Access [31m:=[m Abstract_Vectors[31m.[m[01;30mElement[m[31m([mObj[31m.[mChilds[31m,[m [01;30mAbstract_Index[m[31m([mChild[31m));[m
	    [01;34mbegin[m
	       [01;30mLast_Planning[m[31m([mE[31m,[m Vector[31m);[m
	    [01;34mend[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
   [01;34mend[m last_Planning[31m;[m
   
   
   [01;34mtask[m [01;34mbody[m Human_Thread_Server [01;34mis[m
	 
      [01;34mtype[m String_Access [01;34mis[m [01;34maccess[m [01;34mall[m [32mString[m[31m;[m
      
      Channel         [31m:[m [01;34mconstant[m Stream_Access [31m:=[m [01;30mStream[m[31m([mSocket[31m.[m[01;34mall[m[31m);[m
      Logname         [31m:[m [01;34mconstant[m String_Access [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[31m"webi"[m[31m);[m
      Passwd          [31m:[m [01;34mconstant[m Gnat[31m.[msha1[31m.[mMessage_Digest [31m:=[m Sha1[31m.[m[01;30mDigest[m[31m([m[31m"webi"[m[31m);[m
      Logged          [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      
      Logname_Input [31m:[m String_Access[31m;[m
      Passwd_Input   [31m:[m Gnat[31m.[mSha1[31m.[mMessage_Digest[31m;[m
      Enregistrement [31m:[m Enregistrement_Record[31m;[m
      
      Bank_Info [31m:[m Bank_Info_Type [31m:=[m Null_Card[31m;[m
      Command [31m:[m Command_Record[31m;[m
      Index [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      Facture [31m:[m Facture_Record[31m;[m
      Sum [31m:[m Price_Type [31m:=[m [35m0.0[m[31m;[m
      TVA [31m:[m Price_Type [31m:=[m [35m0.0[m[31m;[m
		  
      Client  [31m:[m Client_Record[31m;[m
      Bank_Card  [31m:[m Bank_Info_Type [31m:=[m Null_Card[31m;[m
      Success    [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      Id_Transaction [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      Step [31m:[m Command_Enum [31m:=[m Null_item[31m;[m
      File [31m:[m File_Type[31m;[m
      
      Payed [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      
      Project_Name [31m:[m Wide_String_Access[31m;[m
      Filename     [31m:[m String_Access[31m;[m
      Directory [31m:[m String_Access[31m;[m

      fullpath [31m:[m String_Access[31m;[m
      Version_Line [31m:[m String_Access[31m;[m
      Project_File [31m:[m File_Type[31m;[m
      Lib_Set      [31m:[m [01;30mWide_String_Set[m[31m([m[35m255[m[31m);[m
      Lib_Last     [31m:[m Natural [31m:=[m [35m0[m[31m;[m
         Old_Pwd [31m:[m Wide_String_Access[31m;[m
      Errno        [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m
      
      Month_Count [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      
      Done [31m:[m String_Access[31m;[m
      Buff [31m:[m Engineer[31m.[mClasses[31m.[mAbstract_Access[31m;[m
   [01;34mbegin[m
      
      [01;34maccept[m [01;30mGet_Id[m[31m([mId [31m:[m [01;34mout[m Task_Id[31m)[m [01;34mdo[m
	 Id [31m:=[m Current_Task[31m;[m
      [01;34mend[m Get_Id[31m;[m      
      
      
      Logname_input [31m:=[m [01;34mnew[m [32mString[m [31m' (String'[m[01;30mInput[m[31m([mChannel[31m));[m 
      Passwd_Input [31m:=[m  Sha1[31m.[mMessage_Digest'[01;30mInput[m[31m([mChannel[31m);[m
      [01;34mif[m Logname_Input[31m.[m[01;34mall[m [31m=[m Logname[31m.[m[01;34mall[m [01;34mand[m
	 Passwd_Input [31m=[m Passwd [01;34mthen[m
	 [31m--Wide_Text_Io.Put_Line("Checking for user """ & Logname.all & """");	 	    	 [m
	 Logged [31m:=[m True[31m;[m
	 [31m--Wide_Text_Io.Put_Line("Adduser for user """ & Logname.all & """");[m
      [01;34mend[m [01;34mif[m[31m;[m	 

      [32mBoolean[m'[01;30mOutput[m[31m([mChannel[31m,[m Logged[31m);[m

      [01;34mif[m Logged [01;34mthen[m

	 Step [31m:=[m Command_Enum'[01;30mInput[m[31m([mChannel[31m);[m

	 [01;34mcase[m Step [01;34mis[m
	    [01;34mwhen[m Cmd [31m=>[m
	       
	       
	       
	       
	       [01;34mbegin[m
		  
		  
		  
		  
		  Enregistrement[31m.[mcoordonates[31m.[mname [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mcoordonates[31m.[mEmail [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mcoordonates[31m.[mAddress [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mcoordonates[31m.[mPhone [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m1[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m2[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m3[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m4[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m5[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m6[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m7[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m8[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m9[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m10[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mLogicial[31m.[mObjectif [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mLogicial[31m.[mMotivations [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mLogicial[31m.[mObjet [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mLogicial[31m.[mArguments [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  
		  

		  [01;34mfor[m Program [01;34min[m [35m1[m[31m..[mProduct_Enum[31m'Pos(Product_Enum'[mLast[31m)[m [31m+[m [35m1[m [01;34mloop[m
		     [01;34mdeclare[m
		  	Product [31m:[m Product_Enum [31m:=[m Null_Item[31m;[m
			
		     [01;34mbegin[m
			
		  	Product [31m:=[m Product_Enum'[01;30mValue[m[31m([mEnregistrement[31m.[m[01;30mPrograms[m[31m([mProgram[31m));[m
		  	[01;34mif[m Product [31m/=[m Null_Item [01;34mthen[m
		  	   Command[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m:=[m [01;30mMy_Prices[m[31m([mProduct[31m);[m		     
		  	   Index [31m:=[m Index [31m+[m [35m1[m[31m;[m			   
		  	[01;34mend[m [01;34mif[m[31m;[m
		     [01;34mexception[m
		  	[01;34mwhen[m [01;34mothers[m [31m=>[m
		  	   [01;34mnull[m[31m;[m
		     [01;34mend[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m

		  [31m--  for Program in Product_Enum'first..Product_Enum'Pred(Null_Item) loop[m
		     
		  [31m--     declare[m
		  [31m--  	Product : Product_Enum := Null_Item;[m
			
		  [31m--     begin[m
		  [31m--  	Product := Product_Enum'Value(Enregistrement.Programs(Product_Enum'Pos(Program)+1));[m
		  [31m--  	if Product /= Null_Item then[m
		  [31m--  	   Command.Products(Product) := My_Prices(Product);		     [m
		  [31m--  	   Index := Index + 1;[m
		  [31m--  	end if;[m
		  [31m--     exception[m
		  [31m--  	when others =>[m
		  [31m--  	   null;[m
		  [31m--     end;[m
		  [31m--  end loop;[m

		  
		  [01;34mfor[m Product [01;34min[m Product_Enum [01;34mloop[m
		     Command[31m.[mHt_Sum [31m:=[m Command[31m.[mHt_Sum [31m+[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m);[m
		  [01;34mend[m [01;34mloop[m[31m;[m

		  [01;34mfor[m Product [01;34min[m Product_Enum [01;34mloop[m
		     Command[31m.[mTVA [31m:=[m Command[31m.[mTVA [31m+[m [01;30mPrice_Type[m[31m([m[01;30mPrice_type[m[31m([mCommand[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m/[m [35m100.0[m[31m))[m [31m*[m [35m10.0[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m

		  Command[31m.[mTTC_Sum [31m:=[m Command[31m.[mHt_Sum [31m+[m Command[31m.[mTva[31m;[m

		  Natural'[01;30mOutput[m[31m([mChannel[31m,[m Index[31m);[m

		  [01;34mfor[m Product [01;34min[m skywalker[31m..[mProduct_Enum'[01;30mPred[m[31m([mNull_Item[31m)[m [01;34mloop[m

		     [01;34mif[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m/=[m [35m0.0[m [01;34mthen[m
			Product_enum'[01;30mOutput[m [31m([mChannel[31m,[m Product[31m);[m
			Price_Type '[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m));[m		  
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m
		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mHt_Sum[31m);[m
		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mTVA[31m);[m
		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mTTC_Sum[31m);[m
		  
		  
		  
		  
		  
		  [01;30mCommand_Record[m[31m([mFacture[31m)[m [31m:=[m Command[31m;[m	    
		  Client [31m:=[m [01;30mClient_Record[m[31m([mFacture[31m);[m
		  Business[31m.[mConsole[31m.[m[01;30mAdd[m[31m([mClient[31m,[m Command[31m,[m Facture[31m,[m Success[31m,[m Id_transaction[31m);[m
		  [01;34mif[m Success [01;34mthen[m
		     [01;34mif[m Id_Transaction [31m/=[m [35m0[m [01;34mthen[m
			
			Natural'[01;30mOutput[m[31m([mChannel[31m,[m Id_Transaction[31m);[m
			
		     [01;34mend[m [01;34mif[m[31m;[m	    
		     
		  [31m--  else[m
		  [31m--     Business.Console.Message("Client " & Client.Name & " not registered !");[m
		  [31m--     --  Put_Line(Enregistrement.Coordonates.Name);[m
		  [31m--     --  Put_Line(To_Wide_String(Enregistrement.Coordonates.Email));[m
		  [31m--     --  Put_Line(Enregistrement.Coordonates.Address);[m
		  [31m--     --  Put_Line(To_Wide_String(Enregistrement.Coordonates.Phone));[m
		  [31m--     --  New_Line;[m
		  [31m--     --  for I in 1..5 loop[m
		  [31m--     --  	  Put_Line(To_Wide_String(Enregistrement.Programs(I)));[m
		  [31m--     --  end loop;[m
		  [31m--     --  New_Line;[m
		  [31m--     --  Put_Line(Enregistrement.logicial.Objectif);[m
		  [31m--     --  Put_Line(Enregistrement.logicial.Motivations);[m
		  [31m--     --  Put_Line(Enregistrement.logicial.Objet);[m
		  [31m--     --  Put_Line(Enregistrement.logicial.Arguments);[m
		  [31m--     --  New_Line;[m
		     
		  [31m--     --  else[m
		  [31m--     --  	  Business.Console.Message("Client " & Client.Name & " deleted !");[m
		  [31m--     --  end if;	   	       [m
		  [01;34mend[m [01;34mif[m[31m;[m
		  
		  
		  
	       [01;34mexception[m
		  [01;34mwhen[m Socket_Exception [31m:[m Socket_Error [31m=>[m		  
		     [31m--Ada.Text_Io.Put_Line(Error_Type'Image(Resolve_Exception(Socket_Exception)));[m
		     
		     [01;34mraise[m[31m;[m
		  [01;34mwhen[m Host_Exception [31m:[m Host_Error [31m=>[m
		     [31m--Ada.Text_Io.Put_Line(Error_Type'Image(Resolve_Exception(Host_Exception)));[m
		     
		     [01;34mraise[m[31m;[m
		  [01;34mwhen[m [01;34mothers[m [31m=>[m		  
		     
		     [31m--Environment_Thread.Halt;[m
		     [31m--Text_Io.Put_Line("Human_Thread_Server : others exception environment halted.");		  [m
		     [01;34mraise[m[31m;[m
	       [01;34mend[m[31m;[m
	    [01;34mwhen[m Validation [31m=>[m
	       Enregistrement [31m:=[m Enregistrement_Record'[01;30mInput[m[31m([mChannel[31m);[m
	       Enregistrement_Record'[01;30mOutput[m[31m([mChannel[31m,[m enregistrement[31m);[m
	       
	       [01;34mbegin[m
		  
		  Id_Transaction [31m:=[m Natural'[01;30mInput[m[31m([mChannel[31m);[m

		  Business[31m.[mConsole[31m.[m[01;30mDelete[m[31m([mId_Transaction[31m,[m Success[31m);[m

		  
		  Enregistrement[31m.[mcoordonates[31m.[mname [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mcoordonates[31m.[mEmail [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mcoordonates[31m.[mAddress [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mcoordonates[31m.[mPhone [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m

		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m1[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m2[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m3[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m4[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m5[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m6[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m7[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m8[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m9[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[m[01;30mPrograms[m[31m([m[35m10[m[31m)[m [31m:=[m [32mString[m'[01;30mInput[m[31m([mChannel[31m);[m

		  Enregistrement[31m.[mLogicial[31m.[mObjectif [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mLogicial[31m.[mMotivations [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mLogicial[31m.[mObjet [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m
		  Enregistrement[31m.[mLogicial[31m.[mArguments [31m:=[m [32mWide_String[m'[01;30mInput[m[31m([mChannel[31m);[m

		  
		  [31m----------------------------------------------------------------[m
		  [31m--                   Create project                           --[m
		  [31m----------------------------------------------------------------[m
		  [31m--                                                            --[m
		  [31m-- 1) Create project                                          --[m
		  [31m-- 2) Create planning                                         --[m
		  [31m-- 3) Calculate price                                         --[m
		  [31m-- 4) Create archive                                          --[m
		  [31m----------------------------------------------------------------[m
		  [31m--                       Quickstart[m
		  [31m--[m
		  [31m----------------------------------------------------------------[m

		  project_name [31m:=[m [01;34mnew[m [32mWide_String[m ' [31m([mEnregistrement[31m.[mSolution[31m.[m[01;30mName[m[31m([m[01;30mIndex_Non_Blank[m[31m([mEnregistrement[31m.[mSolution[31m.[mName[31m)..[m[01;30mIndex_Non_Blank[m[31m([mEnregistrement[31m.[msolution[31m.[mName[31m,[m backward[31m)));[m
		  Version_Line [31m:=[m [01;34mnew[m [32mstring[m ' [31m([m[31m"0.0.0r"[m[31m);[m
		  filename [31m:=[m [01;34mnew[m [32mstring[m [31m' (To_String(Project_Name.all & '[m[31m-[m' [31m&[m [01;30mTo_Wide_String[m[31m([mVersion_line[31m.[m[01;34mall[m[31m)));[m

		  directory [31m:=[m [01;34mnew[m [32mstring[m ' [31m([m[01;30mTo_String[m[31m([mEnregistrement[31m.[mcoordonates[31m.[m[01;30mName[m[31m([m[01;30mIndex_Non_Blank[m[31m([mEnregistrement[31m.[mcoordonates[31m.[mName[31m)..[m[01;30mIndex_Non_Blank[m[31m([mEnregistrement[31m.[mcoordonates[31m.[mName[31m,[m backward[31m))));[m
		  fullpath [31m:=[m [01;34mnew[m [32mstring[m ' [31m([m[31m"/var/www/html/"[m [31m&[m Directory[31m.[m[01;34mall[m [31m&[m [31m"/"[m [31m&[m filename[31m.[m[01;34mall[m [31m&[m [31m".txt"[m[31m);[m
		  Buff [31m:=[m Engineer[31m.[mClasses[31m.[mAbstract_Vectors[31m.[m[01;30mElement[m[31m([mEngy[31m.[mTerminal[31m.[mRoot[31m.[mchilds[31m,[m [35m2[m[31m);[m
		  [01;34mdeclare[m
		     Planning [31m:[m Engineer[31m.[mClasses[31m.[mAbstract_Access [31m:=[m [01;34mnew[m Planning_Class[31m;[m
		     Lasts_Planning [31m:[m Vector[31m;[m
		     Last_Plan [31m:[m Abstract_Access[31m;[m
		     Job [31m:[m Engineer[31m.[mClasses[31m.[mAbstract_Access [31m:=[m [01;34mnew[m Job_Class[31m;[m
		  [01;34mbegin[m

		     
		     
		     

		     [01;30mCreate[m[31m([mproject_file[31m,[m out_file[31m,[m Fullpath[31m.[m[01;34mall[m[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
		     
		     
		     
		     [01;30mPut_Line[m[31m([mProject_File[31m,[m Enregistrement[31m.[mSolution[31m.[m[01;30mAxiomatic[m[31m([m[01;30mIndex_Non_Blank[m[31m([mEnregistrement[31m.[mSolution[31m.[mAxiomatic[31m)..[mNatural'[01;30mMin[m[31m([mWide_Fixed[31m.[m[01;30mIndex_Non_blank[m[31m([mEnregistrement[31m.[mSolution[31m.[mAxiomatic[31m,[m backward[31m),[m [35m80[m[31m)));[m

		     [01;30mNew_Line[m[31m([mProject_File[31m);[m
		     [01;30mPut_Line[m[31m([mProject_File[31m,[m Project_Name[31m.[m[01;34mall[m[31m);[m
		     [01;30mPut_Line[m[31m([mProject_File[31m,[m Project_Name[31m.[m[01;34mall[m[31m);[m

		     
		     
		     Month_Count [31m:=[m 
		       Method_Enum'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[mMethod[31m)[m [31m+[m
		       [32mBoolean[m[31m'Pos(Enregistrement.Solution.Contexts(Context_Enum'[mFirst[31m))[m [31m+[m
		       [32mBoolean[m'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[m[01;30mContexts[m[31m([mGtk[31m))[m [31m+[m
		       [32mBoolean[m'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[m[01;30mContexts[m[31m([mAssemblage[31m))[m [31m+[m
		       [32mBoolean[m'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[m[01;30mContexts[m[31m([mSQL[31m))[m [31m+[m
		       [32mBoolean[m'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[m[01;30mints[m[31m([mCmd_line[31m))[m [31m+[m
		       [32mBoolean[m'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[m[01;30mints[m[31m([mWin[31m))[m [31m+[m
		       [32mBoolean[m'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[m[01;30mints[m[31m([mNetwork[31m))[m [31m+[m
		       [32mBoolean[m'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[m[01;30mints[m[31m([mhtml[31m));[m


		     [01;30mLast_Planning[m[31m([mEngy[31m.[mTerminal[31m.[mroot[31m,[m Lasts_Planning[31m);[m

		     [01;34mif[m [01;34mnot[m [01;30mIs_Empty[m[31m([mLasts_Planning[31m)[m [01;34mthen[m
			Date_Sorting[31m.[m[01;30mSort[m[31m([mLasts_Planning[31m);[m
		     [01;34mend[m [01;34mif[m[31m;[m

		     [01;34mif[m [01;34mnot[m [31m([m[01;30mLength[m[31m([mLasts_Planning[31m)[m [31m=[m [35m0[m[31m)[m [01;34mthen[m
			
			Last_Plan [31m:=[m [01;30mLast_Element[m[31m([mLasts_Planning[31m);[m
			Planning[31m.[mInfo[31m.[mCreated [31m:=[m Clock[31m;[m
			Planning[31m.[mInfo[31m.[mindex [31m:=[m [01;30mAbstract_Index[m[31m([mbuff[31m.[mInfo[31m.[mChilds_Num[31m)[m [31m+[m [35m1[m[31m;[m
			Planning[31m.[mInfo[31m.[mName [31m:=[m [01;34mnew[m [32mWide_String[m ' [31m([m[01;30mTo_Wide_String[m[31m([mFilename[31m.[m[01;34mall[m[31m));[m
			
			[01;30mPlanning_Class[m[31m([mPlanning[31m.[m[01;34mall[m[31m).[mFrom [31m:=[m [01;30mTime_Of[m[31m([m[01;30mYear[m[31m([m[01;30mPlanning_Class[m[31m([mLast_Plan[31m.[m[01;34mall[m[31m).[mto[31m),[m [01;30mMonth[m[31m([m[01;30mPlanning_Class[m[31m([mLast_Plan[31m.[m[01;34mall[m[31m).[mTo[31m)[m [31m+[m [35m2[m[31m,[m [35m05[m[31m,[m [35m43200.0[m[31m);[m
			[01;30mPlanning_Class[m[31m([mPlanning[31m.[m[01;34mall[m[31m).[mTo [31m:=[m [01;30mPlanning_Class[m[31m([mPlanning[31m.[m[01;34mall[m[31m).[mFrom [31m+[m [31m([m[35m86400.0[m [31m*[m [35m30.0[m [31m*[m [32mDuration[m[31m([mMonth_Count [31m+[m [35m1[m[31m));[m
			
		     [01;34melse[m

			Planning[31m.[mInfo[31m.[mCreated [31m:=[m Clock[31m;[m
			Planning[31m.[mInfo[31m.[mindex [31m:=[m [01;30mAbstract_Index[m[31m([mbuff[31m.[mInfo[31m.[mChilds_Num[31m)[m [31m+[m [35m1[m[31m;[m
			Planning[31m.[mInfo[31m.[mName [31m:=[m [01;34mnew[m [32mWide_String[m ' [31m([m[01;30mTo_Wide_String[m[31m([mFilename[31m.[m[01;34mall[m[31m));[m

			[01;30mPlanning_Class[m[31m([mPlanning[31m.[m[01;34mall[m[31m).[mFrom [31m:=[m [01;30mTime_Of[m[31m([m[01;30mYear[m[31m([mClock[31m),[m [01;30mMonth[m[31m([mclock[31m)[m [31m+[m [35m2[m[31m,[m [35m05[m[31m,[m [35m43200.0[m[31m);[m
			[01;30mPlanning_Class[m[31m([mPlanning[31m.[m[01;34mall[m[31m).[mTo [31m:=[m [01;30mPlanning_Class[m[31m([mPlanning[31m.[m[01;34mall[m[31m).[mFrom [31m+[m [31m([m[35m86400.0[m [31m*[m [35m30.0[m [31m*[m [32mDuration[m[31m([mMonth_Count [31m+[m [35m1[m[31m));[m

		     [01;34mend[m [01;34mif[m[31m;[m
		     
		     Job[31m.[mInfo[31m.[mCreated [31m:=[m Clock[31m;[m
		     Job[31m.[mInfo[31m.[mName [31m:=[m [01;34mnew[m [32mWide_String[m ' [31m([m[31m"Planning"[m[31m);[m

		     Job[31m.[mDate [31m:=[m [01;30mPlanning_Class[m[31m([mPlanning[31m.[m[01;34mall[m[31m).[mFrom [31m+[m [35m3600.0[m[31m;[m
		     Job[31m.[mPeriod [31m:=[m [35m43200.0[m[31m;[m

		     Job[31m.[mLocality [31m:=[m [01;34mnew[m [32mWide_String[m [31m' (Project_Name(Project_Name'[mFirst[31m..[mNatural[31m'min(Project_Name'[mLength[31m,[m [35m16[m[31m)));[m
		     Job[31m.[mDefine [31m:=[m [01;34mnew[m [32mwide_String[m [31m' (Enregistrement.Solution.Name(Index_Non_Blank(Enregistrement.Solution.Name)..Natural'[m[01;30mmin[m[31m([m[01;30mIndex_Non_Blank[m[31m([mEnregistrement[31m.[mSolution[31m.[mName[31m,[m Backward[31m),[m [35m16[m[31m)));[m

		     Job[31m.[mInfo[31m.[mIndex [31m:=[m [35m1[m[31m;[m
		     Planning[31m.[mChilds [31m:=[m Planning[31m.[mChilds [31m&[m Job[31m;[m
		     
		     
		     Buff[31m.[mChilds [31m:=[m Engineer[31m.[mClasses[31m.[mAbstract_Vectors[31m.[m[31m"&"[m[31m([mBuff[31m.[mChilds[31m,[m Planning[31m);[m
		     buff[31m.[mInfo[31m.[mChilds_Num [31m:=[m buff[31m.[mInfo[31m.[mChilds_Num [31m+[m [35m1[m[31m;[m
		     
		     Command[31m.[m[01;30mProducts[m[31m([mNull_item[31m)[m [31m:=[m [01;30mPrice_type[m[31m([mMonth_Count[31m)[m [31m*[m [35m16000.0[m [31m+[m [31m([mSolution_Enum'[01;30mPos[m[31m([mEnregistrement[31m.[mSolution[31m.[mFormule[31m)[m [31m+[m[35m1[m[31m)[m [31m*[m [35m16000.0[m[31m;[m
		     Index [31m:=[m Index [31m+[m [35m1[m[31m;[m

		     [31m---------------------------------------------------------[m
		     [31m--                      Elements                       --[m
		     [31m---------------------------------------------------------[m
		     
		     [31m---------------------------------------------------------[m
		     [31m--                      Solution                       --[m
		     [31m---------------------------------------------------------[m

		     [31m---------------------------------------------------------[m
		     [31m--                                                     --[m
		     [31m---------------------------------------------------------[m
		     
		     [31m--                                                     --[m
		     [31m---------------------------------------------------------[m
		     
		     [31m---------------------------------------------------------[m
		     [31m--                                                     --[m
		     
		     [31m---------------------------------------------------------[m
		     [31m--                  Common libraries                   --[m
		     [31m---------------------------------------------------------[m
		     
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org"[m[31m);[m
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-errors"[m[31m);[m
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-versions"[m[31m);[m
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-versions-version_io"[m[31m);[m
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-parameters"[m[31m);[m
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-options"[m[31m);[m
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-interfaces"[m[31m);[m
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-strings"[m[31m);[m
		     [01;34mif[m Enregistrement[31m.[mSolution[31m.[m[01;30mInts[m[31m([mwin[31m)[m [01;34mthen[m 
			[01;34mif[m Enregistrement[31m.[mSolution[31m.[m[01;30mContexts[m[31m([mGtk[31m)[m [01;34mthen[m
			   [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-gtk_widgets"[m[31m);[m
			   [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-gtk_applications"[m[31m);[m
			[01;34melse[m
			   [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-ansi"[m[31m);[m
			   [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-ansi-console"[m[31m);[m
			   [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-ansi-windows"[m[31m);[m
			   [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-windows"[m[31m);[m
			   [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-styles"[m[31m);[m
			[01;34mend[m [01;34mif[m[31m;[m
			
		     [01;34mend[m [01;34mif[m[31m;[m		     
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-center"[m[31m);[m
		     [01;30mAdd_Line[m[31m([mLib_Set[31m,[m Lib_Last[31m,[m [31m"org-"[m [31m&[m Enregistrement[31m.[mSolution[31m.[m[01;30mName[m[31m([m[01;30mIndex_Non_Blank[m[31m([mEnregistrement[31m.[mSolution[31m.[mName[31m)..[m[01;30mIndex_Non_Blank[m[31m([mEnregistrement[31m.[msolution[31m.[mName[31m,[m backward[31m)));[m

		     
		     
		     [31m---------------------------------------------------------[m
		     [31m--                                                     --[m
		     [31m--              Libraries constructor                  --[m
		     [31m--                                                     --[m
		     [31m---------------------------------------------------------[m
		     
		     [31m--[m
		     
		     [31m--[m
		     
		     [31m---------------------------------------------------------[m
		     [31m--[m
		     [31m--                  Writting libraries[m
		     [31m--[m
		     [01;34mfor[m Line [01;34min[m [35m1[m[31m..[mLib_Set[31m.[mLine_Last [01;34mloop[m
			
			[01;30mPut_Line[m[31m([mProject_File[31m,[m Lib_Set[31m.[m[01;30mLines[m[31m([mLine[31m).[m[01;34mall[m[31m);[m
			
		     [01;34mend[m [01;34mloop[m[31m;[m
		     [31m--[m
		     [31m---------------------------------------------------------[m
		     
		     [01;30mSet_Free[m[31m([mLib_Set[31m);[m
		     
		     [01;30mNew_Line[m[31m([mProject_File[31m);[m
		     [01;30mPut_Line[m[31m([mProject_File[31m,[m [01;30mTo_Wide_String[m[31m([mVersion_Line[31m.[m[01;34mall[m[31m));[m
		     [01;30mPut_Line[m[31m([mProject_File[31m,[m [01;30mTo_Wide_String[m[31m([mDirectory[31m.[m[01;34mall[m[31m));[m
		     [01;30mClose[m[31m([mproject_file[31m);[m
		     
		     
		     [31m-- Add to project.[m
		     
		  [01;34mexception[m
		     [01;34mwhen[m [01;34mothers[m [31m=>[m
			[01;34mnull[m[31m;[m
		  [01;34mend[m[31m;[m
		  

		  
		  
		  
		  [31m----------------------------------------------------------------[m
		  [31m--[m
		  [31m--[m
		  [31m----------------------------------------------------------------[m
		  [31m--                   End Create project                       --[m
		  [31m----------------------------------------------------------------[m
		  
		  
		  [01;34mfor[m Program [01;34min[m [35m1[m[31m..[m[35m10[m [01;34mloop[m
		     [01;34mdeclare[m
		  	Product [31m:[m Product_Enum [31m:=[m Null_Item[31m;[m
			
		     [01;34mbegin[m
			
		  	Product [31m:=[m Product_Enum'[01;30mValue[m[31m([mEnregistrement[31m.[m[01;30mPrograms[m[31m([mProgram[31m));[m
			[01;34mif[m Product [31m/=[m Null_Item [01;34mthen[m
			   Command[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m:=[m [01;30mMy_Prices[m[31m([mProduct[31m);[m		     
			   
			   Index [31m:=[m Index [31m+[m [35m1[m[31m;[m
			[01;34mend[m [01;34mif[m[31m;[m
			
		     [01;34mexception[m
		  	[01;34mwhen[m [01;34mothers[m [31m=>[m
		  	   [01;34mnull[m[31m;[m
		     [01;34mend[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m
		  
		  [31m--  for Program in Product_Enum'first..Product_Enum'Pred(Null_Item) loop[m
		  
		  [31m--     declare[m
		  [31m--  	Product : Product_Enum := Null_Item;[m
		  
		  [31m--     begin[m
		  [31m--  	Product := Product_Enum'Value(Enregistrement.Programs(Product_Enum'Pos(Program)+1));[m
		  [31m--  	if Product /= Null_Item then[m
		  [31m--  	   Command.Products(Product) := My_Prices(Product);		     [m
		  [31m--  	   Index := Index + 1;[m
		  [31m--  	end if;[m
		  [31m--     exception[m
		  [31m--  	when others =>[m
		  [31m--  	   null;[m
		  [31m--     end;[m
		  [31m--  end loop;[m

		  
		  
		  
		  
		  [01;34mfor[m Product [01;34min[m Product_Enum [01;34mloop[m
		     Command[31m.[mHt_Sum [31m:=[m Command[31m.[mHt_Sum [31m+[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m);[m
		  [01;34mend[m [01;34mloop[m[31m;[m
		  [01;34mfor[m Product [01;34min[m Product_Enum [01;34mloop[m
		     Command[31m.[mTVA [31m:=[m Command[31m.[mTVA [31m+[m [01;30mPrice_Type[m[31m([m[01;30mPrice_type[m[31m([mCommand[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m/[m [35m100.0[m[31m))[m [31m*[m [35m10.0[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m

		  Command[31m.[mTTC_Sum [31m:=[m Command[31m.[mHt_Sum [31m+[m Command[31m.[mTva[31m;[m

		  Natural'[01;30mOutput[m[31m([mChannel[31m,[m Index[31m);[m

		  [01;34mfor[m Product [01;34min[m skywalker[31m..[mNull_Item [01;34mloop[m

		     [01;34mif[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m/=[m [35m0.0[m [01;34mthen[m
			Product_enum'[01;30mOutput[m [31m([mChannel[31m,[m Product[31m);[m
			Price_Type '[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m));[m		  
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m

		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mHt_Sum[31m);[m
		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mTVA[31m);[m
		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mTTC_Sum[31m);[m
		  Old_Pwd [31m:=[m [01;34mnew[m [32mWide_String[m ' [31m([m[01;30mTo_wide_String[m[31m([mOs_Lib[31m.[m[01;30mGetenv[m[31m([m[31m"PWD"[m[31m).[m[01;34mall[m[31m));[m
		  [01;30mChange_Dir[m[31m([m[31m"/var/www/html/"[m [31m&[m Directory[31m.[m[01;34mall[m[31m);[m
		  Errno [31m:=[m [01;30mSystem[m[31m([m[31m"/usr/bin/bash -c ""/home/manuel/.bin/quickstart.sh "[m [31m&[m fullpath[31m.[m[01;34mall[m [31m&[m [31m" "[m [31m&[m [01;30mTo_String[m[31m([mProject_Name[31m.[m[01;34mall[m[31m)[m [31m&[m [31m" "[m [31m&[m Version_line[31m.[m[01;34mall[m [31m&[m [31m""""[m [31m&[m [32mCharacter[m'[01;30mVal[m[31m([m[35m0[m[31m));[m      	   	    
		  
		  Errno [31m:=[m [01;30mSystem[m[31m([m[31m"cp -ar /var/www/html/"[m [31m&[m Directory[31m.[m[01;34mall[m [31m&[m [31m'/'[m [31m&[m Filename[31m.[m[01;34mall[m [31m&[m [31m" /home/manuel/devel/"[m [31m&[m [32mCharacter[m'[01;30mVal[m[31m([m[35m0[m[31m));[m
		  
		  [01;30mOpen[m[31m([mFile[31m,[m Append_File[31m,[m [31m"/home/manuel/devel/Projects.lst"[m[31m,[m Form [31m=>[m[31m"WCEM=8"[m[31m);[m
		  
		  [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mFilename[31m.[m[01;34mall[m [31m&[m [31m' '[m [31m&[m Long_Float'[01;30mImage[m[31m([m[35m0.0[m[31m)));[m
		  
		  [01;30mClose[m[31m([mFile[31m);[m
		  [01;30mChange_Dir[m[31m([m[01;30mTo_String[m[31m([mOld_Pwd[31m.[m[01;34mall[m[31m));[m 


		  [01;30mOpen[m[31m([mFile[31m,[m Append_File[31m,[m [31m"cmd.txt"[m[31m,[m Form[31m=>[m[31m"WCEM=8"[m[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [31m"-----------------------------------------------------"[m[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [31m"--                                                 --"[m[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [31m"--                 NEW CLIENT                      --"[m[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [31m"--                                                 --"[m[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [31m"-----------------------------------------------------"[m[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m Enregistrement[31m.[mCoordonates[31m.[mName[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mEnregistrement[31m.[mCoordonates[31m.[mEmail[31m));[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m Enregistrement[31m.[mCoordonates[31m.[mAddress[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mEnregistrement[31m.[mCoordonates[31m.[mPhone[31m));[m
		  [01;30mNew_Line[m[31m([mFile[31m);[m	    
		  [01;30mNew_Line[m[31m([mFile[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m Enregistrement[31m.[mlogicial[31m.[mObjectif[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m Enregistrement[31m.[mlogicial[31m.[mMotivations[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m Enregistrement[31m.[mlogicial[31m.[mObjet[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m Enregistrement[31m.[mlogicial[31m.[mArguments[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m Enregistrement[31m.[mSolution[31m.[mname[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m Enregistrement[31m.[mSolution[31m.[mAxiomatic[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mSolution_Enum'[01;30mImage[m[31m([mEnregistrement[31m.[mSolution[31m.[mFormule[31m)));[m
		  [01;34mif[m Enregistrement[31m.[mSolution[31m.[mFormule [31m=[m Carte [01;34mthen[m
		     [01;34mfor[m I [01;34min[m Enregistrement[31m.[mSolution[31m.[mForfaits'[01;34mRange[m [01;34mloop[m
			[01;34mif[m Enregistrement[31m.[mSolution[31m.[m[01;30mForfaits[m[31m([mI[31m)[m [01;34mthen[m
			   [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mForfait_Enum'[01;30mImage[m[31m([mI[31m)));[m
			[01;34mend[m [01;34mif[m[31m;[m
		     [01;34mend[m [01;34mloop[m[31m;[m
		  [01;34mend[m [01;34mif[m[31m;[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mMethod_Enum'[01;30mImage[m[31m([mEnregistrement[31m.[mSolution[31m.[mMethod[31m)));[m
		  [01;34mfor[m I [01;34min[m Enregistrement[31m.[mSolution[31m.[mContexts'[01;34mRange[m [01;34mloop[m
		     [01;34mif[m Enregistrement[31m.[mSolution[31m.[m[01;30mContexts[m[31m([mI[31m)[m [01;34mthen[m
			[01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mContext_Enum'[01;30mImage[m[31m([mI[31m)));[m
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mProcess_Enum'[01;30mImage[m[31m([mEnregistrement[31m.[mSolution[31m.[mProcess[31m)));[m
		  [01;34mfor[m I [01;34min[m Enregistrement[31m.[mSolution[31m.[mints'[01;34mRange[m [01;34mloop[m
		     [01;34mif[m Enregistrement[31m.[mSolution[31m.[m[01;30mints[m[31m([mI[31m)[m [01;34mthen[m
			[01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mInt_Enum'[01;30mImage[m[31m([mI[31m)));[m
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m
		  [01;30mNew_Line[m[31m([mFile[31m);[m
		  [01;30mput_line[m[31m([mFile[31m,[m [31m"Filename : "[m [31m&[m [01;30mTo_Wide_String[m[31m([mFilename[31m.[m[01;34mall[m[31m));[m
		  [01;30mput_line[m[31m([mFile[31m,[m [31m"Project Name : "[m [31m&[m Project_Name[31m.[m[01;34mall[m[31m);[m
		  [01;30mput_line[m[31m([mFile[31m,[m [31m"Version : "[m [31m&[m [01;30mTo_Wide_String[m[31m([mVersion_line[31m.[m[01;34mall[m[31m));[m
		  
		  
		  
		  
		  
		  [01;34mfor[m Product [01;34min[m Skywalker[31m..[mNull_Item [01;34mloop[m
		     [01;34mif[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m/=[m [35m0.0[m [01;34mthen[m
			[01;30mPut[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mProduct_Enum'[01;30mImage[m[31m([mProduct[31m))[m [31m&[m [31m" : "[m[31m);[m
			[01;30mPut_Line[m[31m([mFile[31m,[m [01;30mTo_Wide_String[m[31m([mPrice_Type '[01;30mimage[m[31m([mCommand[31m.[m[01;30mProducts[m[31m([mProduct[31m)))[m [31m&[m [31m" euro"[m[31m);[m 
			
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m [01;34mloop[m[31m;[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [31m"Total HT   : "[m [31m&[m [01;30mTo_Wide_String[m[31m([mPrice_Type'[01;30mimage[m[31m([mCommand[31m.[mHt_Sum[31m))[m [31m&[m [31m" euro "[m[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [31m"Total TVA  : "[m [31m&[m [01;30mTo_Wide_String[m[31m([mPrice_Type'[01;30mimage[m[31m([mCommand[31m.[mTVA[31m))[m [31m&[m [31m" euro "[m[31m);[m
		  [01;30mPut_Line[m[31m([mFile[31m,[m [31m"total TTC  : "[m [31m&[m [01;30mTo_Wide_String[m[31m([mPrice_Type'[01;30mimage[m[31m([mCommand[31m.[mTTC_Sum[31m))[m [31m&[m [31m" euro "[m[31m);[m
		  
		  
		  [01;30mCommand_Record[m[31m([mFacture[31m)[m [31m:=[m Command[31m;[m	    
		  Client [31m:=[m [01;30mClient_Record[m[31m([mFacture[31m);[m
		  Business[31m.[mConsole[31m.[m[01;30mAdd[m[31m([mClient[31m,[m Command[31m,[m Facture[31m,[m Success[31m,[m Id_transaction[31m);[m
		  
		  [01;34mif[m Success [01;34mthen[m
		     Done [31m:=[m [01;34mnew[m [32mString[m [31m'(String'[m[01;30mInput[m[31m([mChannel[31m));[m
		     
		     
		     [01;34mif[m Id_Transaction [31m/=[m [35m0[m [01;34mthen[m
			
			Natural'[01;30mOutput[m[31m([mChannel[31m,[m Id_Transaction[31m);[m
			[01;30mPut_Line[m[31m([mFile[31m,[m [31m"Transaction No"[m [31m&[m [01;30mTo_Wide_String[m[31m([mNatural'[01;30mImage[m[31m([mId_Transaction[31m)));[m
		     [01;34mend[m [01;34mif[m[31m;[m	    
		     
		     [31m--  else[m
		     [31m--     Business.Console.Message("Client " & Client.Name & " not registered !");[m
		     [31m--     --  Put_Line(Enregistrement.Coordonates.Name);[m
		     [31m--     --  Put_Line(To_Wide_String(Enregistrement.Coordonates.Email));[m
		     [31m--     --  Put_Line(Enregistrement.Coordonates.Address);[m
		     [31m--     --  Put_Line(To_Wide_String(Enregistrement.Coordonates.Phone));[m
		     [31m--     --  New_Line;[m
		     [31m--     --  for I in 1..5 loop[m
		     [31m--     --  	  Put_Line(To_Wide_String(Enregistrement.Programs(I)));[m
		     [31m--     --  end loop;[m
		     [31m--     --  New_Line;[m
		     [31m--     --  Put_Line(Enregistrement.logicial.Objectif);[m
		     [31m--     --  Put_Line(Enregistrement.logicial.Motivations);[m
		     [31m--     --  Put_Line(Enregistrement.logicial.Objet);[m
		     [31m--     --  Put_Line(Enregistrement.logicial.Arguments);[m
		     [31m--     --  New_Line;[m
		     
		     [31m--     --  else[m
		     [31m--     --  	  Business.Console.Message("Client " & Client.Name & " deleted !");[m
		     [31m--     --  end if;	   	       [m
		  [01;34mend[m [01;34mif[m[31m;[m
		  [01;30mClose[m[31m([mFile[31m);[m
		  
		  
	       [01;34mexception[m
		  [01;34mwhen[m Socket_Exception [31m:[m Socket_Error [31m=>[m		  
		     [31m--Ada.Text_Io.Put_Line(Error_Type'Image(Resolve_Exception(Socket_Exception)));[m
		     
		     [01;34mraise[m[31m;[m
		  [01;34mwhen[m Host_Exception [31m:[m Host_Error [31m=>[m
		     [31m--Ada.Text_Io.Put_Line(Error_Type'Image(Resolve_Exception(Host_Exception)));[m
		     
		     [01;34mraise[m[31m;[m
		  [01;34mwhen[m [01;34mothers[m [31m=>[m		  
		     
		     [31m--Environment_Thread.Halt;[m
		     [31m--Text_Io.Put_Line("Human_Thread_Server : others exception environment halted.");		  [m
		     [01;34mraise[m[31m;[m
	       [01;34mend[m[31m;[m
	    [01;34mwhen[m Paiement [31m=>[m
	       [01;30mOpen[m[31m([mFile[31m,[m Append_File[31m,[m[31m"cmd.txt"[m[31m,[m Form[31m=>[m[31m"WCEM=8"[m[31m);[m
	       [01;30mPut_Line[m[31m([mFile[31m,[m [31m"Paiement: "[m[31m);[m
	       
   	       Id_Transaction [31m:=[m Natural'[01;30mInput[m[31m([mChannel[31m);[m
	       
   	       [01;30mPut_Line[m[31m([mFile[31m,[m [31m"Transaction No"[m [31m&[m [01;30mTo_Wide_String[m[31m([mNatural'[01;30mImage[m[31m([mId_Transaction[31m)));[m
   	       Business[31m.[mConsole[31m.[m[01;30mGet[m[31m([mId_Transaction[31m,[m Facture[31m,[m success[31m);[m
   	       [01;34mif[m Success [01;34mthen[m

   		  Command [31m:=[m [01;30mCommand_Record[m[31m([mFacture[31m);[m
   		  [01;34mfor[m Product [01;34min[m Skywalker[31m..[mNull_Item [01;34mloop[m
   		     [01;34mif[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m/=[m [35m0.0[m [01;34mthen[m
			
   			[01;30mPut[m[31m([m[01;30mTo_Wide_String[m[31m([mProduct_Enum'[01;30mImage[m[31m([mProduct[31m))[m [31m&[m [31m" : "[m[31m);[m
   			[01;30mPut_Line[m[31m([m[01;30mTo_Wide_String[m[31m([mPrice_Type '[01;30mimage[m[31m([mCommand[31m.[m[01;30mProducts[m[31m([mProduct[31m)))[m [31m&[m [31m" euro"[m[31m);[m 
   			Index [31m:=[m Index [31m+[m [35m1[m[31m;[m
   		     [01;34mend[m [01;34mif[m[31m;[m
   		  [01;34mend[m [01;34mloop[m[31m;[m
		  
   		  [31m--------------------------------------------------[m
   		  [31m-- Facture :[m
   		  [31m--------------------------------------------------		  [m
		  
   		  Natural'[01;30mOutput[m[31m([mChannel[31m,[m Index[31m);[m		  
		  
		  
		  
   		  [01;34mfor[m Product [01;34min[m Skywalker[31m..[mNull_Item [01;34mloop[m
		     
   		     [01;34mif[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m/=[m [35m0.0[m [01;34mthen[m
			
   			Product_enum'[01;30mOutput[m [31m([mChannel[31m,[m Product[31m);[m
   			Price_Type '[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m));[m		  
   		     [01;34mend[m [01;34mif[m[31m;[m
   		  [01;34mend[m [01;34mloop[m[31m;[m
   		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mHt_Sum[31m);[m
   		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mTVA[31m);[m
   		  Price_Type'[01;30mOutput[m[31m([mChannel[31m,[m Command[31m.[mTTC_Sum[31m);[m		  
		  
   		  [01;34mdeclare[m

   		     Outvoice [31m:[m OutVoice_Record[31m;[m
   		  [01;34mbegin[m
		     
   		     Outvoice[31m.[mAccount_Num [31m:=[m [35m707[m[31m;[m
   		     Outvoice[31m.[mTotal_Ht [31m:=[m [01;30mFixed_Total[m[31m([mCommand[31m.[mHt_Sum[31m);[m
		     
   		     Outvoice[31m.[mTotal_TVA [31m:=[m [01;30mFixed_Total[m[31m([mCommand[31m.[mTVA[31m);[m
		     
   		     Outvoice[31m.[mTotal_TTC [31m:=[m [01;30mFixed_Total[m[31m([mCommand[31m.[mTTC_Sum[31m);[m
		     
   		     Outvoice[31m.[mDate [31m:=[m Clock[31m;[m
		     
   		     [01;30mCharge[m[31m([mM[31m.[mBalance[31m.[mBalance[31m,[m Outvoice[31m,[m Payed[31m);[m
		     
   		     [01;34mif[m Payed [01;34mthen[m

   			Outvoice[31m.[mDate [31m:=[m Clock[31m;[m
			
   			Outvoice[31m.[mAccount_Num [31m:=[m [35m707[m[31m;[m

   			Outvoice[31m.[mvoice_Num [31m:=[m M[31m.[mBalance[31m.[mOutvoice_Num [31m+[m [35m1[m[31m;[m

   			M[31m.[mBalance[31m.[mOutvoice_Num [31m:=[m M[31m.[mBalance[31m.[mOutvoice_Num [31m+[m [35m1[m[31m;[m
			
   			[01;34mif[m [01;30mSave[m[31m([mOutvoice[31m,[m [31m"charged.txt"[m[31m)[m [01;34mthen[m
			   
   			   [01;30mAdd[m[31m([mAccounts[31m,[m Outvoice[31m);[m
   			   [01;34mfor[m Product [01;34min[m Skywalker[31m..[mNull_Item [01;34mloop[m
   			      [01;34mif[m Command[31m.[m[01;30mProducts[m[31m([mProduct[31m)[m [31m/=[m [35m0.0[m [01;34mthen[m
   				 [01;34mdeclare[m
   				    Stock [31m:[m Stock_Record[31m;[m
   				 [01;34mbegin[m
				    
   				    [01;30mMove[m[31m([m[01;30mTo_Wide_String[m[31m([mProduct_Enum'[01;30mImage[m[31m([mProduct[31m)),[m stock[31m.[mName[31m);[m
				    
				    
   				    Sky[31m.[mStocks_Manager[31m.[m[01;30mRemove_From_stock[m[31m([mSky[31m.[mStocks_Manager[31m.[mHardware[31m,[m Stock[31m.[mName[31m,[m [35m1.0[m[31m);[m
				    
   				 [01;34mend[m[31m;[m
   			      [01;34mend[m [01;34mif[m[31m;[m
   			   [01;34mend[m [01;34mloop[m[31m;[m
   			   Outvoice [31m:=[m Null_Outvoice[31m;[m
   			[01;34mend[m [01;34mif[m[31m;[m
			
   		     [01;34melse[m
   			[01;30mPut_Line[m[31m([m[31m"bad Request in Get"[m[31m);[m
   		     [01;34mend[m [01;34mif[m[31m;[m
   		  [01;34mend[m[31m;[m
   	       [01;34mend[m [01;34mif[m[31m;[m
   	       [01;30mClose[m[31m([mFile[31m);[m
	       
   	    [01;34mwhen[m [01;34mothers[m [31m=>[m
   	       [01;34mraise[m Program_Error[31m;[m
   	 [01;34mend[m [01;34mcase[m[31m;[m

	 [31m--        Open(File, Append_File,"cmd.Txt", Form=>"WCEM=8");[m
	 [31m--        Put_Line(File, "Paiement: ");[m
	 [31m--        Id_Transaction := Natural'Input(Channel);[m
	 
	 [31m--        Put_Line(File, "Transaction No" & To_Wide_String(Natural'Image(Id_Transaction)));[m
	 [31m--        Business.Console.Get(Id_Transaction, Facture, success);[m
	 [31m--        if Success then[m
		  
	 [31m--  	  Command := Command_Record(Facture);[m
	 [31m--  	  for Product in Skywalker..Product_Enum'Pred(Null_Item) loop[m
	 [31m--  	     if Command.Products(Product) /= 0.0 then[m
			
	 [31m--  		Put(To_Wide_String(Product_Enum'Image(Product)) & " : ");[m
	 [31m--  		Put_Line(To_Wide_String(Price_Type 'image(Command.Products(Product))) & " euro"); [m
	 [31m--  		Index := Index + 1;[m
	 [31m--  	     end if;[m
	 [31m--  	  end loop;[m
	 [31m--  	  Put_Line(File, "Total HT   : " & To_Wide_String(Price_Type'image(Command.Ht_Sum)) & " euro ");[m
	 [31m--  	  Put_Line(File, "Total TVA  : " & To_Wide_String(Price_Type'image(Command.TVA)) & " euro ");[m
	 [31m--  	  Put_Line(File, "total TTC  : " & To_Wide_String(Price_Type'image(Command.TTC_Sum)) & " euro. ");[m
		  

	 [31m--  	  --------------------------------------------------[m
	 [31m--  	  -- Facture :[m
	 [31m--  	  --------------------------------------------------		  [m
		  
		  
	 [31m--  	  Natural'Output(Channel, Index);		  [m
	 [31m--  	  for Product in Skywalker..Product_Enum'Pred(Null_Item) loop[m
	 [31m--  	     if Command.Products(Product) /= 0.0 then[m
			
	 [31m--  		Product_enum'Output (Channel, Product);[m
	 [31m--  		Price_Type 'Output(Channel, Command.Products(Product));		  [m
	 [31m--  	     end if;[m
	 [31m--  	  end loop;[m
	 [31m--  	  Price_Type'Output(Channel, Command.Ht_Sum);[m
	 [31m--  	  Price_Type'Output(Channel, Command.TVA);[m
	 [31m--  	  Price_Type'Output(Channel, Command.TTC_Sum);		  [m
	 [31m--        else[m
	 [31m--  	  Put_Line("bad Request in Get");[m
	 [31m--        end if;[m
	 [31m--        Close(File);[m
	 [31m--     when others =>[m
	 [31m--        raise Program_Error;[m
	 [31m--  end case;[m
	 

	 [31m--Environment_Thread.Halt;[m
	 [31m--Text_Io.Put_Line("Human_Thread_Server : environment halted.");[m
	 Gnat[31m.[mSockets[31m.[m[01;30mClose_Socket[m[31m([mSocket[31m.[m[01;34mall[m[31m);[m
      [01;34melse[m
	 Gnat[31m.[mSockets[31m.[m[01;30mClose_Socket[m [31m([mSocket[31m.[m[01;34mall[m[31m);[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mexception[m
      [01;34mwhen[m Constraint_Error [31m=>[m
	 [31m--Text_Io.Put_Line("Human_Thread_Server : Constraint_error");[m
	 Gnat[31m.[mSockets[31m.[m[01;30mClose_Socket[m[31m([mSocket[31m.[m[01;34mall[m[31m);[m
   [01;34mend[m Human_Thread_Server[31m;[m
   
   
   [01;34mprocedure[m Unchecked_Deallocation_thread_server [01;34mis[m
      [01;34mnew[m Ada[31m.[m[01;30mUnchecked_Deallocation[m[31m([mHuman_Thread_Server[31m,[mthread_server_Access[31m);[m
   [01;34mprocedure[m Unchecked_Deallocation_thread_server_task [01;34mis[m
      [01;34mnew[m Ada[31m.[m[01;30mUnchecked_Deallocation[m[31m([mHuman_Thread_Server_Task[31m,[mthread_server_Task_Access[31m);[m
   
   
   

   [01;34mtask[m [01;34mbody[m Main_Server [01;34mis[m
      
      
      
      
      Max_Client [31m:[m [01;34mconstant[m Positive [31m:=[m [35m500[m[31m;[m
      
      Liste [31m:[m [01;34marray[m[31m([m[35m1[m[31m..[mMax_Client[31m)[m [01;34mof[m Socket_access[31m;[m
      Liste_Thread_task [31m:[m [01;34marray[m[31m([m[35m1[m[31m..[mMax_Client[31m)[m [01;34mof[m Thread_Server_Task_Access[31m;[m
      Bliste [31m:[m [01;34marray[m[31m([m[35m1[m[31m..[mMax_Client[31m)[m [01;34mof[m [32mBoolean[m[31m;[m
      Reads[31m,[mWrite [31m:[m Socket_Set_Type[31m;[m

      Selector [31m:[m Selector_Type[31m;[m
      Srv_Adr[31m,[mAdr [31m:[m Sock_Addr_Type[31m;[m
      Srv_Socket [31m:[m Socket_Type[31m;[m
      Status [31m:[m Selector_Status[31m;[m

      Ptr [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m
      
      
      [01;34mfunction[m Chercher [01;34mreturn[m Natural [01;34mis[m
      [01;34mbegin[m
	 [01;34mfor[m I [01;34min[m [35m1[m[31m..[mMax_Client [01;34mloop[m
	    [01;34mif[m [01;30mListe_Thread_Task[m[31m([mI[31m)[m [31m=[m [01;34mnull[m [01;34mthen[m
	       [01;34mreturn[m I[31m;[m
	    [01;34melsif[m [01;34mnot[m [01;30mIs_callable[m[31m([m[01;30mListe_Thread_Task[m[31m([mI[31m).[mId[31m)[m [01;34mor[m [01;30mIs_terminated[m[31m([m[01;30mListe_Thread_Task[m[31m([mI[31m).[mId[31m)[m [01;34mthen[m
	       [01;30mUnchecked_Deallocation_Thread_Server[m[31m([m[01;30mListe_Thread_Task[m[31m([mI[31m).[mThread_Server[31m);[m
	       [01;30mUnchecked_Deallocation_Thread_Server_Task[m[31m([m[01;30mListe_Thread_Task[m[31m([mI[31m));[m
	       [01;30mListe_Thread_Task[m[31m([mI[31m)[m [31m:=[m [01;34mnull[m[31m;[m
	       [01;30mListe[m[31m([mI[31m)[m [31m:=[m [01;34mnew[m Socket_Type[31m;[m
	       [01;34mreturn[m I[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 [01;34mreturn[m [35m0[m[31m;[m
      [01;34mend[m Chercher[31m;[m
      
      

      Thread_Suivant [31m:[m Natural [31m:=[m [35m0[m[31m;[m

      End_Of_Task [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      Run [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
                       
   [01;34mbegin[m
      [01;34maccept[m Initialize[31m;[m
      [01;34mfor[m I [01;34min[m [35m1[m[31m..[mMax_Client [01;34mloop[m
	 [01;30mliste[m[31m([mI[31m)[m [31m:=[m [01;34mnew[m Socket_Type[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Server initialize sockets..."[m[31m);[m
      
      
      Bliste [31m:=[m [31m([m[01;34mothers[m [31m=>[m False[31m);[m
      
      Srv_Adr[31m.[mAddr [31m:=[m Any_Inet_Addr[31m;[m
      Srv_Adr[31m.[mPort [31m:=[m [35m1970[m[31m;[m
      
      [01;30mCreate_Socket[m[31m([mSrv_Socket[31m);[m
      
      Set_Socket_Option
	[31m([mSrv_Socket[31m,[m
	 Socket_Level[31m,[m
	 [31m([mReuse_Address[31m,[m True[31m));[m
      [01;34mdelay[m [35m0.2[m[31m;[m
      
      [01;30mBind_Socket[m[31m([mSrv_Socket[31m,[mSrv_Adr[31m);[m

      [01;30mListen_Socket[m[31m([mSrv_Socket[31m);[m
      
      [01;30mCreate_Selector[m[31m([mSelector[31m);[m
      
	 
	 
      [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	 [01;34mloop[m
	    [01;34mselect[m
	       [01;34maccept[m Initialize[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Start[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m

	       [01;34maccept[m Stop[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Halt [01;34mdo[m
		  End_Of_Task [31m:=[m True[31m;[m
	       [01;34mend[m Halt[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mend[m [01;34mselect[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Server sockets initialized."[m[31m);[m
	 [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	    [01;34mselect[m
	       [01;34maccept[m Initialize[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Start[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Stop[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Halt [01;34mdo[m
		  End_Of_Task [31m:=[m True[31m;[m
	       [01;34mend[m Halt[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34mdelay[m [35m0.0[m[31m;[m
	       
	       
	       
	       [01;30mEmpty[m[31m([mReads[31m);[m
	       
	       [01;30mSet[m[31m([mReads[31m,[mSrv_Socket[31m);[m

	       [01;34mfor[m I [01;34min[m [35m1[m[31m..[mMax_Client [01;34mloop[m
		  [01;34mif[m [01;30mBliste[m[31m([mI[31m)[m [01;34mthen[m
		     [01;30mSet[m[31m([mReads[31m,[m [01;30mListe[m[31m([mI[31m).[m[01;34mall[m[31m);[m
		  [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m

	       [01;30mCheck_Selector[m[31m([mSelector[31m,[m Reads[31m,[m Write[31m,[m Status[31m);[m
	       
	       [01;34mcase[m Status [01;34mis[m
		  [01;34mwhen[m Completed [31m=>[m
		     
		     [01;34mif[m [01;30mIs_Set[m[31m([mReads[31m,[mSrv_Socket[31m)[m [01;34mthen[m
			Thread_Suivant [31m:=[m Chercher[31m;[m

			[01;34mif[m Thread_Suivant [31m/=[m [35m0[m [01;34mthen[m
			   Ptr [31m:=[m Thread_Suivant[31m;[m
			   [31m--Text_Io.Put_Line("Server accept");[m
			   [01;30mAccept_Socket[m[31m([mSrv_Socket[31m,[m [01;30mListe[m[31m([mPtr[31m).[m[01;34mall[m[31m,[m Adr[31m);[m
			   [31m--Text_Io.Put_Line("Server accepted");[m
			   [31m--  Set_Socket_Option[m
			   [31m--                                  (Liste(Ptr).all,[m
			   [31m--                                   Socket_Level,[m
			   [31m--                                   (Reuse_Address, True));[m
			   [01;34mselect[m
			      [01;34maccept[m Halt [01;34mdo[m				 
				 End_Of_Task [31m:=[m True[31m;[m
			      [01;34mend[m Halt[31m;[m
			      [01;34mexit[m[31m;[m
			   [01;34mor[m
			      [01;34maccept[m Stop[31m;[m
			      [01;34mexit[m[31m;[m
			   [01;34mor[m [01;34mdelay[m [35m2.0[m[31m;[m
			   
			   [01;34mend[m [01;34mselect[m[31m;[m
			   
			   [01;30mBliste[m[31m([mPtr[31m)[m [31m:=[m True[31m;[m
			[01;34melse[m
			   [01;34mdelay[m [35m1.0[m[31m;[m
			   [31m--     Text_Io.Put_Line("Client suivant = zero ");[m
			   [31m--     select[m
			   [31m--  	accept Halt;	    [m
			   [31m--  	--Ptr := Chercher;[m
			   [31m--  	exit;[m
			   [31m--     or delay 2.0;[m
			   [31m--     end select;[m
			[01;34mend[m [01;34mif[m[31m;[m
		     [01;34melse[m

			[01;34mfor[m I [01;34min[m [35m1[m[31m..[mMax_Client [01;34mloop[m


			   [01;34mif[m [01;30mbliste[m[31m([mI[31m)[m [01;34mthen[m

			      [01;34mif[m [01;30mIs_Set[m[31m([mReads[31m,[m[01;30mListe[m[31m([mI[31m).[m[01;34mall[m[31m)[m [01;34mthen[m
				 [01;30mListe_Thread_Task[m[31m([mI[31m)[m [31m:=[m [01;34mnew[m Human_Thread_Server_Task[31m;[m

				 [01;30mListe_Thread_Task[m[31m([mI[31m).[mThread_Server [31m:=[m [01;34mnew[m [01;30mHuman_Thread_Server[m[31m([m[01;30mListe[m[31m([mi[31m));[m

				 [01;30mListe_Thread_Task[m[31m([mi[31m).[mThread_Server[31m.[m[01;30mGet_Id[m[31m([m[01;30mListe_Thread_Task[m[31m([mi[31m).[mId[31m);[m


				 [01;30mBliste[m[31m([mi[31m)[m [31m:=[m false[31m;[m

			      [01;34mend[m [01;34mif[m[31m;[m
			   [01;34mend[m [01;34mif[m[31m;[m
			[01;34mend[m [01;34mloop[m[31m;[m
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mwhen[m Expired [31m=>[m
		     Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"expired"[m[31m);[m
		  [01;34mwhen[m Aborted [31m=>[m
		     Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"aborted"[m[31m);[m
	       [01;34mend[m [01;34mcase[m[31m;[m	
	    [01;34mend[m [01;34mselect[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;30mPut_Line[m[31m([m[31m"Main server halted"[m[31m);[m
   [01;34mend[m Main_Server[31m;[m
   
   
   
   
   
   
   
   
   
   
   
   
   [31m--------------------------------------------------------------------------------------[m
   [31m--                              Products server                                     --[m
   [31m--------------------------------------------------------------------------------------[m
   [31m--[m
   [31m-- Products server is products server for web gate.[m
   [31m--[m
   [31m-- Version : 1.0.0[m
   [31m-- Date    : 2025-06-25 12:00:00[m
   [31m--[m
   
   
   [01;34mtask[m [01;34mtype[m [01;30mProducts_Thread_Server[m[31m([mSocket [31m:[m Socket_Access[31m)[m [01;34mis[m
      [01;34mentry[m [01;30mGet_Id[m[31m([mId [31m:[m [01;34mout[m Task_Id[31m);[m
   [01;34mend[m Products_Thread_Server[31m;[m
   
   [01;34mtype[m Products_server_Access [01;34mis[m [01;34maccess[m Products_Thread_server[31m;[m
   
   [01;34mtype[m Products_Thread_Server_Task [01;34mis[m
      [01;34mrecord[m
	 Id [31m:[m Task_Id [31m:=[m Null_Task_id[31m;[m
	 Thread_server [31m:[m Products_server_access[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m
   [01;34mtype[m Products_server_Task_Access [01;34mis[m [01;34maccess[m Products_Thread_Server_Task[31m;[m   
   
   
   
   
   [01;34mtask[m [01;34mbody[m Products_Thread_Server [01;34mis[m
	 
      [01;34mtype[m String_Access [01;34mis[m [01;34maccess[m [01;34mall[m [32mString[m[31m;[m
      
      Channel         [31m:[m [01;34mconstant[m Stream_Access [31m:=[m [01;30mStream[m[31m([mSocket[31m.[m[01;34mall[m[31m);[m
      Logtype         [31m:[m String_Access[31m;[m
   [01;34mbegin[m
      [01;34maccept[m [01;30mGet_Id[m[31m([mId [31m:[m [01;34mout[m Task_Id[31m)[m [01;34mdo[m
	 Id [31m:=[m Current_Task[31m;[m
      [01;34mend[m Get_Id[31m;[m      
      [01;34mdelay[m [35m0.2[m[31m;[m
      
      Logtype [31m:=[m [01;34mnew[m [32mString[m [31m' (String'[m[01;30mInput[m[31m([mChannel[31m));[m
      
      [01;34mif[m Logtype[31m.[m[01;34mall[m [31m=[m [31m"Products"[m [01;34mthen[m
	 
	 [01;34mdelay[m [35m0.2[m[31m;[m
	 Natural'[01;30mOutput[m[31m([mChannel[31m,[m Current_Game[31m.[mCount[31m);[m
	 [01;34mdelay[m [35m0.2[m[31m;[m
	 
	 
	 [01;34mif[m Current_Game[31m.[mCount [31m/=[m [35m0[m [01;34mthen[m
	    [01;34mfor[m I [01;34min[m [35m1[m[31m..[mCurrent_Game[31m.[mCount [01;34mloop[m
	       
	       [32mWide_String[m'[01;30mOutput[m[31m([mChannel[31m,[m [01;30mTo_Wide_String[m[31m([mCurrent_Game[31m.[m[01;30mProducts[m[31m([mI[31m).[mName[31m.[m[01;34mall[m[31m));[m
	       
	       
	       [32mWide_String[m'[01;30mOutput[m[31m([mChannel[31m,[m Current_Game[31m.[m[01;30mProducts[m[31m([mI[31m).[mDescription[31m.[m[01;34mall[m[31m);[m
	       
	       
	       [32mWide_String[m'[01;30mOutput[m[31m([mChannel[31m,[m [01;30mTo_Wide_String[m[31m([mCurrent_Game[31m.[m[01;30mProducts[m[31m([mI[31m).[mDocumentation[31m.[m[01;34mall[m[31m));[m
	       Fixed_Unit_Ht'[01;30mOutput[m[31m([mChannel[31m,[m Current_Game[31m.[m[01;30mProducts[m[31m([mI[31m).[mUnit_Ht[31m);[m
	       
	       
	       Fixed_Factor'[01;30mOutput[m[31m([mChannel[31m,[m Current_Game[31m.[m[01;30mProducts[m[31m([mI[31m).[mTVA_Rate[31m);[m
	       
	       
	       
	       Fixed_Total'[01;30mOutput[m[31m([mChannel[31m,[m Current_Game[31m.[m[01;30mProducts[m[31m([mI[31m).[mTVA[31m);[m
	       
	       
	       Fixed_Unit_Ttc'[01;30mOutput[m[31m([mChannel[31m,[m Current_Game[31m.[m[01;30mProducts[m[31m([mI[31m).[mUnit_TTC[31m);[m

	       
	       [01;34mdelay[m [35m0.1[m[31m;[m
	    [01;34mend[m [01;34mloop[m[31m;[m

	 [01;34mend[m [01;34mif[m[31m;[m

      	 Gnat[31m.[mSockets[31m.[m[01;30mClose_Socket[m[31m([mSocket[31m.[m[01;34mall[m[31m);[m
      [01;34melse[m
	 Gnat[31m.[mSockets[31m.[m[01;30mClose_Socket[m [31m([mSocket[31m.[m[01;34mall[m[31m);[m
      [01;34mend[m [01;34mif[m[31m;[m

   [01;34mend[m Products_Thread_Server[31m;[m

   
   
   
   [01;34mprocedure[m Unchecked_Deallocation_Products_server [01;34mis[m
      [01;34mnew[m Ada[31m.[m[01;30mUnchecked_Deallocation[m[31m([mProducts_Thread_Server[31m,[m Products_server_Access[31m);[m
   [01;34mprocedure[m Unchecked_Deallocation_Products_server_task [01;34mis[m
      [01;34mnew[m Ada[31m.[m[01;30mUnchecked_Deallocation[m[31m([mProducts_Thread_Server_Task[31m,[m Products_server_Task_Access[31m);[m
   
   
   

   [01;34mtask[m [01;34mbody[m Products_Server [01;34mis[m
      
      
      
      
      Max_Client [31m:[m [01;34mconstant[m Positive [31m:=[m [35m500[m[31m;[m
      
      Liste [31m:[m [01;34marray[m[31m([m[35m1[m[31m..[mMax_Client[31m)[m [01;34mof[m Socket_access[31m;[m
      Liste_Thread_task [31m:[m [01;34marray[m[31m([m[35m1[m[31m..[mMax_Client[31m)[m [01;34mof[m Products_Server_Task_Access[31m;[m
      Bliste [31m:[m [01;34marray[m[31m([m[35m1[m[31m..[mMax_Client[31m)[m [01;34mof[m [32mBoolean[m[31m;[m
      Reads[31m,[mWrite [31m:[m Socket_Set_Type[31m;[m

      Selector [31m:[m Selector_Type[31m;[m
      Srv_Adr[31m,[mAdr [31m:[m Sock_Addr_Type[31m;[m
      Srv_Socket [31m:[m Socket_Type[31m;[m
      Status [31m:[m Selector_Status[31m;[m

      Ptr [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m
      
      
      [01;34mfunction[m Chercher [01;34mreturn[m Natural [01;34mis[m
      [01;34mbegin[m
	 [01;34mfor[m I [01;34min[m [35m1[m[31m..[mMax_Client [01;34mloop[m
	    [01;34mif[m [01;30mListe_Thread_Task[m[31m([mI[31m)[m [31m=[m [01;34mnull[m [01;34mthen[m
	       [01;34mreturn[m I[31m;[m
	    [01;34melsif[m [01;34mnot[m [01;30mIs_callable[m[31m([m[01;30mListe_Thread_Task[m[31m([mI[31m).[mId[31m)[m [01;34mor[m [01;30mIs_terminated[m[31m([m[01;30mListe_Thread_Task[m[31m([mI[31m).[mId[31m)[m [01;34mthen[m
	       [01;30mUnchecked_Deallocation_Products_Server[m[31m([m[01;30mListe_Thread_Task[m[31m([mI[31m).[mThread_Server[31m);[m
	       [01;30mUnchecked_Deallocation_Products_Server_Task[m[31m([m[01;30mListe_Thread_Task[m[31m([mI[31m));[m
	       [01;30mListe_Thread_Task[m[31m([mI[31m)[m [31m:=[m [01;34mnull[m[31m;[m
	       [01;30mListe[m[31m([mI[31m)[m [31m:=[m [01;34mnew[m Socket_Type[31m;[m
	       [01;34mreturn[m I[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 [01;34mreturn[m [35m0[m[31m;[m
      [01;34mend[m Chercher[31m;[m
      
      

      Thread_Suivant [31m:[m Natural [31m:=[m [35m0[m[31m;[m

      End_Of_Task [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      Run [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
                       
   [01;34mbegin[m
      [01;34maccept[m Initialize[31m;[m
      [01;34mfor[m I [01;34min[m [35m1[m[31m..[mMax_Client [01;34mloop[m
	 [01;30mliste[m[31m([mI[31m)[m [31m:=[m [01;34mnew[m Socket_Type[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Server initialize sockets..."[m[31m);[m
      
      
      Bliste [31m:=[m [31m([m[01;34mothers[m [31m=>[m False[31m);[m
      
      Srv_Adr[31m.[mAddr [31m:=[m Any_Inet_Addr[31m;[m
      Srv_Adr[31m.[mPort [31m:=[m [35m1988[m[31m;[m
      
      [01;30mCreate_Socket[m[31m([mSrv_Socket[31m);[m
      
      Set_Socket_Option
	[31m([mSrv_Socket[31m,[m
	 Socket_Level[31m,[m
	 [31m([mReuse_Address[31m,[m True[31m));[m
      [01;34mdelay[m [35m0.2[m[31m;[m
      
      [01;30mBind_Socket[m[31m([mSrv_Socket[31m,[mSrv_Adr[31m);[m

      [01;30mListen_Socket[m[31m([mSrv_Socket[31m);[m
      
      [01;30mCreate_Selector[m[31m([mSelector[31m);[m
      
	 
	 
      [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	 [01;34mloop[m
	    [01;34mselect[m
	       [01;34maccept[m Initialize[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Start[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m

	       [01;34maccept[m Stop[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Halt [01;34mdo[m
		  End_Of_Task [31m:=[m True[31m;[m
	       [01;34mend[m Halt[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mend[m [01;34mselect[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Server sockets initialized."[m[31m);[m
	 [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	    [01;34mselect[m
	       [01;34maccept[m Initialize[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Start[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Stop[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Halt [01;34mdo[m
		  End_Of_Task [31m:=[m True[31m;[m
	       [01;34mend[m Halt[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34mdelay[m [35m0.0[m[31m;[m
	       
	       
	       
	       [01;30mEmpty[m[31m([mReads[31m);[m
	       
	       [01;30mSet[m[31m([mReads[31m,[mSrv_Socket[31m);[m

	       [01;34mfor[m I [01;34min[m [35m1[m[31m..[mMax_Client [01;34mloop[m
		  [01;34mif[m [01;30mBliste[m[31m([mI[31m)[m [01;34mthen[m
		     [01;30mSet[m[31m([mReads[31m,[m [01;30mListe[m[31m([mI[31m).[m[01;34mall[m[31m);[m
		  [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m

	       [01;30mCheck_Selector[m[31m([mSelector[31m,[m Reads[31m,[m Write[31m,[m Status[31m);[m
	       
	       [01;34mcase[m Status [01;34mis[m
		  [01;34mwhen[m Completed [31m=>[m
		     
		     [01;34mif[m [01;30mIs_Set[m[31m([mReads[31m,[mSrv_Socket[31m)[m [01;34mthen[m
			Thread_Suivant [31m:=[m Chercher[31m;[m

			[01;34mif[m Thread_Suivant [31m/=[m [35m0[m [01;34mthen[m
			   Ptr [31m:=[m Thread_Suivant[31m;[m
			   [31m--Text_Io.Put_Line("Server accept");[m
			   [01;30mAccept_Socket[m[31m([mSrv_Socket[31m,[m [01;30mListe[m[31m([mPtr[31m).[m[01;34mall[m[31m,[m Adr[31m);[m
			   [31m--Text_Io.Put_Line("Server accepted");[m
			   [31m--  Set_Socket_Option[m
			   [31m--                                  (Liste(Ptr).all,[m
			   [31m--                                   Socket_Level,[m
			   [31m--                                   (Reuse_Address, True));[m
			   [01;34mselect[m
			      [01;34maccept[m Halt [01;34mdo[m				 
				 End_Of_Task [31m:=[m True[31m;[m
			      [01;34mend[m Halt[31m;[m
			      [01;34mexit[m[31m;[m
			   [01;34mor[m
			      [01;34maccept[m Stop[31m;[m
			      [01;34mexit[m[31m;[m
			   [01;34mor[m [01;34mdelay[m [35m2.0[m[31m;[m
			   
			   [01;34mend[m [01;34mselect[m[31m;[m
			   
			   [01;30mBliste[m[31m([mPtr[31m)[m [31m:=[m True[31m;[m
			[01;34melse[m
			   [01;34mdelay[m [35m1.0[m[31m;[m
			   [31m--     Text_Io.Put_Line("Client suivant = zero ");[m
			   [31m--     select[m
			   [31m--  	accept Halt;	    [m
			   [31m--  	--Ptr := Chercher;[m
			   [31m--  	exit;[m
			   [31m--     or delay 2.0;[m
			   [31m--     end select;[m
			[01;34mend[m [01;34mif[m[31m;[m
		     [01;34melse[m

			[01;34mfor[m I [01;34min[m [35m1[m[31m..[mMax_Client [01;34mloop[m

			   
			   [01;34mif[m [01;30mbliste[m[31m([mI[31m)[m [01;34mthen[m

			      [01;34mif[m [01;30mIs_Set[m[31m([mReads[31m,[m[01;30mListe[m[31m([mI[31m).[m[01;34mall[m[31m)[m [01;34mthen[m
				 [01;30mListe_Thread_Task[m[31m([mI[31m)[m [31m:=[m [01;34mnew[m Products_Thread_Server_Task[31m;[m

				 [01;30mListe_Thread_Task[m[31m([mI[31m).[mThread_Server [31m:=[m [01;34mnew[m [01;30mProducts_Thread_Server[m[31m([m[01;30mListe[m[31m([mi[31m));[m

				 [01;30mListe_Thread_Task[m[31m([mi[31m).[mThread_Server[31m.[m[01;30mGet_Id[m[31m([m[01;30mListe_Thread_Task[m[31m([mi[31m).[mId[31m);[m


				 [01;30mBliste[m[31m([mi[31m)[m [31m:=[m false[31m;[m

			      [01;34mend[m [01;34mif[m[31m;[m
			   [01;34mend[m [01;34mif[m[31m;[m
			[01;34mend[m [01;34mloop[m[31m;[m
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mwhen[m Expired [31m=>[m
		     Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"expired"[m[31m);[m
		  [01;34mwhen[m Aborted [31m=>[m
		     Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"aborted"[m[31m);[m
	       [01;34mend[m [01;34mcase[m[31m;[m	
	    [01;34mend[m [01;34mselect[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;30mPut_Line[m[31m([m[31m"Product server halted"[m[31m);[m
   [01;34mend[m Products_Server[31m;[m
   

   
[01;34mend[m M[31m.[mServers [31m;[m 
