GENERIC
C : INTEGER;
PROCEDURE C23006G_PROC (X : OUT INTEGER);
PROCEDURE C23006G_PROC (X : OUT INTEGER) IS
BEGIN
X := C;
END C23006G_PROC;
GENERIC
C : INTEGER;
FUNCTION C23006G_FUNC RETURN INTEGER;
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
FUNCTION C23006G_FUNC RETURN INTEGER IS
BEGIN
RETURN IDENT_INT(C);
END C23006G_FUNC;
WITH C23006G_PROC;
PRAGMA ELABORATE (C23006G_PROC);
PROCEDURE C23006G_INSTP IS NEW C23006G_PROC (1);
WITH REPORT; USE REPORT;
WITH C23006G_PROC;
PRAGMA ELABORATE (REPORT, C23006G_PROC);
PROCEDURE C23006GINSTP IS NEW C23006G_PROC (IDENT_INT(2));
WITH C23006G_FUNC;
PRAGMA ELABORATE (C23006G_FUNC);
FUNCTION C23006G_INSTF IS NEW C23006G_FUNC (3);
WITH C23006G_FUNC;
PRAGMA ELABORATE (C23006G_FUNC);
FUNCTION C23006GINSTF IS NEW C23006G_FUNC (4);
WITH C23006G_INSTP, C23006GINSTP, C23006G_INSTF, C23006GINSTF;
WITH REPORT; USE REPORT;
PROCEDURE C23006G IS
X1, X2 : INTEGER;
BEGIN
TEST ("C23006G", "CHECK THAT UNDERSCORES ARE SIGNFICANT IN NAMES "&
"USED FOR A LIBRARY SUBPROGRAM INSTANTIATION");
C23006G_INSTP (X1);
C23006GINSTP (X2);
IF X1 + IDENT_INT(1) /= X2 THEN
FAILED ("INCORRECT PROCEDURE IDENTIFICATION");
END IF;
IF C23006G_INSTF + IDENT_INT(1) /= C23006GINSTF THEN
FAILED ("INCORRECT FUNCTION IDENTIFICATION");
END IF;
RESULT;
END C23006G;