Index: libcfa/src/fstream.cfa
===================================================================
--- libcfa/src/fstream.cfa	(revision 1201d54d164b19828cd73f347ace8c9fd400c455)
+++ libcfa/src/fstream.cfa	(revision ff2a33e66c767c06fbea0d966adf7c49f19da11f)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 12 12:03:53 2019
-// Update Count     : 344
+// Last Modified On : Sun Jul 14 11:51:10 2019
+// Update Count     : 347
 //
 
@@ -119,5 +119,5 @@
 	#ifdef __CFA_DEBUG__
 	if ( file == 0 ) {
-		abort( IO_MSG "open output file \"%s\", %s", name, strerror( errno ) );
+		abort | IO_MSG "open output file \"" | name | "\"" | nl | strerror( errno );
 	} // if
 	#endif // __CFA_DEBUG__
@@ -133,5 +133,5 @@
 
 	if ( fclose( (FILE *)(os.file) ) == EOF ) {
-		abort( IO_MSG "close output %s", strerror( errno ) );
+		abort | IO_MSG "close output" | nl | strerror( errno );
 	} // if
 } // close
@@ -139,9 +139,9 @@
 ofstream & write( ofstream & os, const char * data, size_t size ) {
 	if ( fail( os ) ) {
-		abort( "attempt write I/O on failed stream\n" );
+		abort | IO_MSG "attempt write I/O on failed stream";
 	} // if
 
 	if ( fwrite( data, 1, size, (FILE *)(os.file) ) != size ) {
-		abort( IO_MSG "write %s", strerror( errno ) );
+		abort | IO_MSG "write" | nl | strerror( errno );
 	} // if
 	return os;
@@ -154,5 +154,5 @@
 	if ( len == EOF ) {
 		if ( ferror( (FILE *)(os.file) ) ) {
-			abort( "invalid write\n" );
+			abort | IO_MSG "invalid write";
 		} // if
 	} // if
@@ -211,5 +211,5 @@
 	#ifdef __CFA_DEBUG__
 	if ( file == 0 ) {
-		abort( IO_MSG "open input file \"%s\", %s\n", name, strerror( errno ) );
+		abort | IO_MSG "open input file \"" | name | "\"" | nl | strerror( errno );
 	} // if
 	#endif // __CFA_DEBUG__
@@ -225,5 +225,5 @@
 
 	if ( fclose( (FILE *)(is.file) ) == EOF ) {
-		abort( IO_MSG "close input %s", strerror( errno ) );
+		abort | IO_MSG "close input" | nl | strerror( errno );
 	} // if
 } // close
