From 3d05d7e96f0adf8d7f8ec83c63045ba3c70b5f20 Mon Sep 17 00:00:00 2001
From: Bob Dubner <rdubner@symas.com>
Date: Thu, 4 Jan 2024 19:21:43 -0500
Subject: [PATCH] UAT - more shuffling of tests

---
 gcc/cobol/UAT/failsuite.src/run_functions.at | 495 ------------------
 gcc/cobol/UAT/failsuite.src/syn_move.at      |  32 --
 gcc/cobol/UAT/skipsuite.at                   |   6 +-
 gcc/cobol/UAT/skipsuite.src/run_functions.at | 499 +++++++++++++++++++
 gcc/cobol/UAT/testsuite.src/run_functions.at |  19 +
 gcc/cobol/UAT/testsuite.src/syn_move.at      |  28 ++
 gcc/cobol/failures/playpen/playpen.cbl       |  29 +-
 7 files changed, 563 insertions(+), 545 deletions(-)
 create mode 100644 gcc/cobol/UAT/skipsuite.src/run_functions.at

diff --git a/gcc/cobol/UAT/failsuite.src/run_functions.at b/gcc/cobol/UAT/failsuite.src/run_functions.at
index 9760fd5b601e..ef5097aece6d 100644
--- a/gcc/cobol/UAT/failsuite.src/run_functions.at
+++ b/gcc/cobol/UAT/failsuite.src/run_functions.at
@@ -21,441 +21,6 @@
 ### ISO+IEC+1989-2002 15 Intrinsic Functions
 ### ISO+IEC+1989-2002 9.4 User-Defined Functions
 
