Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision 519f11c3bd79f925ace2b671bf682be5b31bea6f)
+++ libcfa/src/iostream.cfa	(revision 463cb3379a0b569bada3eb54e7751c62d819d4ac)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul  8 22:14:20 2020
-// Update Count     : 1069
+// Last Modified On : Thu Jul 16 07:43:31 2020
+// Update Count     : 1102
 //
 
@@ -970,4 +970,25 @@
 	} // ?|?
 
+#if defined( __SIZEOF_INT128__ )
+	istype & ?|?( istype & is, int128 & i128 ) {
+		return (istype &)(is | (unsigned int128 &)i128);
+	} // ?|?
+
+	istype & ?|?( istype & is, unsigned int128 & ui128 ) {
+		char s[40];
+		bool sign = false;
+
+		if ( fmt( is, " %[-]", s ) == 1 ) sign = true;	// skip whitespace, negative sign ?
+		// If the input is too large, the value returned is undefined. If there is no input, no value is returned
+		if ( fmt( is, "%39[0-9]%*[0-9]", s ) == 1 ) {	// take first 39 characters, ignore remaining
+			ui128 = 0;
+			for ( unsigned int i = 0; s[i] != '\0'; i += 1 ) {
+				ui128 = ui128 * 10 + s[i] - '0';
+			} // for
+			if ( sign ) ui128 = -ui128;
+		} else if ( sign ) ungetc( is, '-' );			// return minus when no digits
+		return is;
+	} // ?|?
+#endif // __SIZEOF_INT128__
 
 	istype & ?|?( istype & is, float & f ) {
Index: libcfa/src/iostream.hfa
===================================================================
--- libcfa/src/iostream.hfa	(revision 519f11c3bd79f925ace2b671bf682be5b31bea6f)
+++ libcfa/src/iostream.hfa	(revision 463cb3379a0b569bada3eb54e7751c62d819d4ac)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jul 13 22:11:41 2020
-// Update Count     : 344
+// Last Modified On : Thu Jul 16 07:43:32 2020
+// Update Count     : 348
 //
 
@@ -315,7 +315,11 @@
 	istype & ?|?( istype &, unsigned int & );
 	istype & ?|?( istype &, long int & );
+	istype & ?|?( istype &, unsigned long int & );
 	istype & ?|?( istype &, long long int & );
-	istype & ?|?( istype &, unsigned long int & );
 	istype & ?|?( istype &, unsigned long long int & );
+#if defined( __SIZEOF_INT128__ )
+	istype & ?|?( istype &, int128 & );
+	istype & ?|?( istype &, unsigned int128 & );
+#endif // __SIZEOF_INT128__
 
 	istype & ?|?( istype &, float & );