@@ -231,9 +231,9 @@
 ifstream & read( ifstream & is, char * data, size_t size ) {
 	if ( fail( is ) ) {
-		abort( "attempt read I/O on failed stream\n" );
+		abort | IO_MSG "attempt read I/O on failed stream";
 	} // if
 
 	if ( fread( data, size, 1, (FILE *)(is.file) ) == 0 ) {
-		abort( IO_MSG "read %s", strerror( errno ) );
+		abort | IO_MSG "read" | nl | strerror( errno );
 	} // if
 	return is;
@@ -242,9 +242,9 @@
 ifstream &ungetc( ifstream & is, char c ) {
 	if ( fail( is ) ) {
-		abort( "attempt ungetc I/O on failed stream\n" );
+		abort | IO_MSG "attempt ungetc I/O on failed stream";
 	} // if
 
 	if ( ungetc( c, (FILE *)(is.file) ) == EOF ) {
-		abort( IO_MSG "ungetc %s", strerror( errno ) );
+		abort | IO_MSG "ungetc" | nl | strerror( errno );
 	} // if
 	return is;
@@ -258,5 +258,5 @@
 	if ( len == EOF ) {
 		if ( ferror( (FILE *)(is.file) ) ) {
-			abort( "invalid read\n" );
+			abort | IO_MSG "invalid read";
 		} // if
 	} // if
Index: libcfa/src/gmp.hfa
===================================================================
--- libcfa/src/gmp.hfa	(revision 1201d54d164b19828cd73f347ace8c9fd400c455)
+++ libcfa/src/gmp.hfa	(revision ff2a33e66c767c06fbea0d966adf7c49f19da11f)
@@ -10,6 +10,6 @@
 // Created On       : Tue Apr 19 08:43:43 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 12 12:02:55 2019
-// Update Count     : 26
+// Last Modified On : Sat Jul 13 15:25:05 2019
+// Update Count     : 27
 //
 
@@ -43,5 +43,5 @@
 	Int ?=?( Int & lhs, long int rhs ) { mpz_set_si( lhs.mpz, rhs ); return lhs; }
 	Int ?=?( Int & lhs, unsigned long int rhs ) { mpz_set_ui( lhs.mpz, rhs ); return lhs; }
-	Int ?=?( Int & lhs, const char * rhs ) { if ( mpz_set_str( lhs.mpz, rhs, 0 ) ) { printf( "invalid string conversion\n" ); abort(); } return lhs; }
+	Int ?=?( Int & lhs, const char * rhs ) { if ( mpz_set_str( lhs.mpz, rhs, 0 ) ) { abort | "invalid string conversion"; } return lhs; }
 
 	char ?=?( char & lhs, Int rhs ) { char val = mpz_get_si( rhs.mpz ); lhs = val; return lhs; }
Index: libcfa/src/rational.cfa
===================================================================
--- libcfa/src/rational.cfa	(revision 1201d54d164b19828cd73f347ace8c9fd400c455)
+++ libcfa/src/rational.cfa	(revision ff2a33e66c767c06fbea0d966adf7c49f19da11f)
@@ -10,6 +10,6 @@
 // Created On       : Wed Apr  6 17:54:28 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 12 12:02:36 2019
-// Update Count     : 183
+// Last Modified On : Fri Jul 12 18:12:08 2019
+// Update Count     : 184
 //
 
@@ -35,5 +35,5 @@
 	static RationalImpl simplify( RationalImpl & n, RationalImpl & d ) {
 		if ( d == (RationalImpl){0} ) {
-			abort( "Invalid rational number construction: denominator cannot be equal to 0.\n" );
+			abort | "Invalid rational number construction: denominator cannot be equal to 0.";
 		} // exit
 		if ( d < (RationalImpl){0} ) { d = -d; n = -n; } // move sign to numerator
Index: libcfa/src/time.cfa
===================================================================
--- libcfa/src/time.cfa	(revision 1201d54d164b19828cd73f347ace8c9fd400c455)
+++ libcfa/src/time.cfa	(revision ff2a33e66c767c06fbea0d966adf7c49f19da11f)
@@ -10,10 +10,10 @@
 // Created On       : Tue Mar 27 13:33:14 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 12 12:03:19 2019
-// Update Count     : 59
+// Last Modified On : Sat Jul 13 08:41:55 2019
+// Update Count     : 65
 //
 
 #include "time.hfa"
-#include "iostream.hfa"
+#include "fstream.hfa"
 #include <stdio.h>										// snprintf
 #include <assert.h>
@@ -52,6 +52,8 @@
 
 #ifdef __CFA_DEBUG__
-#define CreateFmt "Attempt to create Time( year=%d (>=1970), month=%d (1-12), day=%d (1-31), hour=%d (0-23), min=%d (0-59), sec=%d (0-60), nsec=%d (0-999_999_999), " \
-	"which exceeds range 00:00:00 UTC, January 1, 1970 to 03:14:07 UTC, January 19, 2038."
+static void tabort( int year, int month, int day, int hour, int min, int sec, int nsec ) {
+	abort | "Attempt to create Time( year=" | year | "(>=1970), month=" | month | "(1-12), day=" | day | "(1-31), hour=" | hour | "(0-23), min=" | min | "(0-59), sec=" | sec
+		  | "(0-60), nsec=" | nsec | "(0-999_999_999), which exceeds range 00:00:00 UTC, January 1, 1970 to 03:14:07 UTC, January 19, 2038.";
+} // tabort
 #endif // __CFA_DEBUG__
 
@@ -63,5 +65,5 @@
 #ifdef __CFA_DEBUG__
 	if ( month < 1 || 12 < month ) {
-		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+		tabort( year, month, day, hour, min, sec, nsec );
 	} // if
 #endif // __CFA_DEBUG__
@@ -69,5 +71,5 @@
 #ifdef __CFA_DEBUG__
 	if ( day < 1 || 31 < day ) {
-		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+		tabort( year, month, day, hour, min, sec, nsec );
 	} // if
 #endif // __CFA_DEBUG__
@@ -79,5 +81,5 @@
 #ifdef __CFA_DEBUG__
 	if ( epochsec == (time_t)-1 ) {
-		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+		tabort( year, month, day, hour, min, sec, nsec );
 	} // if
 #endif // __CFA_DEBUG__
@@ -85,5 +87,5 @@
 #ifdef __CFA_DEBUG__
 	if ( tv > 2147483647LL * TIMEGRAN ) {				// between 00:00:00 UTC, January 1, 1970 and 03:14:07 UTC, January 19, 2038.
-		abort( CreateFmt, year, month, day, hour, (int)min, sec, nsec );
+		tabort( year, month, day, hour, min, sec, nsec );
 	} // if
 #endif // __CFA_DEBUG__