-AT_SETUP([FUNCTION CONTENT-LENGTH])
-AT_KEYWORDS([functions length])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       DATA             DIVISION.
-       WORKING-STORAGE  SECTION.
-       01  P            USAGE    POINTER.
-       01  X            PIC      X(4) VALUE Z"ABC".
-       01  TEST-FLD     USAGE    BINARY-LONG.       
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION CONTENT-LENGTH ( P )
-             TO TEST-FLD.
-           IF TEST-FLD NOT = 0
-              DISPLAY 'CONTENT-LENGTH NULL wrong: ' TEST-FLD
-              END-DISPLAY
-           END-IF
-           SET P TO ADDRESS OF X
-           MOVE FUNCTION CONTENT-LENGTH ( P )
-             TO TEST-FLD
-           IF TEST-FLD NOT = 3
-              DISPLAY 'CONTENT-LENGTH z"abc" wrong: ' TEST-FLD
-              END-DISPLAY
-           END-IF
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION CONTENT-OF])
-AT_KEYWORDS([functions POINTER literal BASED ALLOCATE FREE EXCEPTION-STATUS])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       DATA             DIVISION.
-       WORKING-STORAGE  SECTION.
-       01  P   USAGE    POINTER.
-       01  X   PIC      X(4) VALUE Z"ABC".
-       01  B   PIC      X(10) BASED.
-       PROCEDURE        DIVISION.
-           SET P TO ADDRESS OF X
-           IF FUNCTION CONTENT-OF ( P ) NOT EQUAL 'ABC' THEN
-              DISPLAY 'CONTENT-OF(ptr) wrong' END-DISPLAY
-           END-IF
-           IF FUNCTION CONTENT-OF ( P, 2 ) NOT EQUAL 'AB' THEN
-              DISPLAY 'CONTENT-OF(ptr, len) wrong' END-DISPLAY
-           END-IF
-           IF FUNCTION EXCEPTION-STATUS NOT = SPACES THEN
-              DISPLAY 'unexpected exception (1): '
-                       FUNCTION EXCEPTION-STATUS
-              END-DISPLAY
-           END-IF
-           SET  P      TO NULL
-           MOVE 'PPPP' TO X
-           STRING FUNCTION CONTENT-OF ( P )
-                  DELIMITED BY SIZE
-                  INTO X
-           END-STRING
-      *>   Note: result *should* depend on dialect option zero-length literals
-           IF X NOT EQUAL 'PPPP' THEN
-              DISPLAY 'CONTENT-OF empty POINTER wrong: "'" X "'"
-              END-DISPLAY
-           END-IF
-           IF FUNCTION EXCEPTION-STATUS NOT = "EC-DATA-PTR-NULL" THEN
-              DISPLAY 'missing exception (1)'
-              END-DISPLAY
-           END-IF
-           ALLOCATE B INITIALIZED
-           SET  P      TO ADDRESS OF B
-           IF FUNCTION CONTENT-OF ( P, 1 ) NOT EQUAL SPACES THEN
-              DISPLAY 'CONTENT-OF allocated BASED item wrong'
-              END-DISPLAY
-           END-IF
-           IF FUNCTION EXCEPTION-STATUS NOT = SPACES THEN
-              DISPLAY 'unexpected exception (2): '
-                       FUNCTION EXCEPTION-STATUS
-              END-DISPLAY
-           END-IF
-           FREE B
-           SET  P      TO ADDRESS OF B
-           MOVE 'BBBB' TO X
-           STRING FUNCTION CONTENT-OF ( P )
-                  DELIMITED BY SIZE
-                  INTO X
-           END-STRING
-      *>   Note: result *should* depend on dialect option zero-length literals
-           IF X NOT EQUAL 'BBBB' THEN
-              DISPLAY 'CONTENT-OF unallocated BASED item wrong: "' X '"'
-              END-DISPLAY
-           END-IF
-           IF FUNCTION EXCEPTION-STATUS NOT = "EC-DATA-PTR-NULL" THEN
-              DISPLAY 'missing exception (2)'
-              END-DISPLAY
-           END-IF
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [], [])
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION CURRENCY-SYMBOL])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-FLD     PIC X(8) VALUE SPACES.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION CURRENCY-SYMBOL TO TEST-FLD.
-           DISPLAY "OK" NO ADVANCING
-           END-DISPLAY
-           STOP RUN.
-])
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MODULE-CALLER-ID])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       PROCEDURE        DIVISION.
-           CALL "prog2"
-           END-CALL.
-           STOP RUN.
-])
-
-AT_DATA([prog2.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog2.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       PROCEDURE        DIVISION.
-           DISPLAY FUNCTION MODULE-CALLER-ID NO ADVANCING
-           END-DISPLAY.
-           EXIT PROGRAM.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COMPILE_MODULE prog2.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [prog])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MODULE-DATE])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-DATE    PIC 9(8) VALUE 0.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION MODULE-DATE TO TEST-DATE.
-           IF   TEST-DATE NOT = 0
-             DISPLAY "OK" NO ADVANCING
-             END-DISPLAY
-           END-IF.
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MODULE-FORMATTED-DATE])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-DATE    PIC X(16) VALUE SPACES.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION MODULE-FORMATTED-DATE TO TEST-DATE.
-           IF   TEST-DATE NOT = SPACES
-             DISPLAY "OK" NO ADVANCING
-             END-DISPLAY
-           END-IF.
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MODULE-ID])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       PROCEDURE        DIVISION.
-           DISPLAY FUNCTION MODULE-ID NO ADVANCING
-           END-DISPLAY.
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [prog])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MODULE-PATH])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-PATH    PIC X(16) VALUE SPACES.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION MODULE-PATH TO TEST-PATH.
-           IF   TEST-PATH NOT = SPACES
-             DISPLAY "OK" NO ADVANCING
-             END-DISPLAY
-           END-IF.
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MODULE-SOURCE])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       PROCEDURE        DIVISION.
-           DISPLAY FUNCTION MODULE-SOURCE NO ADVANCING
-           END-DISPLAY.
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [prog.cob])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MODULE-TIME])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-TIME    PIC 9(6) VALUE 0.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION MODULE-TIME TO TEST-TIME.
-           IF   TEST-TIME NOT = 0
-             DISPLAY "OK" NO ADVANCING
-             END-DISPLAY
-           END-IF.
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MONETARY-DECIMAL-POINT])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-FLD     PIC X(8) VALUE SPACES.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION MONETARY-DECIMAL-POINT TO TEST-FLD.
-           DISPLAY "OK" NO ADVANCING
-           END-DISPLAY
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION MONETARY-THOUSANDS-SEPARATOR])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-FLD     PIC X(8) VALUE SPACES.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION MONETARY-THOUSANDS-SEPARATOR TO TEST-FLD.
-           DISPLAY "OK" NO ADVANCING
-           END-DISPLAY
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION NUMERIC-DECIMAL-POINT])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-FLD     PIC X(8) VALUE SPACES.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION NUMERIC-DECIMAL-POINT TO TEST-FLD.
-           DISPLAY "OK" NO ADVANCING
-           END-DISPLAY
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION NUMERIC-THOUSANDS-SEPARATOR])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       DATA             DIVISION.
-       WORKING-STORAGE SECTION.
-       01  TEST-FLD     PIC X(8) VALUE SPACES.
-       PROCEDURE        DIVISION.
-           MOVE FUNCTION NUMERIC-THOUSANDS-SEPARATOR TO TEST-FLD.
-           DISPLAY "OK" NO ADVANCING
-           END-DISPLAY
-           STOP RUN.
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
-
-AT_CLEANUP
-
-
-AT_SETUP([FUNCTION STORED-CHAR-LENGTH])
-AT_KEYWORDS([functions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       DATA             DIVISION.
-       WORKING-STORAGE  SECTION.
-       01  Y   PIC   X(24).
-       01  Z   USAGE BINARY-LONG.
-       PROCEDURE        DIVISION.
-           MOVE "123456789012" TO Y.
-           MOVE FUNCTION STORED-CHAR-LENGTH ( Y ) TO Z.
-           IF Z NOT = 12
-              DISPLAY Z
-              END-DISPLAY
-           END-IF.
-           STOP RUN.
-])
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [], [])
-AT_CLEANUP
-
-
 AT_SETUP([Formatted funcs w/ invalid variable format])
 AT_KEYWORDS([functions FORMATTED-CURRENT-DATE FORMATTED-DATE
 FORMATTED-TIME FORMATTED-DATETIME])
