diff --git a/groups/221.native_packages_dev.group b/groups/221.native_packages_dev.group
index 799cb2d..93f2a91 100644
--- a/groups/221.native_packages_dev.group
+++ b/groups/221.native_packages_dev.group
@@ -3,7 +3,7 @@
 #
 GROUP_TARGET="native_packages";
 NATIVE_PACKAGES_PACKAGES="$(rtl_lconcat "${NATIVE_PACKAGES_PACKAGES}" "
-bison chicken cparser cssc diffutils flex gdb gengetopt indent lua lunix m4 make mandoc nasm
+bison chicken cparser cssc diffutils flex gdb gengetopt gnucobol indent lua lunix m4 make mandoc nasm
 patch patchutils perl posix_cc python2 python3 ruby sbsigntools tk")";
 : ${PKG_BISON_DEPENDS:="readline"};
 : ${PKG_BISON_SHA256SUM:=9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2};
@@ -58,6 +58,12 @@ ac_cv_prog_gnu_m4_gnu=yes"};
 : ${PKG_GENGETOPT_SHA256SUM:=b941aec9011864978dd7fdeb052b1943535824169d2aa2b0e7eae9ab807584ac};
 : ${PKG_GENGETOPT_VERSION:=2.23};
 : ${PKG_GENGETOPT_URL:=https://ftp.gnu.org/gnu/gengetopt/gengetopt-${PKG_GENGETOPT_VERSION}.tar.xz};
+: ${PKG_GNUCOBOL_DEPENDS:="ncursesw"}
+: ${PKG_GNUCOBOL_SHA256SUM:=597005d71fd7d65b90cbe42bbfecd5a9ec0445388639404662e70d53ddf22574};
+: ${PKG_GNUCOBOL_VERSION:=3.1.2};
+: ${PKG_GNUCOBOL_URL:=https://ftp.gnu.org/gnu/gnucobol/gnucobol-${PKG_GNUCOBOL_VERSION}.tar.xz};
+: ${PKG_GNUCOBOL_CONFIGURE_ARGS_EXTRA:="--without-db --without-json --with-math=gmp"};
+: ${PKG_GNUCOBOL_LDFLAGS_CONFIGURE_EXTRA:="-ltinfow"};
 : ${PKG_LUA_DEPENDS:="readline"};
 : ${PKG_LUA_SHA256SUM:=f8612276169e3bfcbcfb8f226195bfc6e466fe13042f1076cbde92b7ec96bbfb};
 : ${PKG_LUA_VERSION:=5.4.3};
diff --git a/patches/gnucobol-3.1.2_pre.local.patch b/patches/gnucobol-3.1.2_pre.local.patch
new file mode 100644
index 0000000..8c20fd6
--- /dev/null
+++ b/patches/gnucobol-3.1.2_pre.local.patch
@@ -0,0 +1,173 @@
+diff -ru gnucobol-3.1.2.orig/configure gnucobol-3.1.2/configure
+--- gnucobol-3.1.2.orig/configure	2020-12-23 13:04:58.000000000 +0100
++++ gnucobol-3.1.2/configure	2022-02-07 11:04:34.765517654 +0100
+@@ -18217,165 +18217,10 @@
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ 
+-# Checks for size of long
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if size of long int = size of long long" >&5
+-$as_echo_n "checking if size of long int = size of long long... " >&6; }
+-if test "$cross_compiling" = yes; then :
+-  if test "$COB_LI_IS_LL" = "0"; then
+-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: specified \"no\" on configure line" >&5
+-$as_echo "specified \"no\" on configure line" >&6; }
+-	 else
+-		if test "$COB_LI_IS_LL" = "1"; then
+-			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: specified \"yes\" on configure line" >&5
+-$as_echo "specified \"yes\" on configure line" >&6; }
+-		else
+-			COB_LI_IS_LL=1
+-			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: assumed - cross-compilation" >&5
+-$as_echo "assumed - cross-compilation" >&6; }
+-		fi
+-	 fi
+-	 $as_echo "#define COB_LI_IS_LL \$COB_LI_IS_LL" >>confdefs.h
+-
+-	 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot run test program while cross-compiling" >&5
+-$as_echo "$as_me: WARNING: cannot run test program while cross-compiling" >&2;}
+-else
+-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h.  */
+-
+-int
+-main ()
+-{
+-
+-	if (sizeof(long int) == sizeof(long long))
+-		return 0;
+-	return 1;
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_run "$LINENO"; then :
+-  $as_echo "#define COB_LI_IS_LL 1" >>confdefs.h
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }
+-else
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+-fi
+-
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if long is 32 bits" >&5
+-$as_echo_n "checking if long is 32 bits... " >&6; }
+-if test "$cross_compiling" = yes; then :
+-  if test "$COB_32_BIT_LONG" = "0"; then
+-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: specified \"no\" on configure line" >&5
+-$as_echo "specified \"no\" on configure line" >&6; }
+-	 else
+-		if test "$COB_32_BIT_LONG" = "1"; then
+-			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: specified \"yes\" on configure line" >&5
+-$as_echo "specified \"yes\" on configure line" >&6; }
+-		else
+-			COB_32_BIT_LONG=1
+-			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: assumed - cross-compilation" >&5
+-$as_echo "assumed - cross-compilation" >&6; }
+-		fi
+-	 fi
+-	 $as_echo "#define COB_32_BIT_LONG \$COB_32_BIT_LONG" >>confdefs.h
+-
+-	 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot run test program while cross-compiling" >&5
+-$as_echo "$as_me: WARNING: cannot run test program while cross-compiling" >&2;}
+-else
+-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h.  */
+-
+-int
+-main ()
+-{
+-
+-	if (sizeof (long) == 4)
+-		return 0;
+-	return 1;
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_run "$LINENO"; then :
+-  $as_echo "#define COB_32_BIT_LONG 1" >>confdefs.h
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }
+-else
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+-fi
+-
+-
+-
+-if test "cross_compiling" != "yes"; then
+-	COB_HAS_64_BIT_POINTER="no"
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if pointer is longer than 32 bits" >&5
+-$as_echo_n "checking if pointer is longer than 32 bits... " >&6; }
+-if test "$cross_compiling" = yes; then :
+-  if test "$COB_HAS_64_BIT_POINTER" = "0"; then
+-		COB_HAS_64_BIT_POINTER="no"
+-		$as_echo "#define COB_64_BIT_POINTER 0" >>confdefs.h
+-
+-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: specified \"no\" on configure line" >&5
+-$as_echo "specified \"no\" on configure line" >&6; }
+-	 else
+-		if test "$COB_HAS_64_BIT_POINTER" = "1"; then
+-			COB_HAS_64_BIT_POINTER="yes"
+-			$as_echo "#define COB_64_BIT_POINTER 1" >>confdefs.h
+-
+-			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: specified \"yes\" on configure line" >&5
+-$as_echo "specified \"yes\" on configure line" >&6; }
+-		else
+-			COB_HAS_64_BIT_POINTER="no"
+-			$as_echo "#define COB_64_BIT_POINTER 0" >>confdefs.h
+-
+-			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: assumed \"no\" - cross-compilation" >&5
+-$as_echo "assumed \"no\" - cross-compilation" >&6; }
+-		fi
+-	 fi
+-	 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot run test program while cross-compiling" >&5
+-$as_echo "$as_me: WARNING: cannot run test program while cross-compiling" >&2;}
+-else
+-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h.  */
+-
+-int
+-main ()
+-{
+-
+-	if (sizeof (void *) > 4U)
+-		return 0;
+-	return 1;
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_run "$LINENO"; then :
+-  COB_HAS_64_BIT_POINTER="yes"
+-	 $as_echo "#define COB_64_BIT_POINTER 1" >>confdefs.h
+-
+-	 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }
+-else
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+-fi
+-
++# 64-bit midipix
++$as_echo "#define COB_LI_IS_LL 1" >>confdefs.h
++$as_echo "#define COB_32_BIT_LONG 0" >>confdefs.h
++$as_echo "#define COB_64_BIT_POINTER 1" >>confdefs.h
+ 
+ # Check gcc wrapv option
+ # We likely don't need this and remove it before 3.0 final release