@@ -537,45 +102,6 @@ AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [], [])
 AT_CLEANUP
 
 
-AT_SETUP([FORMATTED-(DATE)TIME with SYSTEM-OFFSET])
-AT_KEYWORDS([functions FORMATTED-TIME FORMATTED-DATETIME extensions])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-
-AT_DATA([prog.cob], [
-       IDENTIFICATION  DIVISION.
-       PROGRAM-ID.     prog.
-       DATA            DIVISION.
-       WORKING-STORAGE SECTION.
-       01  str         PIC X(30).
-       77  val         pic 9(02).
-
-       PROCEDURE DIVISION.
-           MOVE FUNCTION FORMATTED-DATETIME
-                    ("YYYYDDDThhmmss+hhmm", 1, 45296, SYSTEM-OFFSET)
-               TO str
-           MOVE FUNCTION TEST-FORMATTED-DATETIME
-                   ("YYYYDDDThhmmss+hhmm", str) TO val
-           IF val not = 0
-               DISPLAY "Test 1 failed: " str ' - ' val END-DISPLAY
-           END-IF
-
-           MOVE FUNCTION FORMATTED-TIME
-                    ("hhmmss.ssZ", 45296, SYSTEM-OFFSET)
-               TO str
-           MOVE FUNCTION TEST-FORMATTED-DATETIME
-                   ("hhmmss.ssZ", str) TO val
-           IF val not = 0
-               DISPLAY "Test 2 failed: " str ' - ' val END-DISPLAY
-           END-IF
-           .
-])
-
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CHECK([$COBCRUN_DIRECT ./a.out], [0])
-
-AT_CLEANUP
-
-
 AT_SETUP([Intrinsics without FUNCTION keyword (1)])
 AT_KEYWORDS([functions])
 AT_DATA([prog.cob], [
@@ -712,24 +238,3 @@ AT_CHECK([$COBCRUN_DIRECT ./a.out], [0],
 AT_CLEANUP
 
 
-AT_SETUP([v2-bugs functions repository])
-AT_KEYWORDS([v1-bugs functions repository])
-# REPOSITORY FUNCTION clause
-AT_XFAIL_IF(true)
-# FUNCTIONS NOT IMPLEMENTED TODO
-# NOT V1 ISSUE!!
-AT_DATA([prog.cob], [
-       IDENTIFICATION DIVISION.
-       PROGRAM-ID. prog.
-       ENVIRONMENT DIVISION.
-       CONFIGURATION SECTION.
-          SOURCE-COMPUTER a.
-          OBJECT-COMPUTER a.
-          REPOSITORY.
-             FUNCTION ALL INTRINSIC.
-       PROCEDURE DIVISION.
-          DISPLAY "OK".
-])
-AT_CHECK([$COMPILE prog.cob], [0], [], [])
-AT_CLEANUP
-
diff --git a/gcc/cobol/UAT/failsuite.src/syn_move.at b/gcc/cobol/UAT/failsuite.src/syn_move.at
index cc9878d78774..010e2acae0da 100644
--- a/gcc/cobol/UAT/failsuite.src/syn_move.at
+++ b/gcc/cobol/UAT/failsuite.src/syn_move.at
@@ -22,35 +22,3 @@
 
 ## 14.8.24.2 Syntax rules
 
-AT_SETUP([invalid source for MOVE (2)])
-AT_KEYWORDS([move label program-prototype])
-AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
-# cobc is wrong: repo-prog is an error, not warning.  It must have
-# been previously defined, or exist as a program-prototype (which we
-# don't support). gcobol stops compiling instead of continuing on to
-# identify the MOVE errors.
-AT_DATA([prog.cob], [
-       IDENTIFICATION   DIVISION.
-       PROGRAM-ID.      prog.
-       ENVIRONMENT      DIVISION.
-       CONFIGURATION    SECTION.
-       REPOSITORY.
-           PROGRAM repo-prog.
-       DATA             DIVISION.
-       WORKING-STORAGE  SECTION.
-       77 MAIN-VAR      PIC X(3).
-       PROCEDURE        DIVISION.
-       MAIN.
-           MOVE MAIN TO MAIN-VAR.
-           MOVE repo-prog TO MAIN.
-           STOP RUN.
-])
-AT_CHECK([$COMPILE_ONLY prog.cob], [1], [],
-[prog.cob:7: warning: no definition/prototype seen for PROGRAM 'repo-prog'
-prog.cob: in paragraph 'MAIN':
-prog.cob:13: error: 'MAIN' is not a field
-prog.cob:14: error: 'repo-prog' is not a field
-])
-AT_CLEANUP
-
-
diff --git a/gcc/cobol/UAT/skipsuite.at b/gcc/cobol/UAT/skipsuite.at
index 7f90546d28cf..8ec5ef129ae4 100644
--- a/gcc/cobol/UAT/skipsuite.at
+++ b/gcc/cobol/UAT/skipsuite.at
@@ -38,9 +38,9 @@ m4_include([run_accept.at])
 AT_BANNER([FILE])
 m4_include([run_file.at])
 
-# functions  DEFERRED 
-# AT_BANNER([FUNCTIONS])
-# m4_include([functions.at])
+functions  DEFERRED
+AT_BANNER([FUNCTIONS])
+m4_include([run_functions.at])
 
 AT_BANNER([FUNDAMENTAL])
 m4_include([run_fundamental.at])
diff --git a/gcc/cobol/UAT/skipsuite.src/run_functions.at b/gcc/cobol/UAT/skipsuite.src/run_functions.at
new file mode 100644
index 000000000000..3b2cd37ed266
--- /dev/null
+++ b/gcc/cobol/UAT/skipsuite.src/run_functions.at
@@ -0,0 +1,499 @@
+## Copyright (C) 2003-2012, 2014-2020 Free Software Foundation, Inc.
+## Written by Keisuke Nishida, Roger While, Simon Sobisch, Edward Hart
+##
+## This file is part of GnuCOBOL.
+##
+## The GnuCOBOL compiler is free software: you can redistribute it
+## and/or modify it under the terms of the GNU General Public License
+## as published by the Free Software Foundation, either version 3 of the
+## License, or (at your option) any later version.
+##
+## GnuCOBOL is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with GnuCOBOL.  If not, see <https://www.gnu.org/licenses/>.
+
+### GnuCOBOL Test Suite
+
+### ISO+IEC+1989-2002 15 Intrinsic Functions
+### ISO+IEC+1989-2002 9.4 User-Defined Functions
+
+AT_SETUP([FUNCTION CONTENT-LENGTH])
+AT_KEYWORDS([functions length])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       DATA             DIVISION.
+       WORKING-STORAGE  SECTION.
+       01  P            USAGE    POINTER.
+       01  X            PIC      X(4) VALUE Z"ABC".
+       01  TEST-FLD     USAGE    BINARY-LONG.       
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION CONTENT-LENGTH ( P )
+             TO TEST-FLD.
+           IF TEST-FLD NOT = 0
+              DISPLAY 'CONTENT-LENGTH NULL wrong: ' TEST-FLD
+              END-DISPLAY
+           END-IF
+           SET P TO ADDRESS OF X
+           MOVE FUNCTION CONTENT-LENGTH ( P )
+             TO TEST-FLD
+           IF TEST-FLD NOT = 3
+              DISPLAY 'CONTENT-LENGTH z"abc" wrong: ' TEST-FLD
+              END-DISPLAY
+           END-IF
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION CONTENT-OF])
+AT_KEYWORDS([functions POINTER literal BASED ALLOCATE FREE EXCEPTION-STATUS])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       DATA             DIVISION.
+       WORKING-STORAGE  SECTION.
+       01  P   USAGE    POINTER.
+       01  X   PIC      X(4) VALUE Z"ABC".
+       01  B   PIC      X(10) BASED.
+       PROCEDURE        DIVISION.
+           SET P TO ADDRESS OF X
+           IF FUNCTION CONTENT-OF ( P ) NOT EQUAL 'ABC' THEN
+              DISPLAY 'CONTENT-OF(ptr) wrong' END-DISPLAY
+           END-IF
+           IF FUNCTION CONTENT-OF ( P, 2 ) NOT EQUAL 'AB' THEN
+              DISPLAY 'CONTENT-OF(ptr, len) wrong' END-DISPLAY
+           END-IF
+           IF FUNCTION EXCEPTION-STATUS NOT = SPACES THEN
+              DISPLAY 'unexpected exception (1): '
+                       FUNCTION EXCEPTION-STATUS
+              END-DISPLAY
+           END-IF
+           SET  P      TO NULL
+           MOVE 'PPPP' TO X
+           STRING FUNCTION CONTENT-OF ( P )
+                  DELIMITED BY SIZE
+                  INTO X
+           END-STRING
+      *>   Note: result *should* depend on dialect option zero-length literals
+           IF X NOT EQUAL 'PPPP' THEN
+              DISPLAY 'CONTENT-OF empty POINTER wrong: "'" X "'"
+              END-DISPLAY
+           END-IF
+           IF FUNCTION EXCEPTION-STATUS NOT = "EC-DATA-PTR-NULL" THEN
+              DISPLAY 'missing exception (1)'
+              END-DISPLAY
+           END-IF
+           ALLOCATE B INITIALIZED
+           SET  P      TO ADDRESS OF B
+           IF FUNCTION CONTENT-OF ( P, 1 ) NOT EQUAL SPACES THEN
+              DISPLAY 'CONTENT-OF allocated BASED item wrong'
+              END-DISPLAY
+           END-IF
+           IF FUNCTION EXCEPTION-STATUS NOT = SPACES THEN
+              DISPLAY 'unexpected exception (2): '
+                       FUNCTION EXCEPTION-STATUS
+              END-DISPLAY
+           END-IF
+           FREE B
+           SET  P      TO ADDRESS OF B
+           MOVE 'BBBB' TO X
+           STRING FUNCTION CONTENT-OF ( P )
+                  DELIMITED BY SIZE
+                  INTO X
+           END-STRING
+      *>   Note: result *should* depend on dialect option zero-length literals
+           IF X NOT EQUAL 'BBBB' THEN
+              DISPLAY 'CONTENT-OF unallocated BASED item wrong: "' X '"'
+              END-DISPLAY
+           END-IF
+           IF FUNCTION EXCEPTION-STATUS NOT = "EC-DATA-PTR-NULL" THEN
+              DISPLAY 'missing exception (2)'
+              END-DISPLAY
+           END-IF
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [], [])
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION CURRENCY-SYMBOL])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-FLD     PIC X(8) VALUE SPACES.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION CURRENCY-SYMBOL TO TEST-FLD.
+           DISPLAY "OK" NO ADVANCING
+           END-DISPLAY
+           STOP RUN.
+])
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MODULE-CALLER-ID])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       PROCEDURE        DIVISION.
+           CALL "prog2"
+           END-CALL.
+           STOP RUN.
+])
+
+AT_DATA([prog2.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog2.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       PROCEDURE        DIVISION.
+           DISPLAY FUNCTION MODULE-CALLER-ID NO ADVANCING
+           END-DISPLAY.
+           EXIT PROGRAM.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COMPILE_MODULE prog2.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [prog])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MODULE-DATE])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-DATE    PIC 9(8) VALUE 0.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION MODULE-DATE TO TEST-DATE.
+           IF   TEST-DATE NOT = 0
+             DISPLAY "OK" NO ADVANCING
+             END-DISPLAY
+           END-IF.
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MODULE-FORMATTED-DATE])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-DATE    PIC X(16) VALUE SPACES.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION MODULE-FORMATTED-DATE TO TEST-DATE.
+           IF   TEST-DATE NOT = SPACES
+             DISPLAY "OK" NO ADVANCING
+             END-DISPLAY
+           END-IF.
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MODULE-ID])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       PROCEDURE        DIVISION.
+           DISPLAY FUNCTION MODULE-ID NO ADVANCING
+           END-DISPLAY.
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [prog])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MODULE-PATH])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-PATH    PIC X(16) VALUE SPACES.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION MODULE-PATH TO TEST-PATH.
+           IF   TEST-PATH NOT = SPACES
+             DISPLAY "OK" NO ADVANCING
+             END-DISPLAY
+           END-IF.
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MODULE-SOURCE])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       PROCEDURE        DIVISION.
+           DISPLAY FUNCTION MODULE-SOURCE NO ADVANCING
+           END-DISPLAY.
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [prog.cob])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MODULE-TIME])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-TIME    PIC 9(6) VALUE 0.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION MODULE-TIME TO TEST-TIME.
+           IF   TEST-TIME NOT = 0
+             DISPLAY "OK" NO ADVANCING
+             END-DISPLAY
+           END-IF.
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MONETARY-DECIMAL-POINT])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-FLD     PIC X(8) VALUE SPACES.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION MONETARY-DECIMAL-POINT TO TEST-FLD.
+           DISPLAY "OK" NO ADVANCING
+           END-DISPLAY
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION MONETARY-THOUSANDS-SEPARATOR])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-FLD     PIC X(8) VALUE SPACES.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION MONETARY-THOUSANDS-SEPARATOR TO TEST-FLD.
+           DISPLAY "OK" NO ADVANCING
+           END-DISPLAY
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION NUMERIC-DECIMAL-POINT])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-FLD     PIC X(8) VALUE SPACES.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION NUMERIC-DECIMAL-POINT TO TEST-FLD.
+           DISPLAY "OK" NO ADVANCING
+           END-DISPLAY
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION NUMERIC-THOUSANDS-SEPARATOR])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       DATA             DIVISION.
+       WORKING-STORAGE SECTION.
+       01  TEST-FLD     PIC X(8) VALUE SPACES.
+       PROCEDURE        DIVISION.
+           MOVE FUNCTION NUMERIC-THOUSANDS-SEPARATOR TO TEST-FLD.
+           DISPLAY "OK" NO ADVANCING
+           END-DISPLAY
+           STOP RUN.
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [OK], [])
+
+AT_CLEANUP
+
+
+AT_SETUP([FUNCTION STORED-CHAR-LENGTH])
+AT_KEYWORDS([functions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       DATA             DIVISION.
+       WORKING-STORAGE  SECTION.
+       01  Y   PIC   X(24).
+       01  Z   USAGE BINARY-LONG.
+       PROCEDURE        DIVISION.
+           MOVE "123456789012" TO Y.
+           MOVE FUNCTION STORED-CHAR-LENGTH ( Y ) TO Z.
+           IF Z NOT = 12
+              DISPLAY Z
+              END-DISPLAY
+           END-IF.
+           STOP RUN.
+])
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0], [], [])
+AT_CLEANUP
+
+
+
+
+AT_SETUP([FORMATTED-(DATE)TIME with SYSTEM-OFFSET])
+AT_KEYWORDS([functions FORMATTED-TIME FORMATTED-DATETIME extensions])
+AT_XFAIL_IF([test "$COB_DIALECT" != "gnu"])
+
+AT_DATA([prog.cob], [
+       IDENTIFICATION  DIVISION.
+       PROGRAM-ID.     prog.
+       DATA            DIVISION.
+       WORKING-STORAGE SECTION.
+       01  str         PIC X(30).
+       77  val         pic 9(02).
+
+       PROCEDURE DIVISION.
+           MOVE FUNCTION FORMATTED-DATETIME
+                    ("YYYYDDDThhmmss+hhmm", 1, 45296, SYSTEM-OFFSET)
+               TO str
+           MOVE FUNCTION TEST-FORMATTED-DATETIME
+                   ("YYYYDDDThhmmss+hhmm", str) TO val
+           IF val not = 0
+               DISPLAY "Test 1 failed: " str ' - ' val END-DISPLAY
+           END-IF
+
+           MOVE FUNCTION FORMATTED-TIME
+                    ("hhmmss.ssZ", 45296, SYSTEM-OFFSET)
+               TO str
+           MOVE FUNCTION TEST-FORMATTED-DATETIME
+                   ("hhmmss.ssZ", str) TO val
+           IF val not = 0
+               DISPLAY "Test 2 failed: " str ' - ' val END-DISPLAY
+           END-IF
+           .
+])
+
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([$COBCRUN_DIRECT ./a.out], [0])
+
+AT_CLEANUP
+
+
diff --git a/gcc/cobol/UAT/testsuite.src/run_functions.at b/gcc/cobol/UAT/testsuite.src/run_functions.at
index bff4e719f7fb..5b7c38621c53 100644
--- a/gcc/cobol/UAT/testsuite.src/run_functions.at
+++ b/gcc/cobol/UAT/testsuite.src/run_functions.at
@@ -3913,3 +3913,22 @@ B The function returns 005
 ], [])
 AT_CLEANUP
 
+AT_SETUP([Repository functions clause])
+AT_KEYWORDS([functions repository])
+AT_DATA([prog.cob], [
+       IDENTIFICATION DIVISION.
+       PROGRAM-ID. prog.
+       ENVIRONMENT DIVISION.
+       CONFIGURATION SECTION.
+          SOURCE-COMPUTER. a.
+          OBJECT-COMPUTER. a.
+          REPOSITORY.
+             FUNCTION ALL INTRINSIC.
+       PROCEDURE DIVISION.
+          DISPLAY "OK".
+])
+AT_CHECK([$COMPILE prog.cob], [0], [], [])
+AT_CHECK([./a.out], [0], [OK
+], [])
+AT_CLEANUP
+
diff --git a/gcc/cobol/UAT/testsuite.src/syn_move.at b/gcc/cobol/UAT/testsuite.src/syn_move.at
index 7bd6a7815f64..962bddfc2cee 100644
--- a/gcc/cobol/UAT/testsuite.src/syn_move.at
+++ b/gcc/cobol/UAT/testsuite.src/syn_move.at
@@ -1038,6 +1038,7 @@ AT_DATA([prog.cob], [
            STOP RUN.
 ])
 
+
 AT_CHECK([$COMPILE_ONLY -dialect mf prog.cob], [1], [],
 [prog.cob:15: syntax error: symbol 'MAIN' not found
 prog.cob:15: error: invalid MOVE receiving operand
@@ -1053,6 +1054,33 @@ cobol1: error: failed compiling prog.cob
 AT_CLEANUP
 
 
+AT_SETUP([invalid source for MOVE (2)])
+AT_KEYWORDS([move label program-prototype])
+# cobc is wrong: repo-prog is an error, not warning.  It must have
+# been previously defined, or exist as a program-prototype (which we
+# don't support). gcobol stops compiling instead of continuing on to
+# identify the MOVE errors.
+AT_DATA([prog.cob], [       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       CONFIGURATION    SECTION.
+       REPOSITORY.
+           PROGRAM repo-prog.
+       DATA             DIVISION.
+       WORKING-STORAGE  SECTION.
+       77 MAIN-VAR      PIC X(3).
+       PROCEDURE        DIVISION.
+       MAIN.
+           MOVE MAIN TO MAIN-VAR.
+           MOVE repo-prog TO MAIN.
+           STOP RUN.
+])
+AT_CHECK([$COMPILE_ONLY prog.cob], [1], [],
+[prog.cob:6: error: 'repo-prog' does not name an earlier program
+cobol1: error: failed compiling prog.cob
+])
+AT_CLEANUP
+
 AT_SETUP([SET error])
 AT_KEYWORDS([move SET-MOVE])
 AT_DATA([prog.cob], [
diff --git a/gcc/cobol/failures/playpen/playpen.cbl b/gcc/cobol/failures/playpen/playpen.cbl
index 6eee55391a80..2104a80d8812 100644
--- a/gcc/cobol/failures/playpen/playpen.cbl
+++ b/gcc/cobol/failures/playpen/playpen.cbl
@@ -1,15 +1,14 @@
-        IDENTIFICATION   DIVISION.
-        PROGRAM-ID.      callee.
-        DATA             DIVISION.
-        WORKING-STORAGE    SECTION.
-        01 V123  PIC 999 VALUE 123.
-        01 VALB  PIC 999 BASED.
-        01 VALB2  PIC 999 BASED.
-        01 VALP         POINTER.
-        01 VALP2         POINTER.
-        PROCEDURE        DIVISION.
-            set VALP VALP2 to address of V123.
-            set ADDRESS OF VALB ADDRESS OF VALB2  TO VALP.
-            display VALB.
-            goback.
-            end PROGRAM callee.
+       IDENTIFICATION   DIVISION.
+       PROGRAM-ID.      prog.
+       ENVIRONMENT      DIVISION.
+       CONFIGURATION    SECTION.
+       REPOSITORY.
+           PROGRAM repo-prog.
+       DATA             DIVISION.
+       WORKING-STORAGE  SECTION.
+       77 MAIN-VAR      PIC X(3).
+       PROCEDURE        DIVISION.
+       MAIN.
+           MOVE MAIN TO MAIN-VAR.
+           MOVE repo-prog TO MAIN.
+           STOP RUN.
-- 
GitLab