diff --git a/HACKING b/HACKING index c9ad4cc49..341b97100 100644 --- a/HACKING +++ b/HACKING @@ -109,3 +109,12 @@ There should be no difference shown as long as the "old version" passed the same tests as the new version - given the example above: there was no support for REPORT WRITER in 2.2 so there would be an expected failure of the RW tests. + +For debugging the AST, you may specify --enable-dump-ast at the +configure step. In such a case, new options -fdump-ast= and +-fdump-ast-flags= will become available to print the AST +generated for a given file in a file. This option is implemented using +an automatically generated printer cobc/dump_ast_gen.c, that is +generated by ctypes-gen (https://github.com/OCamlPro/ctypes-gen). If +you don't have the tool, you may just modify the file and wait for +somebody else to regenerate it at some point. diff --git a/build_windows/ocide/cobc.exe.cpj b/build_windows/ocide/cobc.exe.cpj index 163c65d21..017dfa65e 100644 --- a/build_windows/ocide/cobc.exe.cpj +++ b/build_windows/ocide/cobc.exe.cpj @@ -41,6 +41,7 @@ + @@ -89,6 +90,7 @@ + ` diff --git a/build_windows/vs2005/cobc.vcproj b/build_windows/vs2005/cobc.vcproj index d67c9bf13..7fcd894c3 100644 --- a/build_windows/vs2005/cobc.vcproj +++ b/build_windows/vs2005/cobc.vcproj @@ -332,6 +332,10 @@ RelativePath="..\..\cobc\typeck.c" > + + + + + + + + + @@ -284,6 +285,7 @@ + @@ -354,4 +356,4 @@ - \ No newline at end of file + diff --git a/build_windows/vs2010/cobc.vcxproj.filters b/build_windows/vs2010/cobc.vcxproj.filters index eb5698f15..f69334613 100644 --- a/build_windows/vs2010/cobc.vcxproj.filters +++ b/build_windows/vs2010/cobc.vcxproj.filters @@ -63,6 +63,9 @@ Source Files + + Source Files + Auto Generated Files\Source Files @@ -92,6 +95,9 @@ Header Files + + Header Files + Header Files @@ -277,4 +283,4 @@ Source Files - \ No newline at end of file + diff --git a/build_windows/vs2012/cobc.vcxproj b/build_windows/vs2012/cobc.vcxproj index 5c59d729e..e43858671 100644 --- a/build_windows/vs2012/cobc.vcxproj +++ b/build_windows/vs2012/cobc.vcxproj @@ -201,6 +201,7 @@ + @@ -288,6 +289,7 @@ + @@ -358,4 +360,4 @@ - \ No newline at end of file + diff --git a/build_windows/vs2012/cobc.vcxproj.filters b/build_windows/vs2012/cobc.vcxproj.filters index eb5698f15..f69334613 100644 --- a/build_windows/vs2012/cobc.vcxproj.filters +++ b/build_windows/vs2012/cobc.vcxproj.filters @@ -63,6 +63,9 @@ Source Files + + Source Files + Auto Generated Files\Source Files @@ -92,6 +95,9 @@ Header Files + + Header Files + Header Files @@ -277,4 +283,4 @@ Source Files - \ No newline at end of file + diff --git a/build_windows/vs2013/cobc.vcxproj b/build_windows/vs2013/cobc.vcxproj index 27775f3b3..bfec1a91f 100644 --- a/build_windows/vs2013/cobc.vcxproj +++ b/build_windows/vs2013/cobc.vcxproj @@ -203,6 +203,7 @@ + @@ -290,6 +291,7 @@ + @@ -360,4 +362,4 @@ - \ No newline at end of file + diff --git a/build_windows/vs2013/cobc.vcxproj.filters b/build_windows/vs2013/cobc.vcxproj.filters index eb5698f15..f69334613 100644 --- a/build_windows/vs2013/cobc.vcxproj.filters +++ b/build_windows/vs2013/cobc.vcxproj.filters @@ -63,6 +63,9 @@ Source Files + + Source Files + Auto Generated Files\Source Files @@ -92,6 +95,9 @@ Header Files + + Header Files + Header Files @@ -277,4 +283,4 @@ Source Files - \ No newline at end of file + diff --git a/build_windows/vs2015/cobc.vcxproj b/build_windows/vs2015/cobc.vcxproj index 00a16c532..08f6b2e10 100644 --- a/build_windows/vs2015/cobc.vcxproj +++ b/build_windows/vs2015/cobc.vcxproj @@ -201,6 +201,7 @@ + @@ -288,6 +289,7 @@ + @@ -358,4 +360,4 @@ - \ No newline at end of file + diff --git a/build_windows/vs2015/cobc.vcxproj.filters b/build_windows/vs2015/cobc.vcxproj.filters index dbfe80c35..3d260c433 100644 --- a/build_windows/vs2015/cobc.vcxproj.filters +++ b/build_windows/vs2015/cobc.vcxproj.filters @@ -63,6 +63,9 @@ Source Files + + Source Files + Auto Generated Files\Source Files @@ -92,6 +95,9 @@ Header Files + + Header Files + Header Files @@ -277,4 +283,4 @@ Source Files - \ No newline at end of file + diff --git a/build_windows/vs2017/cobc.vcxproj b/build_windows/vs2017/cobc.vcxproj index 6d06caf52..cdb6445e4 100644 --- a/build_windows/vs2017/cobc.vcxproj +++ b/build_windows/vs2017/cobc.vcxproj @@ -203,6 +203,7 @@ + @@ -290,6 +291,7 @@ + @@ -360,4 +362,4 @@ - \ No newline at end of file + diff --git a/build_windows/vs2017/cobc.vcxproj.filters b/build_windows/vs2017/cobc.vcxproj.filters index dbfe80c35..3d260c433 100644 --- a/build_windows/vs2017/cobc.vcxproj.filters +++ b/build_windows/vs2017/cobc.vcxproj.filters @@ -63,6 +63,9 @@ Source Files + + Source Files + Auto Generated Files\Source Files @@ -92,6 +95,9 @@ Header Files + + Header Files + Header Files @@ -277,4 +283,4 @@ Source Files - \ No newline at end of file + diff --git a/build_windows/vs2019/cobc.vcxproj b/build_windows/vs2019/cobc.vcxproj index 2d392a65e..7e321af01 100644 --- a/build_windows/vs2019/cobc.vcxproj +++ b/build_windows/vs2019/cobc.vcxproj @@ -203,6 +203,7 @@ + @@ -290,6 +291,7 @@ + @@ -360,4 +362,4 @@ - \ No newline at end of file + diff --git a/build_windows/vs2019/cobc.vcxproj.filters b/build_windows/vs2019/cobc.vcxproj.filters index dbfe80c35..3d260c433 100644 --- a/build_windows/vs2019/cobc.vcxproj.filters +++ b/build_windows/vs2019/cobc.vcxproj.filters @@ -63,6 +63,9 @@ Source Files + + Source Files + Auto Generated Files\Source Files @@ -92,6 +95,9 @@ Header Files + + Header Files + Header Files @@ -277,4 +283,4 @@ Source Files - \ No newline at end of file + diff --git a/cobc/ChangeLog.branch b/cobc/ChangeLog.branch new file mode 100644 index 000000000..3765d53dc --- /dev/null +++ b/cobc/ChangeLog.branch @@ -0,0 +1,8 @@ + + * Makefile.am, cobc.c, dump_ast.c: new options to dump the AST in + text format: --dump-ast=, and + --dump-ast-flags=. Format is not standard for now, because + it is only for debugging the AST. Flags are prefixed with '+/-' + for enable/disable, 'i' for indentation, 'z' for zero/null + fields. Env variables COB_DUMP_AST and COB_DUMP_AST_FLAGS can also + be used to set these flags. diff --git a/cobc/Makefile.am b/cobc/Makefile.am index 444987fc6..1782899f7 100644 --- a/cobc/Makefile.am +++ b/cobc/Makefile.am @@ -23,7 +23,7 @@ bin_PROGRAMS = cobc cobc_SOURCES = cobc.c cobc.h ppparse.y pplex.c parser.y scanner.c config.c \ reserved.c error.c tree.c tree.h field.c typeck.c codegen.c help.c \ config.def flag.def warning.def codeoptim.def ppparse.def \ - codeoptim.c replace.c + codeoptim.c replace.c dump_ast.c #cobc_SOURCES = cobc.c cobc.h ppparse.y pplex.l parser.y scanner.l config.c @@ -40,7 +40,7 @@ COBC = cobc$(EXEEXT) # sources that needs to be built *before* any other file # note: we actually want their header files... BUILT_SOURCES = ppparse.c parser.c -EXTRA_DIST = pplex.l scanner.l ppparse.h parser.h +EXTRA_DIST = pplex.l scanner.l ppparse.h parser.h dump_ast_gen.c MAINTAINERCLEANFILES = pplex.c scanner.c ppparse.h parser.h cobc.1 CLEANFILES = parser.output ppparse.output @@ -67,3 +67,8 @@ endif .l.c: LC_CTYPE=C $(LEX) -o$@ $< + +.PHONY: update-dump-tree + +update-dump-tree: + ctypes-gen --gnucobol -I $(top_srcdir)/cobc -I $(top_srcdir)/lib > $(top_srcdir)/cobc/dump_ast_gen.c diff --git a/cobc/cobc.c b/cobc/cobc.c index de9c1d6f1..86cb3038f 100644 --- a/cobc/cobc.c +++ b/cobc/cobc.c @@ -116,6 +116,8 @@ enum compile_level { #define CB_FLAG_GETOPT_DEPEND_ADD_PHONY 24 #define CB_FLAG_GETOPT_DEPEND_KEEP_MISSING 25 #define CB_FLAG_GETOPT_DEPEND_ON_THE_SIDE 26 +#define CB_FLAG_DUMP_AST 27 +#define CB_FLAG_DUMP_AST_FLAGS 28 /* Info display limits */ #define CB_IMSG_SIZE 24 @@ -463,6 +465,8 @@ static int save_all_src = 0; static signed int save_c_src = 0; static signed int verbose_output = 0; static int cb_coverage_enabled = 0; +static char* dump_ast_to_file = NULL; +static char* dump_ast_flags = NULL; static int cob_optimize = 0; @@ -3773,6 +3777,19 @@ process_command_line (const int argc, char **argv) break; case CB_FLAG_GETOPT_DEPEND_OUTPUT_FILE: /* -MF */ cb_depend_filename = cobc_strdup(cob_optarg); + case CB_FLAG_DUMP_AST: + if (dump_ast_to_file) + cobc_main_free (dump_ast_to_file); + dump_ast_to_file = cobc_main_strdup (cob_optarg); + break; + case CB_FLAG_DUMP_AST_FLAGS: + if (dump_ast_flags){ + char* old = dump_ast_flags; + dump_ast_flags = cobc_main_stradd_dup(dump_ast_flags, cob_optarg); + cobc_main_free (old); + } else { + dump_ast_flags = cobc_main_strdup (cob_optarg); + } break; case 'I': @@ -8303,6 +8320,9 @@ process_translate (struct filename *fn) } } + if (dump_ast_to_file) + cb_dump_ast_to_file (current_program, dump_ast_to_file, dump_ast_flags); + /* Translate to C */ codegen (current_program, fn->translate); diff --git a/cobc/dump_ast.c b/cobc/dump_ast.c new file mode 100644 index 000000000..d5d2e6484 --- /dev/null +++ b/cobc/dump_ast.c @@ -0,0 +1,258 @@ +/* + Copyright (C) 2023-2024 Free Software Foundation, Inc. + Written by Fabrice Le Fessant + + 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 . +*/ + + +#include "config.h" + +#include +#include +#include +#include +#ifdef HAVE_STRINGS_H +#include +#endif +#include +#include +#include + +#include "cobc.h" +#include "../libcob/coblocal.h" +#include "tree.h" + +/* field descriptor of tree dump */ +static FILE* fd = NULL; + +/* flag: whether we should indent the file. Enabled by default */ +static int print_tree_with_indent = 1; + +/* flag: whether we print fields that are 0 or NULL. Disabled by default */ +static int print_zero_fields = 0; + +static const char * get_indent (int indent); +static void print_struct_cb_tree_common (int indent, int ptr_uid, struct cb_tree_common *ptr); +static void print_struct_cb_tree_common_ptr (int indent, cb_tree cb); +static void print_int_array (int indent, int n, int * tab); + +#define PRINT_NULL(indent,ty) \ + fprintf (fd, "NULL") +#define PRINT_ENUM(indent,ty,s) \ + fprintf (fd, "%s", s) +#define PRINT_ENUM_UNKNOWN(indent,ty,s) \ + fprintf (fd, "Unknown enum %d", s) + +#define PRINT_STRUCT_KNOWN(indent, ty, ptr_uid) \ + fprintf (fd, "ALREADY_SEEN(%s --> MB%03d)", ty, ptr_uid) +#define PRINT_STRUCT_TY(s) \ + const char* ty = s +#define PRINT_STRUCT_PTR_TY(s) \ + const char* ty = s +#define PRINT_STRUCT_BEGIN(indent,ty, ptr_uid) \ + if (ptr_uid != 0) \ + fprintf (fd, "// MEMORY_BLOCK(MB%03d):\n", ptr_uid); \ + else \ + fprintf (fd, "// INLINE_BLOCK:\n"); \ + fprintf (fd, "%s{ //[%s]\n", get_indent (indent), ty) +#define PRINT_STRUCT_END(indent,ty) \ + fprintf (fd, "%s} //[%s]", get_indent (indent), ty) +#define PRINT_VOID(indent) \ + fprintf(fd, "") +#define PRINT_FUNCTION(indent) \ + fprintf(fd, "") +#define PRINT_STRUCT_FIELD_BEGIN(indent,name) \ + fprintf (fd, "%s " #name ": ", get_indent (indent) ) +#define PRINT_STRUCT_FIELD_END(indent) \ + fprintf (fd, ";\n") +#define PRINT_STRUCT_FIELD_END(indent) \ + fprintf (fd, ";\n") + + +#define PRINT_ARRAY_BEGIN(indent) \ + fprintf (fd, "[\n%s", get_indent (indent)) +#define PRINT_ARRAY_SEP(indent) \ + fprintf (fd, ",\n%s", get_indent (indent)) +#define PRINT_ARRAY_END(indent) \ + fprintf (fd, "]") + + + +#define PRINT_UNKNOWN_SELECTOR(indent,ty, tag) \ + fprintf (fd, "%s UNKNOWN %s(%d)\n", get_indent(indent), ty, tag); + + +static void print_size_t (int indent, size_t x) +{ + fprintf (fd, "%ld", x); +} + +static void print_int (int indent, int x) +{ + fprintf (fd, "%d", x); +} + +static void print_long_long_ptr0 (int indent, long long x) +{ + fprintf (fd, "%lld", x); +} + +static void print_char (int indent, char x) +{ + fprintf (fd, "'%c'(%d)", x, x); +} + +static void print_uchar (int indent, unsigned char x) +{ + fprintf (fd, "%d", x); +} + +static void print_uint (int indent, unsigned int x) +{ + fprintf (fd, "%d", x); +} + +static void print_char_ptr (int indent, const char* x) +{ + if (x == NULL){ + PRINT_NULL(indent,ty); + } else { + fprintf (fd, "\"%s\"", x); + } +} + +static void print_uchar_ptr (int indent, const unsigned char* x) +{ + if (x == NULL){ + PRINT_NULL(indent,ty); + } else { + fprintf (fd, "\"%s\"", x); + } +} + +static void print_FILE_ptr (int indent, const FILE* x) +{ + if (x == NULL){ + PRINT_NULL(indent,ty); + } else { + fprintf (fd, ""); + } +} + +static void print_int_ptr (int indent, const int* x) +{ + if (x == NULL){ + PRINT_NULL(indent,ty); + } else { + fprintf (fd, ""); + } +} + +static void print_int_array (int indent, int n, int *x) +{ + if (x == NULL){ + PRINT_NULL(indent,ty); + } else { + fprintf (fd, ""); + } +} + +static void print_cb_word_ptr2 (int indent, struct cb_word** x) +{ + if (x == NULL){ + PRINT_NULL(indent,ty); + } else { + fprintf (fd, ""); + } +} + +static void print_cb_field_ptr2 (int indent, struct cb_field** x) +{ + if (x == NULL){ + PRINT_NULL(indent,ty); + } else { + fprintf (fd, ""); + } +} + + +#include "dump_ast_gen.c" + +static void print_struct_cb_tree_common (int indent, int ptr_uid, struct cb_tree_common *ptr){ + + print_enum_cb_tag (indent+2, ptr->tag); + fprintf (fd, "/"); + print_enum_cb_category (indent+2, ptr->category); + fprintf (fd, "@"); + print_char_ptr (indent+2, ptr->source_file); + fprintf (fd, ":"); + print_int (indent+2, ptr->source_line); +} + +static +void set_flags (const char* flags) +{ + int sign = 1; + int i; + int len = strlen(flags); + + for(i=0; i< len; i++){ + switch(flags[i]){ + case '+': sign = 1; break; + case '-': sign = 0; break; + case 'i': + print_tree_with_indent = sign; + break; + case 'z': + print_zero_fields = sign; + break; + case 'A': + print_zero_fields = sign; + print_tree_with_indent = sign ; + break; + default: + cobc_err_exit ("-fdump-ast-flags: unknown flag '%c', expecting '+-cltpinA'", flags[i]); + } + } +} + +void cb_dump_ast_to_file (struct cb_program *prog, const char *filename, const char* flags) +{ + int close_fd = 1; + + if (flags) set_flags (flags); + + if (!strcmp(filename, COB_DASH)){ + close_fd = 0; + fd = stdout; + } else { + struct stat st; + if (!stat (filename, &st)) unlink(filename); + fd = fopen (filename, "w"); + } + if (!fd){ + cb_perror (0, "cobc: %s: %s", filename, cb_get_strerror ()); + return ; + } + + cb_print_tree ( (cb_tree) prog); + + if (close_fd) { + fclose (fd); + } +} + diff --git a/cobc/dump_ast_gen.c b/cobc/dump_ast_gen.c new file mode 100644 index 000000000..3f0132fa6 --- /dev/null +++ b/cobc/dump_ast_gen.c @@ -0,0 +1,10610 @@ +/* Generated by ctypes-gen */ + + +static const char * get_indent (int indent){ + static int current_indent = 0; + static char* indent_string = NULL; + static int current_size ; + if (indent == 0 || !print_tree_with_indent) return ""; + + if (indent >= current_size){ + int i; + if (indent_string != NULL) free (indent_string); + current_size = indent + 100 ; + indent_string = (char*) malloc ( current_size ); + current_indent = current_size-1; + for (i=0; i> 16 )) +#define MODULO2(v, size) ( (v) & ((size)-1) ) + +/* returns uid, < 0 if ptr is already known, >0 if ptr was added */ +static int is_known_ptr (void *ptr) +{ + int pos ; + pos = MODULO2( HASH_PTR(ptr), ptr_table_size) ; + while ( ptr_table[pos] != NULL ){ + if ( ptr_table[pos] == ptr ) return -num_table[pos] ; + pos = MODULO2( pos+1, ptr_table_size ) ; + } + + /* ptr not found. Remember it */ + ptr_table[pos] = ptr; + ptr_table_used++; + num_table[pos] = ptr_table_used; + + if (ptr_table_used*2 > ptr_table_size) { + void **new_ptr_table ; + int *new_num_table ; + + /* realloc table to keep vaccum property */ + pos = ptr_table_size ; + ptr_table_size *= 4; + new_ptr_table = (void**) calloc (ptr_table_size, sizeof(void*)) ; + new_num_table = (int*) calloc (ptr_table_size, sizeof(int)) ; + while (pos>0){ + int new_pos ; + pos--; + ptr = ptr_table[pos]; + new_pos = MODULO2( HASH_PTR( ptr ) , ptr_table_size ) ; + while ( new_ptr_table[new_pos] != NULL ){ + new_pos = MODULO2( new_pos+1, ptr_table_size ); + } + new_ptr_table[new_pos] = ptr ; + new_num_table[new_pos] = num_table[pos] ; + } + free (ptr_table); + ptr_table = new_ptr_table; + free (num_table); + num_table = new_num_table; + } + + return ptr_table_used; +} + + +static void print_enum_cb_tag (int indent, enum cb_tag x){ + const char *s = NULL; + switch (x){ + + case CB_TAG_CONST: s = "CB_TAG_CONST"; break; + + case CB_TAG_INTEGER: s = "CB_TAG_INTEGER"; break; + + case CB_TAG_STRING: s = "CB_TAG_STRING"; break; + + case CB_TAG_ALPHABET_NAME: s = "CB_TAG_ALPHABET_NAME"; break; + + case CB_TAG_CLASS_NAME: s = "CB_TAG_CLASS_NAME"; break; + + case CB_TAG_LOCALE_NAME: s = "CB_TAG_LOCALE_NAME"; break; + + case CB_TAG_SYSTEM_NAME: s = "CB_TAG_SYSTEM_NAME"; break; + + case CB_TAG_SCHEMA_NAME: s = "CB_TAG_SCHEMA_NAME"; break; + + case CB_TAG_LITERAL: s = "CB_TAG_LITERAL"; break; + + case CB_TAG_DECIMAL: s = "CB_TAG_DECIMAL"; break; + + case CB_TAG_FIELD: s = "CB_TAG_FIELD"; break; + + case CB_TAG_FILE: s = "CB_TAG_FILE"; break; + + case CB_TAG_REPORT: s = "CB_TAG_REPORT"; break; + + case CB_TAG_CD: s = "CB_TAG_CD"; break; + + case CB_TAG_REFERENCE: s = "CB_TAG_REFERENCE"; break; + + case CB_TAG_BINARY_OP: s = "CB_TAG_BINARY_OP"; break; + + case CB_TAG_FUNCALL: s = "CB_TAG_FUNCALL"; break; + + case CB_TAG_CAST: s = "CB_TAG_CAST"; break; + + case CB_TAG_INTRINSIC: s = "CB_TAG_INTRINSIC"; break; + + case CB_TAG_LABEL: s = "CB_TAG_LABEL"; break; + + case CB_TAG_ASSIGN: s = "CB_TAG_ASSIGN"; break; + + case CB_TAG_INITIALIZE: s = "CB_TAG_INITIALIZE"; break; + + case CB_TAG_SEARCH: s = "CB_TAG_SEARCH"; break; + + case CB_TAG_CALL: s = "CB_TAG_CALL"; break; + + case CB_TAG_GOTO: s = "CB_TAG_GOTO"; break; + + case CB_TAG_IF: s = "CB_TAG_IF"; break; + + case CB_TAG_PERFORM: s = "CB_TAG_PERFORM"; break; + + case CB_TAG_STATEMENT: s = "CB_TAG_STATEMENT"; break; + + case CB_TAG_CONTINUE: s = "CB_TAG_CONTINUE"; break; + + case CB_TAG_CANCEL: s = "CB_TAG_CANCEL"; break; + + case CB_TAG_ALTER: s = "CB_TAG_ALTER"; break; + + case CB_TAG_SET_ATTR: s = "CB_TAG_SET_ATTR"; break; + + case CB_TAG_XML_PARSE: s = "CB_TAG_XML_PARSE"; break; + + case CB_TAG_PERFORM_VARYING: s = "CB_TAG_PERFORM_VARYING"; break; + + case CB_TAG_PICTURE: s = "CB_TAG_PICTURE"; break; + + case CB_TAG_LIST: s = "CB_TAG_LIST"; break; + + case CB_TAG_DIRECT: s = "CB_TAG_DIRECT"; break; + + case CB_TAG_DEBUG: s = "CB_TAG_DEBUG"; break; + + case CB_TAG_DEBUG_CALL: s = "CB_TAG_DEBUG_CALL"; break; + + case CB_TAG_PROGRAM: s = "CB_TAG_PROGRAM"; break; + + case CB_TAG_PROTOTYPE: s = "CB_TAG_PROTOTYPE"; break; + + case CB_TAG_DECIMAL_LITERAL: s = "CB_TAG_DECIMAL_LITERAL"; break; + + case CB_TAG_REPORT_LINE: s = "CB_TAG_REPORT_LINE"; break; + + case CB_TAG_ML_SUPPRESS: s = "CB_TAG_ML_SUPPRESS"; break; + + case CB_TAG_ML_TREE: s = "CB_TAG_ML_TREE"; break; + + case CB_TAG_ML_SUPPRESS_CHECKS: s = "CB_TAG_ML_SUPPRESS_CHECKS"; break; + + case CB_TAG_VARY: s = "CB_TAG_VARY"; break; + + case CB_TAG_TAB_VALS: s = "CB_TAG_TAB_VALS"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cb_category (int indent, enum cb_category x){ + const char *s = NULL; + switch (x){ + + case CB_CATEGORY_UNKNOWN: s = "CB_CATEGORY_UNKNOWN"; break; + + case CB_CATEGORY_ALPHABETIC: s = "CB_CATEGORY_ALPHABETIC"; break; + + case CB_CATEGORY_ALPHANUMERIC: s = "CB_CATEGORY_ALPHANUMERIC"; break; + + case CB_CATEGORY_ALPHANUMERIC_EDITED: s = "CB_CATEGORY_ALPHANUMERIC_EDITED"; break; + + case CB_CATEGORY_BOOLEAN: s = "CB_CATEGORY_BOOLEAN"; break; + + case CB_CATEGORY_INDEX: s = "CB_CATEGORY_INDEX"; break; + + case CB_CATEGORY_NATIONAL: s = "CB_CATEGORY_NATIONAL"; break; + + case CB_CATEGORY_NATIONAL_EDITED: s = "CB_CATEGORY_NATIONAL_EDITED"; break; + + case CB_CATEGORY_NUMERIC: s = "CB_CATEGORY_NUMERIC"; break; + + case CB_CATEGORY_NUMERIC_EDITED: s = "CB_CATEGORY_NUMERIC_EDITED"; break; + + case CB_CATEGORY_OBJECT_REFERENCE: s = "CB_CATEGORY_OBJECT_REFERENCE"; break; + + case CB_CATEGORY_DATA_POINTER: s = "CB_CATEGORY_DATA_POINTER"; break; + + case CB_CATEGORY_PROGRAM_POINTER: s = "CB_CATEGORY_PROGRAM_POINTER"; break; + + case CB_CATEGORY_FLOATING_EDITED: s = "CB_CATEGORY_FLOATING_EDITED"; break; + + case CB_CATEGORY_ERROR: s = "CB_CATEGORY_ERROR"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_const (int indent, int ptr_uid, struct cb_const *ptr); +static void print_struct_cb_const_ptr (int indent, struct cb_const *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_const*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_const (indent, ptr_uid, ptr); +} + +static void print_struct_cb_const (int indent, int ptr_uid, struct cb_const *ptr){ + PRINT_STRUCT_TY("struct cb_const"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->val != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,val); + + print_char_ptr (indent+2, ptr->val); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_integer (int indent, int ptr_uid, struct cb_integer *ptr); +static void print_struct_cb_integer_ptr (int indent, struct cb_integer *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_integer*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_integer (indent, ptr_uid, ptr); +} + +static void print_struct_cb_integer (int indent, int ptr_uid, struct cb_integer *ptr){ + PRINT_STRUCT_TY("struct cb_integer"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->val != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,val); + + print_int (indent+2, ptr->val); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_string (int indent, int ptr_uid, struct cb_string *ptr); +static void print_struct_cb_string_ptr (int indent, struct cb_string *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_string*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_string (indent, ptr_uid, ptr); +} + +static void print_struct_cb_string (int indent, int ptr_uid, struct cb_string *ptr){ + PRINT_STRUCT_TY("struct cb_string"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->data != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,data); + + print_uchar_ptr (indent+2, ptr->data); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,size); + + print_size_t (indent+2, ptr->size); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_alphabet_name (int indent, int ptr_uid, struct cb_alphabet_name *ptr); +static void print_struct_cb_alphabet_name_ptr (int indent, struct cb_alphabet_name *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_alphabet_name*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_alphabet_name (indent, ptr_uid, ptr); +} + +static void print_enum_cb_alphabet_target (int indent, enum cb_alphabet_target x){ + const char *s = NULL; + switch (x){ + + case CB_ALPHABET_ALPHANUMERIC: s = "CB_ALPHABET_ALPHANUMERIC"; break; + + case CB_ALPHABET_NATIONAL: s = "CB_ALPHABET_NATIONAL"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cb_alphabet_type (int indent, enum cb_alphabet_type x){ + const char *s = NULL; + switch (x){ + + case CB_ALPHABET_NATIVE: s = "CB_ALPHABET_NATIVE"; break; + + case CB_ALPHABET_ASCII: s = "CB_ALPHABET_ASCII"; break; + + case CB_ALPHABET_EBCDIC: s = "CB_ALPHABET_EBCDIC"; break; + + case CB_ALPHABET_CUSTOM: s = "CB_ALPHABET_CUSTOM"; break; + + case CB_ALPHABET_LOCALE: s = "CB_ALPHABET_LOCALE"; break; + + case CB_ALPHABET_UTF_8: s = "CB_ALPHABET_UTF_8"; break; + + case CB_ALPHABET_UTF_16: s = "CB_ALPHABET_UTF_16"; break; + + case CB_ALPHABET_UCS_4: s = "CB_ALPHABET_UCS_4"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_alphabet_name (int indent, int ptr_uid, struct cb_alphabet_name *ptr){ + PRINT_STRUCT_TY("struct cb_alphabet_name"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cname != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cname); + + print_char_ptr (indent+2, ptr->cname); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->custom_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,custom_list); + + if (ptr->custom_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->custom_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,alphabet_target); + + print_enum_cb_alphabet_target (indent+2, ptr->alphabet_target); + + PRINT_STRUCT_FIELD_END(indent); + + PRINT_STRUCT_FIELD_BEGIN(indent,alphabet_type); + + print_enum_cb_alphabet_type (indent+2, ptr->alphabet_type); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->low_val_char != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,low_val_char); + + print_int (indent+2, ptr->low_val_char); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->high_val_char != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,high_val_char); + + print_int (indent+2, ptr->high_val_char); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->values != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,values); + + print_int_ptr (indent+2, ptr->values); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->alphachr != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,alphachr); + + print_int_ptr (indent+2, ptr->alphachr); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_class_name (int indent, int ptr_uid, struct cb_class_name *ptr); +static void print_struct_cb_class_name_ptr (int indent, struct cb_class_name *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_class_name*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_class_name (indent, ptr_uid, ptr); +} + +static void print_struct_cb_class_name (int indent, int ptr_uid, struct cb_class_name *ptr){ + PRINT_STRUCT_TY("struct cb_class_name"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cname != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cname); + + print_char_ptr (indent+2, ptr->cname); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,list); + + if (ptr->list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_locale_name (int indent, int ptr_uid, struct cb_locale_name *ptr); +static void print_struct_cb_locale_name_ptr (int indent, struct cb_locale_name *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_locale_name*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_locale_name (indent, ptr_uid, ptr); +} + +static void print_struct_cb_locale_name (int indent, int ptr_uid, struct cb_locale_name *ptr){ + PRINT_STRUCT_TY("struct cb_locale_name"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cname != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cname); + + print_char_ptr (indent+2, ptr->cname); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,list); + + if (ptr->list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_system_name (int indent, int ptr_uid, struct cb_system_name *ptr); +static void print_struct_cb_system_name_ptr (int indent, struct cb_system_name *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_system_name*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_system_name (indent, ptr_uid, ptr); +} + +static void print_enum_cb_system_name_category (int indent, enum cb_system_name_category x){ + const char *s = NULL; + switch (x){ + + case CB_DEVICE_NAME: s = "CB_DEVICE_NAME"; break; + + case CB_SWITCH_NAME: s = "CB_SWITCH_NAME"; break; + + case CB_FEATURE_NAME: s = "CB_FEATURE_NAME"; break; + + case CB_CALL_CONVENTION_NAME: s = "CB_CALL_CONVENTION_NAME"; break; + + case CB_CODE_NAME: s = "CB_CODE_NAME"; break; + + case CB_COMPUTER_NAME: s = "CB_COMPUTER_NAME"; break; + + case CB_EXTERNAL_LOCALE_NAME: s = "CB_EXTERNAL_LOCALE_NAME"; break; + + case CB_LIBRARY_NAME: s = "CB_LIBRARY_NAME"; break; + + case CB_TEXT_NAME: s = "CB_TEXT_NAME"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_system_name (int indent, int ptr_uid, struct cb_system_name *ptr){ + PRINT_STRUCT_TY("struct cb_system_name"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->value != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,value); + + if (ptr->value == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->value); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,category); + + print_enum_cb_system_name_category (indent+2, ptr->category); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->token != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,token); + + print_int (indent+2, ptr->token); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_schema_name (int indent, int ptr_uid, struct cb_schema_name *ptr); +static void print_struct_cb_schema_name_ptr (int indent, struct cb_schema_name *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_schema_name*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_schema_name (indent, ptr_uid, ptr); +} + +static void print_struct_cb_schema_name (int indent, int ptr_uid, struct cb_schema_name *ptr){ + PRINT_STRUCT_TY("struct cb_schema_name"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->data != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,data); + + print_char_ptr (indent+2, ptr->data); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_literal (int indent, int ptr_uid, struct cb_literal *ptr); +static void print_struct_cb_literal_ptr (int indent, struct cb_literal *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_literal*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_literal (indent, ptr_uid, ptr); +} + +static void print_struct_cb_literal (int indent, int ptr_uid, struct cb_literal *ptr){ + PRINT_STRUCT_TY("struct cb_literal"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->data != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,data); + + print_uchar_ptr (indent+2, ptr->data); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->size != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,size); + + print_uint (indent+2, ptr->size); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->scale != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,scale); + + print_int (indent+2, ptr->scale); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->llit != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,llit); + + print_uint (indent+2, ptr->llit); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->sign != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,sign); + + print_int (indent+2, ptr->sign); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->all != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,all); + + print_int (indent+2, ptr->all); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_decimal (int indent, int ptr_uid, struct cb_decimal *ptr); +static void print_struct_cb_decimal_ptr (int indent, struct cb_decimal *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_decimal*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_decimal (indent, ptr_uid, ptr); +} + +static void print_struct_cb_decimal (int indent, int ptr_uid, struct cb_decimal *ptr){ + PRINT_STRUCT_TY("struct cb_decimal"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,id); + + print_uint (indent+2, ptr->id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_field (int indent, int ptr_uid, struct cb_field *ptr); +static void print_struct_cb_field_ptr (int indent, struct cb_field *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_field*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_field (indent, ptr_uid, ptr); +} + +static void print_struct_cb_file (int indent, int ptr_uid, struct cb_file *ptr); +static void print_struct_cb_file_ptr (int indent, struct cb_file *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_file*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_file (indent, ptr_uid, ptr); +} + +static void print_struct_cb_key_component (int indent, int ptr_uid, struct cb_key_component *ptr); +static void print_struct_cb_key_component_ptr (int indent, struct cb_key_component *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_key_component*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_key_component (indent, ptr_uid, ptr); +} + +static void print_struct_cb_key_component (int indent, int ptr_uid, struct cb_key_component *ptr){ + PRINT_STRUCT_TY("struct cb_key_component"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_key_component_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->component != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,component); + + if (ptr->component == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->component); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_alt_key (int indent, int ptr_uid, struct cb_alt_key *ptr); +static void print_struct_cb_alt_key_ptr (int indent, struct cb_alt_key *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_alt_key*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_alt_key (indent, ptr_uid, ptr); +} + +static void print_struct_cb_alt_key (int indent, int ptr_uid, struct cb_alt_key *ptr){ + PRINT_STRUCT_TY("struct cb_alt_key"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_alt_key_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->key != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,key); + + if (ptr->key == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->key); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->password != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,password); + + if (ptr->password == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->password); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->collating_sequence_key != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,collating_sequence_key); + + if (ptr->collating_sequence_key == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->collating_sequence_key); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->duplicates != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,duplicates); + + print_int (indent+2, ptr->duplicates); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->offset != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,offset); + + print_int (indent+2, ptr->offset); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->tf_suppress != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,tf_suppress); + + print_int (indent+2, ptr->tf_suppress); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->char_suppress != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,char_suppress); + + print_int (indent+2, ptr->char_suppress); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->component_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,component_list); + + if (ptr->component_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_key_component_ptr (indent+2, ptr->component_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_label (int indent, int ptr_uid, struct cb_label *ptr); +static void print_struct_cb_label_ptr (int indent, struct cb_label *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_label*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_label (indent, ptr_uid, ptr); +} + +static void print_struct_cb_para_label (int indent, int ptr_uid, struct cb_para_label *ptr); +static void print_struct_cb_para_label_ptr (int indent, struct cb_para_label *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_para_label*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_para_label (indent, ptr_uid, ptr); +} + +static void print_struct_cb_para_label (int indent, int ptr_uid, struct cb_para_label *ptr){ + PRINT_STRUCT_TY("struct cb_para_label"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_para_label_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->para != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,para); + + if (ptr->para == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->para); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_xref (int indent, int ptr_uid, struct cb_xref *ptr); +static void print_struct_cb_xref_ptr (int indent, struct cb_xref *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_xref*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_xref (indent, ptr_uid, ptr); +} + +static void print_struct_cb_xref_elem (int indent, int ptr_uid, struct cb_xref_elem *ptr); +static void print_struct_cb_xref_elem_ptr (int indent, struct cb_xref_elem *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_xref_elem*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_xref_elem (indent, ptr_uid, ptr); +} + +static void print_struct_cb_xref_elem (int indent, int ptr_uid, struct cb_xref_elem *ptr){ + PRINT_STRUCT_TY("struct cb_xref_elem"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_xref_elem_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->prev != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,prev); + + if (ptr->prev == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_xref_elem_ptr (indent+2, ptr->prev); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->line != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,line); + + print_int (indent+2, ptr->line); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->receive != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,receive); + + print_int (indent+2, ptr->receive); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_xref (int indent, int ptr_uid, struct cb_xref *ptr){ + PRINT_STRUCT_TY("struct cb_xref"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->head != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,head); + + if (ptr->head == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_xref_elem_ptr (indent+2, ptr->head); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->tail != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,tail); + + if (ptr->tail == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_xref_elem_ptr (indent+2, ptr->tail); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->amount != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,amount); + + print_int (indent+2, ptr->amount); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->skip != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,skip); + + print_int (indent+2, ptr->skip); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_alter_id (int indent, int ptr_uid, struct cb_alter_id *ptr); +static void print_struct_cb_alter_id_ptr (int indent, struct cb_alter_id *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_alter_id*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_alter_id (indent, ptr_uid, ptr); +} + +static void print_struct_cb_alter_id (int indent, int ptr_uid, struct cb_alter_id *ptr){ + PRINT_STRUCT_TY("struct cb_alter_id"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_alter_id_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->goto_id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,goto_id); + + print_int (indent+2, ptr->goto_id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_label (int indent, int ptr_uid, struct cb_label *ptr){ + PRINT_STRUCT_TY("struct cb_label"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->orig_name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,orig_name); + + print_char_ptr (indent+2, ptr->orig_name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->section != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,section); + + if (ptr->section == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->section); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->debug_section != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,debug_section); + + if (ptr->debug_section == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->debug_section); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->para_label != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,para_label); + + if (ptr->para_label == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_para_label_ptr (indent+2, ptr->para_label); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,xref); + + print_struct_cb_xref (indent+2, 0, &ptr->xref); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->exit_label != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,exit_label); + + if (ptr->exit_label == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->exit_label); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->alter_gotos != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,alter_gotos); + + if (ptr->alter_gotos == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_alter_id_ptr (indent+2, ptr->alter_gotos); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,id); + + print_int (indent+2, ptr->id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->section_id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,section_id); + + print_int (indent+2, ptr->section_id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->segment != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,segment); + + print_int (indent+2, ptr->segment); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_section != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_section); + + print_int (indent, ptr->flag_section); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_entry != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_entry); + + print_int (indent, ptr->flag_entry); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_begin != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_begin); + + print_int (indent, ptr->flag_begin); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_return != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_return); + + print_int (indent, ptr->flag_return); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_real_label != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_real_label); + + print_int (indent, ptr->flag_real_label); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_global != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_global); + + print_int (indent, ptr->flag_global); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_declarative_exit != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_declarative_exit); + + print_int (indent, ptr->flag_declarative_exit); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_declaratives != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_declaratives); + + print_int (indent, ptr->flag_declaratives); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_fatal_check != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_fatal_check); + + print_int (indent, ptr->flag_fatal_check); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_dummy_section != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_dummy_section); + + print_int (indent, ptr->flag_dummy_section); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_dummy_paragraph != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_dummy_paragraph); + + print_int (indent, ptr->flag_dummy_paragraph); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_dummy_exit != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_dummy_exit); + + print_int (indent, ptr->flag_dummy_exit); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_next_sentence != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_next_sentence); + + print_int (indent, ptr->flag_next_sentence); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_default_handler != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_default_handler); + + print_int (indent, ptr->flag_default_handler); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_statement != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_statement); + + print_int (indent, ptr->flag_statement); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_first_is_goto != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_first_is_goto); + + print_int (indent, ptr->flag_first_is_goto); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_alter != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_alter); + + print_int (indent, ptr->flag_alter); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_debugging_mode != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_debugging_mode); + + print_int (indent, ptr->flag_debugging_mode); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_debug_sect != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_debug_sect); + + print_int (indent, ptr->flag_is_debug_sect); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_skip_label != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_skip_label); + + print_int (indent, ptr->flag_skip_label); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_entry_for_goto != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_entry_for_goto); + + print_int (indent, ptr->flag_entry_for_goto); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_program (int indent, int ptr_uid, struct cb_program *ptr); +static void print_struct_cb_program_ptr (int indent, struct cb_program *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_program*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_program (indent, ptr_uid, ptr); +} + +static void print_struct_cb_word (int indent, int ptr_uid, struct cb_word *ptr); +static void print_struct_cb_word_ptr (int indent, struct cb_word *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_word*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_word (indent, ptr_uid, ptr); +} + +static void print_struct_cb_word (int indent, int ptr_uid, struct cb_word *ptr){ + PRINT_STRUCT_TY("struct cb_word"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_word_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->items != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,items); + + if (ptr->items == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->items); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->count != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,count); + + print_int (indent+2, ptr->count); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->error != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,error); + + print_int (indent+2, ptr->error); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_local_filename (int indent, int ptr_uid, struct local_filename *ptr); +static void print_struct_local_filename_ptr (int indent, struct local_filename *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct local_filename*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_local_filename (indent, ptr_uid, ptr); +} + +static void print_struct_local_filename (int indent, int ptr_uid, struct local_filename *ptr){ + PRINT_STRUCT_TY("struct local_filename"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_local_filename_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->local_name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,local_name); + + print_char_ptr (indent+2, ptr->local_name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->local_include_name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,local_include_name); + + print_char_ptr (indent+2, ptr->local_include_name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->local_fp != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,local_fp); + + if (ptr->local_fp == NULL){ + PRINT_NULL(indent,ty); + } else { + print_FILE_ptr (indent+2, ptr->local_fp); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_nested_list (int indent, int ptr_uid, struct nested_list *ptr); +static void print_struct_nested_list_ptr (int indent, struct nested_list *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct nested_list*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_nested_list (indent, ptr_uid, ptr); +} + +static void print_struct_nested_list (int indent, int ptr_uid, struct nested_list *ptr){ + PRINT_STRUCT_TY("struct nested_list"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_nested_list_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->nested_prog != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,nested_prog); + + if (ptr->nested_prog == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_program_ptr (indent+2, ptr->nested_prog); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_handler_struct (int indent, int ptr_uid, struct handler_struct *ptr); +static void print_struct_handler_struct_ptr (int indent, struct handler_struct *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct handler_struct*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_handler_struct (indent, ptr_uid, ptr); +} + +static void print_struct_handler_struct (int indent, int ptr_uid, struct handler_struct *ptr){ + PRINT_STRUCT_TY("struct handler_struct"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->handler_label != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,handler_label); + + if (ptr->handler_label == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->handler_label); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->handler_prog != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,handler_prog); + + if (ptr->handler_prog == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_program_ptr (indent+2, ptr->handler_prog); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_call_xref (int indent, int ptr_uid, struct cb_call_xref *ptr); +static void print_struct_cb_call_xref_ptr (int indent, struct cb_call_xref *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_call_xref*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_call_xref (indent, ptr_uid, ptr); +} + +static void print_struct_cb_call_elem (int indent, int ptr_uid, struct cb_call_elem *ptr); +static void print_struct_cb_call_elem_ptr (int indent, struct cb_call_elem *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_call_elem*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_call_elem (indent, ptr_uid, ptr); +} + +static void print_struct_cb_call_elem (int indent, int ptr_uid, struct cb_call_elem *ptr){ + PRINT_STRUCT_TY("struct cb_call_elem"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_call_elem_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,xref); + + print_struct_cb_xref (indent+2, 0, &ptr->xref); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->is_identifier != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,is_identifier); + + print_int (indent+2, ptr->is_identifier); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->is_system != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,is_system); + + print_int (indent+2, ptr->is_system); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_call_xref (int indent, int ptr_uid, struct cb_call_xref *ptr){ + PRINT_STRUCT_TY("struct cb_call_xref"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->head != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,head); + + if (ptr->head == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_call_elem_ptr (indent+2, ptr->head); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->tail != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,tail); + + if (ptr->tail == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_call_elem_ptr (indent+2, ptr->tail); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_ml_generate_tree (int indent, int ptr_uid, struct cb_ml_generate_tree *ptr); +static void print_struct_cb_ml_generate_tree_ptr (int indent, struct cb_ml_generate_tree *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_ml_generate_tree*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_ml_generate_tree (indent, ptr_uid, ptr); +} + +static void print_enum_cb_ml_type (int indent, enum cb_ml_type x){ + const char *s = NULL; + switch (x){ + + case CB_ML_ATTRIBUTE: s = "CB_ML_ATTRIBUTE"; break; + + case CB_ML_ELEMENT: s = "CB_ML_ELEMENT"; break; + + case CB_ML_CONTENT: s = "CB_ML_CONTENT"; break; + + case CB_ML_ANY_TYPE: s = "CB_ML_ANY_TYPE"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_ml_generate_tree (int indent, int ptr_uid, struct cb_ml_generate_tree *ptr){ + PRINT_STRUCT_TY("struct cb_ml_generate_tree"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + if (ptr->name == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->name); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,type); + + print_enum_cb_ml_type (indent+2, ptr->type); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->value != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,value); + + if (ptr->value == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->value); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->suppress_cond != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,suppress_cond); + + if (ptr->suppress_cond == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->suppress_cond); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,id); + + print_int (indent+2, ptr->id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->attrs != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,attrs); + + if (ptr->attrs == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_ml_generate_tree_ptr (indent+2, ptr->attrs); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->parent != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,parent); + + if (ptr->parent == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_ml_generate_tree_ptr (indent+2, ptr->parent); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->children != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,children); + + if (ptr->children == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_ml_generate_tree_ptr (indent+2, ptr->children); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->prev_sibling != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,prev_sibling); + + if (ptr->prev_sibling == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_ml_generate_tree_ptr (indent+2, ptr->prev_sibling); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->sibling != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,sibling); + + if (ptr->sibling == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_ml_generate_tree_ptr (indent+2, ptr->sibling); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_enum_cob_module_type (int indent, enum cob_module_type x){ + const char *s = NULL; + switch (x){ + + case COB_MODULE_TYPE_PROGRAM: s = "COB_MODULE_TYPE_PROGRAM"; break; + + case COB_MODULE_TYPE_FUNCTION: s = "COB_MODULE_TYPE_FUNCTION"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_literal_list (int indent, int ptr_uid, struct literal_list *ptr); +static void print_struct_literal_list_ptr (int indent, struct literal_list *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct literal_list*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_literal_list (indent, ptr_uid, ptr); +} + +static void print_struct_literal_list (int indent, int ptr_uid, struct literal_list *ptr){ + PRINT_STRUCT_TY("struct literal_list"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_literal_list_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->literal != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,literal); + + if (ptr->literal == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_literal_ptr (indent+2, ptr->literal); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,id); + + print_int (indent+2, ptr->id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->make_decimal != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,make_decimal); + + print_int (indent+2, ptr->make_decimal); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_procedure_list (int indent, int ptr_uid, struct cb_procedure_list *ptr); +static void print_struct_cb_procedure_list_ptr (int indent, struct cb_procedure_list *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_procedure_list*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_procedure_list (indent, ptr_uid, ptr); +} + +static void print_struct_cob_prof_procedure (int indent, int ptr_uid, struct cob_prof_procedure *ptr); +static void print_struct_cob_prof_procedure_ptr (int indent, struct cob_prof_procedure *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cob_prof_procedure*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cob_prof_procedure (indent, ptr_uid, ptr); +} + +static void print_enum_cob_prof_procedure_kind (int indent, enum cob_prof_procedure_kind x){ + const char *s = NULL; + switch (x){ + + case COB_PROF_PROCEDURE_MODULE: s = "COB_PROF_PROCEDURE_MODULE"; break; + + case COB_PROF_PROCEDURE_SECTION: s = "COB_PROF_PROCEDURE_SECTION"; break; + + case COB_PROF_PROCEDURE_PARAGRAPH: s = "COB_PROF_PROCEDURE_PARAGRAPH"; break; + + case COB_PROF_PROCEDURE_ENTRY: s = "COB_PROF_PROCEDURE_ENTRY"; break; + + case COB_PROF_PROCEDURE_CALL: s = "COB_PROF_PROCEDURE_CALL"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cob_prof_procedure (int indent, int ptr_uid, struct cob_prof_procedure *ptr){ + PRINT_STRUCT_TY("struct cob_prof_procedure"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->text != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,text); + + print_char_ptr (indent+2, ptr->text); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->file != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,file); + + print_char_ptr (indent+2, ptr->file); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->line != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,line); + + print_int (indent+2, ptr->line); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->section != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,section); + + print_int (indent+2, ptr->section); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,kind); + + print_enum_cob_prof_procedure_kind (indent+2, ptr->kind); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_procedure_list (int indent, int ptr_uid, struct cb_procedure_list *ptr){ + PRINT_STRUCT_TY("struct cb_procedure_list"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->next != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next); + + if (ptr->next == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_procedure_list_ptr (indent+2, ptr->next); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,proc); + + print_struct_cob_prof_procedure (indent+2, 0, &ptr->proc); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_program (int indent, int ptr_uid, struct cb_program *ptr){ + PRINT_STRUCT_TY("struct cb_program"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->next_program != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next_program); + + if (ptr->next_program == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_program_ptr (indent+2, ptr->next_program); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->next_program_ordered != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next_program_ordered); + + if (ptr->next_program_ordered == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_program_ptr (indent+2, ptr->next_program_ordered); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->program_name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,program_name); + + print_char_ptr (indent+2, ptr->program_name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->program_id != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,program_id); + + print_char_ptr (indent+2, ptr->program_id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->source_name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,source_name); + + print_char_ptr (indent+2, ptr->source_name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->orig_program_id != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,orig_program_id); + + print_char_ptr (indent+2, ptr->orig_program_id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->word_table != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,word_table); + + print_cb_word_ptr2 (indent+2, ptr->word_table); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->local_include != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,local_include); + + if (ptr->local_include == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_local_filename_ptr (indent+2, ptr->local_include); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->nested_prog_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,nested_prog_list); + + if (ptr->nested_prog_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_nested_list_ptr (indent+2, ptr->nested_prog_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->common_prog_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,common_prog_list); + + if (ptr->common_prog_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_nested_list_ptr (indent+2, ptr->common_prog_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->entry_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,entry_list); + + if (ptr->entry_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->entry_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->entry_list_goto != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,entry_list_goto); + + if (ptr->entry_list_goto == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->entry_list_goto); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->file_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,file_list); + + if (ptr->file_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->file_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cd_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cd_list); + + if (ptr->cd_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->cd_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->exec_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,exec_list); + + if (ptr->exec_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->exec_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->label_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,label_list); + + if (ptr->label_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->label_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->reference_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,reference_list); + + if (ptr->reference_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->reference_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->alphabet_name_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,alphabet_name_list); + + if (ptr->alphabet_name_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->alphabet_name_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->symbolic_char_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,symbolic_char_list); + + if (ptr->symbolic_char_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->symbolic_char_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->class_name_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,class_name_list); + + if (ptr->class_name_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->class_name_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->schema_name_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,schema_name_list); + + if (ptr->schema_name_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->schema_name_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->parameter_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,parameter_list); + + if (ptr->parameter_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->parameter_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->locale_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,locale_list); + + if (ptr->locale_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->locale_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->global_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,global_list); + + if (ptr->global_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->global_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_list); + + if (ptr->report_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->perform_thru_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,perform_thru_list); + + if (ptr->perform_thru_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->perform_thru_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->alter_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,alter_list); + + if (ptr->alter_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->alter_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->debug_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,debug_list); + + if (ptr->debug_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->debug_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cb_return_code != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cb_return_code); + + if (ptr->cb_return_code == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->cb_return_code); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cb_sort_return != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cb_sort_return); + + if (ptr->cb_sort_return == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->cb_sort_return); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cb_call_params != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cb_call_params); + + if (ptr->cb_call_params == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->cb_call_params); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->mnemonic_spec_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,mnemonic_spec_list); + + if (ptr->mnemonic_spec_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->mnemonic_spec_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->class_spec_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,class_spec_list); + + if (ptr->class_spec_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->class_spec_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->interface_spec_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,interface_spec_list); + + if (ptr->interface_spec_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->interface_spec_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->function_spec_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,function_spec_list); + + if (ptr->function_spec_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->function_spec_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->user_spec_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,user_spec_list); + + if (ptr->user_spec_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->user_spec_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->program_spec_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,program_spec_list); + + if (ptr->program_spec_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->program_spec_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->property_spec_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,property_spec_list); + + if (ptr->property_spec_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->property_spec_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->alter_gotos != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,alter_gotos); + + if (ptr->alter_gotos == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_alter_id_ptr (indent+2, ptr->alter_gotos); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->working_storage != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,working_storage); + + if (ptr->working_storage == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->working_storage); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->local_storage != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,local_storage); + + if (ptr->local_storage == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->local_storage); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->linkage_storage != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,linkage_storage); + + if (ptr->linkage_storage == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->linkage_storage); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_storage != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_storage); + + if (ptr->screen_storage == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->screen_storage); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_storage != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_storage); + + if (ptr->report_storage == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->report_storage); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->local_file_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,local_file_list); + + if (ptr->local_file_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->local_file_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->global_file_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,global_file_list); + + if (ptr->global_file_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->global_file_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,global_handler); + + PRINT_ARRAY_BEGIN(indent); + { + int i; + for (i=0; i<5; i++){ + if (i>0){ + PRINT_ARRAY_SEP(indent); + } + + print_struct_handler_struct (indent+2, 0, &ptr->global_handler[i]); + + } + } + PRINT_ARRAY_END(indent); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->collating_sequence != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,collating_sequence); + + if (ptr->collating_sequence == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->collating_sequence); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->collating_sequence_n != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,collating_sequence_n); + + if (ptr->collating_sequence_n == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->collating_sequence_n); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->classification != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,classification); + + if (ptr->classification == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->classification); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->apply_commit != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,apply_commit); + + if (ptr->apply_commit == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->apply_commit); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cursor_pos != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cursor_pos); + + if (ptr->cursor_pos == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->cursor_pos); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->crt_status != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,crt_status); + + if (ptr->crt_status == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->crt_status); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_code != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_code); + + if (ptr->xml_code == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_code); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_event != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_event); + + if (ptr->xml_event == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_event); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_information != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_information); + + if (ptr->xml_information == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_information); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_namespace != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_namespace); + + if (ptr->xml_namespace == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_namespace); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_nnamespace != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_nnamespace); + + if (ptr->xml_nnamespace == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_nnamespace); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_namespace_prefix != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_namespace_prefix); + + if (ptr->xml_namespace_prefix == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_namespace_prefix); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_nnamespace_prefix != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_nnamespace_prefix); + + if (ptr->xml_nnamespace_prefix == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_nnamespace_prefix); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_ntext != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_ntext); + + if (ptr->xml_ntext == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_ntext); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->xml_text != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,xml_text); + + if (ptr->xml_text == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->xml_text); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->json_code != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,json_code); + + if (ptr->json_code == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->json_code); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->json_status != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,json_status); + + if (ptr->json_status == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->json_status); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->returning != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,returning); + + if (ptr->returning == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->returning); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->all_procedure != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,all_procedure); + + if (ptr->all_procedure == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->all_procedure); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,call_xref); + + print_struct_cb_call_xref (indent+2, 0, &ptr->call_xref); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->ml_trees != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,ml_trees); + + if (ptr->ml_trees == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_ml_generate_tree_ptr (indent+2, ptr->ml_trees); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->extfh != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,extfh); + + print_char_ptr (indent+2, ptr->extfh); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->last_source_line != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,last_source_line); + + print_int (indent+2, ptr->last_source_line); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->loop_counter != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,loop_counter); + + print_int (indent+2, ptr->loop_counter); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->decimal_index != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,decimal_index); + + print_uint (indent+2, ptr->decimal_index); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->decimal_index_max != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,decimal_index_max); + + print_uint (indent+2, ptr->decimal_index_max); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->nested_level != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,nested_level); + + print_int (indent+2, ptr->nested_level); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->num_proc_params != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,num_proc_params); + + print_uint (indent+2, ptr->num_proc_params); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->toplev_count != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,toplev_count); + + print_int (indent+2, ptr->toplev_count); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->max_call_param != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,max_call_param); + + print_uint (indent+2, ptr->max_call_param); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->decimal_point != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,decimal_point); + + print_uchar (indent+2, ptr->decimal_point); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->currency_symbol != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,currency_symbol); + + print_uchar (indent+2, ptr->currency_symbol); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->numeric_separator != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,numeric_separator); + + print_uchar (indent+2, ptr->numeric_separator); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,prog_type); + + print_enum_cob_module_type (indent+2, ptr->prog_type); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->entry_convention != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,entry_convention); + + if (ptr->entry_convention == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->entry_convention); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->decimal_constants != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,decimal_constants); + + if (ptr->decimal_constants == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_literal_list_ptr (indent+2, ptr->decimal_constants); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->procedure_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,procedure_list); + + if (ptr->procedure_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_procedure_list_ptr (indent+2, ptr->procedure_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->procedure_list_last != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,procedure_list_last); + + if (ptr->procedure_list_last == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_procedure_list_ptr (indent+2, ptr->procedure_list_last); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->procedure_list_len != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,procedure_list_len); + + print_int (indent+2, ptr->procedure_list_len); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->prof_current_section != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,prof_current_section); + + print_int (indent+2, ptr->prof_current_section); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->prof_current_paragraph != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,prof_current_paragraph); + + print_int (indent+2, ptr->prof_current_paragraph); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->prof_current_call != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,prof_current_call); + + print_int (indent+2, ptr->prof_current_call); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_main != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_main); + + print_int (indent, ptr->flag_main); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_common != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_common); + + print_int (indent, ptr->flag_common); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_initial != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_initial); + + print_int (indent, ptr->flag_initial); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_recursive != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_recursive); + + print_int (indent, ptr->flag_recursive); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_screen != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_screen); + + print_int (indent, ptr->flag_screen); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_validated != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_validated); + + print_int (indent, ptr->flag_validated); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_chained != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_chained); + + print_int (indent, ptr->flag_chained); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_global_use != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_global_use); + + print_int (indent, ptr->flag_global_use); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_gen_error != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_gen_error); + + print_int (indent, ptr->flag_gen_error); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_file_global != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_file_global); + + print_int (indent, ptr->flag_file_global); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_has_external != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_has_external); + + print_int (indent, ptr->flag_has_external); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_segments != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_segments); + + print_int (indent, ptr->flag_segments); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_trailing_separate != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_trailing_separate); + + print_int (indent, ptr->flag_trailing_separate); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_console_is_crt != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_console_is_crt); + + print_int (indent, ptr->flag_console_is_crt); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_debugging != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_debugging); + + print_int (indent, ptr->flag_debugging); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_gen_debug != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_gen_debug); + + print_int (indent, ptr->flag_gen_debug); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_save_exception != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_save_exception); + + print_int (indent, ptr->flag_save_exception); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_report != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_report); + + print_int (indent, ptr->flag_report); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_void != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_void); + + print_int (indent, ptr->flag_void); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_decimal_comp != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_decimal_comp); + + print_int (indent, ptr->flag_decimal_comp); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_prototype != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_prototype); + + print_int (indent, ptr->flag_prototype); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_list (int indent, int ptr_uid, struct cb_list *ptr); +static void print_struct_cb_list_ptr (int indent, struct cb_list *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_list*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_list (indent, ptr_uid, ptr); +} + +static void print_struct_cb_list (int indent, int ptr_uid, struct cb_list *ptr){ + PRINT_STRUCT_TY("struct cb_list"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->chain != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,chain); + + if (ptr->chain == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->chain); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->value != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,value); + + if (ptr->value == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->value); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->purpose != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,purpose); + + if (ptr->purpose == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->purpose); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->sizes != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,sizes); + + print_int (indent+2, ptr->sizes); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_enum_cob_file_org (int indent, enum cob_file_org x){ + const char *s = NULL; + switch (x){ + + case COB_ORG_SEQUENTIAL: s = "COB_ORG_SEQUENTIAL"; break; + + case COB_ORG_LINE_SEQUENTIAL: s = "COB_ORG_LINE_SEQUENTIAL"; break; + + case COB_ORG_RELATIVE: s = "COB_ORG_RELATIVE"; break; + + case COB_ORG_INDEXED: s = "COB_ORG_INDEXED"; break; + + case COB_ORG_SORT: s = "COB_ORG_SORT"; break; + + case COB_ORG_MAX: s = "COB_ORG_MAX"; break; + + case COB_ORG_MESSAGE: s = "COB_ORG_MESSAGE"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cob_file_access_mode (int indent, enum cob_file_access_mode x){ + const char *s = NULL; + switch (x){ + + case COB_ACCESS_UNDEFINED: s = "COB_ACCESS_UNDEFINED"; break; + + case COB_ACCESS_SEQUENTIAL: s = "COB_ACCESS_SEQUENTIAL"; break; + + case COB_ACCESS_DYNAMIC: s = "COB_ACCESS_DYNAMIC"; break; + + case COB_ACCESS_RANDOM: s = "COB_ACCESS_RANDOM"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cb_assign_type (int indent, enum cb_assign_type x){ + const char *s = NULL; + switch (x){ + + case CB_ASSIGN_VARIABLE_DEFAULT: s = "CB_ASSIGN_VARIABLE_DEFAULT"; break; + + case CB_ASSIGN_VARIABLE_REQUIRED: s = "CB_ASSIGN_VARIABLE_REQUIRED"; break; + + case CB_ASSIGN_EXT_FILE_NAME_REQUIRED: s = "CB_ASSIGN_EXT_FILE_NAME_REQUIRED"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_exception (int indent, int ptr_uid, struct cb_exception *ptr); +static void print_struct_cb_exception_ptr (int indent, struct cb_exception *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_exception*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_exception (indent, ptr_uid, ptr); +} + +static void print_struct_cb_exception (int indent, int ptr_uid, struct cb_exception *ptr){ + PRINT_STRUCT_TY("struct cb_exception"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->code != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,code); + + print_int (indent+2, ptr->code); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->enable != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,enable); + + print_int (indent+2, ptr->enable); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->fatal != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,fatal); + + print_int (indent+2, ptr->fatal); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_file (int indent, int ptr_uid, struct cb_file *ptr){ + PRINT_STRUCT_TY("struct cb_file"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cname != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cname); + + print_char_ptr (indent+2, ptr->cname); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->assign != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,assign); + + if (ptr->assign == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->assign); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->file_status != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,file_status); + + if (ptr->file_status == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->file_status); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->sharing != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,sharing); + + if (ptr->sharing == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->sharing); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->key != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,key); + + if (ptr->key == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->key); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->password != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,password); + + if (ptr->password == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->password); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->component_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,component_list); + + if (ptr->component_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_key_component_ptr (indent+2, ptr->component_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->alt_key_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,alt_key_list); + + if (ptr->alt_key_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_alt_key_ptr (indent+2, ptr->alt_key_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->collating_sequence_key != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,collating_sequence_key); + + if (ptr->collating_sequence_key == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->collating_sequence_key); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->collating_sequence != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,collating_sequence); + + if (ptr->collating_sequence == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->collating_sequence); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->collating_sequence_n != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,collating_sequence_n); + + if (ptr->collating_sequence_n == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->collating_sequence_n); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->collating_sequence_keys != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,collating_sequence_keys); + + if (ptr->collating_sequence_keys == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->collating_sequence_keys); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->description_entry != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,description_entry); + + if (ptr->description_entry == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->description_entry); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->record != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,record); + + if (ptr->record == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->record); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->record_depending != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,record_depending); + + if (ptr->record_depending == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->record_depending); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->reports != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,reports); + + if (ptr->reports == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->reports); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->linage != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,linage); + + if (ptr->linage == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->linage); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->linage_ctr != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,linage_ctr); + + if (ptr->linage_ctr == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->linage_ctr); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->latfoot != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,latfoot); + + if (ptr->latfoot == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->latfoot); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->lattop != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,lattop); + + if (ptr->lattop == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->lattop); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->latbot != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,latbot); + + if (ptr->latbot == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->latbot); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->extfh != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,extfh); + + if (ptr->extfh == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->extfh); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->handler != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,handler); + + if (ptr->handler == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->handler); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->handler_prog != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,handler_prog); + + if (ptr->handler_prog == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_program_ptr (indent+2, ptr->handler_prog); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->debug_section != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,debug_section); + + if (ptr->debug_section == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->debug_section); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->code_set != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,code_set); + + if (ptr->code_set == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_alphabet_name_ptr (indent+2, ptr->code_set); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->code_set_items != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,code_set_items); + + if (ptr->code_set_items == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_list_ptr (indent+2, ptr->code_set_items); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,xref); + + print_struct_cb_xref (indent+2, 0, &ptr->xref); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->record_min != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,record_min); + + print_int (indent+2, ptr->record_min); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->record_max != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,record_max); + + print_int (indent+2, ptr->record_max); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->optional != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,optional); + + print_int (indent+2, ptr->optional); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,organization); + + print_enum_cob_file_org (indent+2, ptr->organization); + + PRINT_STRUCT_FIELD_END(indent); + + PRINT_STRUCT_FIELD_BEGIN(indent,access_mode); + + print_enum_cob_file_access_mode (indent+2, ptr->access_mode); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->lock_mode != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,lock_mode); + + print_int (indent+2, ptr->lock_mode); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->special != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,special); + + print_int (indent+2, ptr->special); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->same_clause != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,same_clause); + + print_int (indent+2, ptr->same_clause); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,assign_type); + + print_enum_cb_assign_type (indent+2, ptr->assign_type); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->flag_finalized != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_finalized); + + print_int (indent, ptr->flag_finalized); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_external != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_external); + + print_int (indent, ptr->flag_external); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_ext_assign != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_ext_assign); + + print_int (indent, ptr->flag_ext_assign); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_fileid != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_fileid); + + print_int (indent, ptr->flag_fileid); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_global != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_global); + + print_int (indent, ptr->flag_global); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_fl_debug != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_fl_debug); + + print_int (indent, ptr->flag_fl_debug); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_line_adv != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_line_adv); + + print_int (indent, ptr->flag_line_adv); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_delimiter != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_delimiter); + + print_int (indent, ptr->flag_delimiter); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_report != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_report); + + print_int (indent, ptr->flag_report); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_check_record_varying_limits != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_check_record_varying_limits); + + print_int (indent, ptr->flag_check_record_varying_limits); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_assign_no_keyword != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_assign_no_keyword); + + print_int (indent, ptr->flag_assign_no_keyword); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->exception_table != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,exception_table); + + if (ptr->exception_table == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_exception_ptr (indent+2, ptr->exception_table); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_cd (int indent, int ptr_uid, struct cb_cd *ptr); +static void print_struct_cb_cd_ptr (int indent, struct cb_cd *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_cd*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_cd (indent, ptr_uid, ptr); +} + +static void print_struct_cb_cd (int indent, int ptr_uid, struct cb_cd *ptr){ + PRINT_STRUCT_TY("struct cb_cd"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->record != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,record); + + if (ptr->record == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->record); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->debug_section != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,debug_section); + + if (ptr->debug_section == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->debug_section); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_field_debug != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_field_debug); + + print_int (indent+2, ptr->flag_field_debug); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_key (int indent, int ptr_uid, struct cb_key *ptr); +static void print_struct_cb_key_ptr (int indent, struct cb_key *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_key*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_key (indent, ptr_uid, ptr); +} + +static void print_struct_cb_key (int indent, int ptr_uid, struct cb_key *ptr){ + PRINT_STRUCT_TY("struct cb_key"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->key != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,key); + + if (ptr->key == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->key); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->ref != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,ref); + + if (ptr->ref == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->ref); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->val != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,val); + + if (ptr->val == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->val); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->dir != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,dir); + + print_int (indent+2, ptr->dir); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_picture (int indent, int ptr_uid, struct cb_picture *ptr); +static void print_struct_cb_picture_ptr (int indent, struct cb_picture *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_picture*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_picture (indent, ptr_uid, ptr); +} + +static void print_struct___cob_pic_symbol (int indent, int ptr_uid, struct __cob_pic_symbol *ptr); +static void print_struct___cob_pic_symbol_ptr (int indent, struct __cob_pic_symbol *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct __cob_pic_symbol*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct___cob_pic_symbol (indent, ptr_uid, ptr); +} + +static void print_struct___cob_pic_symbol (int indent, int ptr_uid, struct __cob_pic_symbol *ptr){ + PRINT_STRUCT_TY("struct __cob_pic_symbol"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->symbol != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,symbol); + + print_char (indent+2, ptr->symbol); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->times_repeated != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,times_repeated); + + print_int (indent+2, ptr->times_repeated); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_picture (int indent, int ptr_uid, struct cb_picture *ptr){ + PRINT_STRUCT_TY("struct cb_picture"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->orig != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,orig); + + print_char_ptr (indent+2, ptr->orig); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->str != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,str); + + if (ptr->str == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct___cob_pic_symbol_ptr (indent+2, ptr->str); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->size != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,size); + + print_int (indent+2, ptr->size); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->lenstr != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,lenstr); + + print_int (indent+2, ptr->lenstr); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,category); + + print_enum_cb_category (indent+2, ptr->category); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->digits != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,digits); + + print_uint (indent+2, ptr->digits); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->scale != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,scale); + + print_int (indent+2, ptr->scale); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->have_sign != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,have_sign); + + print_uint (indent+2, ptr->have_sign); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_calculated != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_calculated); + + print_int (indent, ptr->flag_is_calculated); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->variable_length != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,variable_length); + + print_int (indent, ptr->variable_length); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_report (int indent, int ptr_uid, struct cb_report *ptr); +static void print_struct_cb_report_ptr (int indent, struct cb_report *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_report*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_report (indent, ptr_uid, ptr); +} + +static void print_struct_cb_report (int indent, int ptr_uid, struct cb_report *ptr){ + PRINT_STRUCT_TY("struct cb_report"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cname != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cname); + + print_char_ptr (indent+2, ptr->cname); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->file != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,file); + + if (ptr->file == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_file_ptr (indent+2, ptr->file); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->line_counter != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,line_counter); + + if (ptr->line_counter == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->line_counter); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->page_counter != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,page_counter); + + if (ptr->page_counter == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->page_counter); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->code_clause != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,code_clause); + + if (ptr->code_clause == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->code_clause); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->controls != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,controls); + + if (ptr->controls == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->controls); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->t_lines != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,t_lines); + + if (ptr->t_lines == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->t_lines); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->t_columns != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,t_columns); + + if (ptr->t_columns == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->t_columns); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->t_heading != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,t_heading); + + if (ptr->t_heading == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->t_heading); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->t_first_detail != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,t_first_detail); + + if (ptr->t_first_detail == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->t_first_detail); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->t_last_control != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,t_last_control); + + if (ptr->t_last_control == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->t_last_control); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->t_last_detail != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,t_last_detail); + + if (ptr->t_last_detail == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->t_last_detail); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->t_footing != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,t_footing); + + if (ptr->t_footing == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->t_footing); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->lines != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,lines); + + print_int (indent+2, ptr->lines); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->columns != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,columns); + + print_int (indent+2, ptr->columns); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->heading != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,heading); + + print_int (indent+2, ptr->heading); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->first_detail != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,first_detail); + + print_int (indent+2, ptr->first_detail); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->last_control != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,last_control); + + print_int (indent+2, ptr->last_control); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->last_detail != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,last_detail); + + print_int (indent+2, ptr->last_detail); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->footing != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,footing); + + print_int (indent+2, ptr->footing); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->records != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,records); + + if (ptr->records == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->records); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->num_lines != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,num_lines); + + print_int (indent+2, ptr->num_lines); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->line_ids != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,line_ids); + + print_cb_field_ptr2 (indent+2, ptr->line_ids); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->num_sums != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,num_sums); + + print_int (indent+2, ptr->num_sums); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->sums != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,sums); + + print_cb_field_ptr2 (indent+2, ptr->sums); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->rcsz != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,rcsz); + + print_int (indent+2, ptr->rcsz); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,id); + + print_int (indent+2, ptr->id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->control_final != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,control_final); + + print_int (indent, ptr->control_final); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->global != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,global); + + print_int (indent, ptr->global); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->has_declarative != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,has_declarative); + + print_int (indent, ptr->has_declarative); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->has_detail != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,has_detail); + + print_int (indent, ptr->has_detail); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->has_source_move != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,has_source_move); + + print_int (indent, ptr->has_source_move); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->was_checked != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,was_checked); + + print_int (indent, ptr->was_checked); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_enum_cb_index_type (int indent, enum cb_index_type x){ + const char *s = NULL; + switch (x){ + + case CB_NORMAL_INDEX: s = "CB_NORMAL_INDEX"; break; + + case CB_INT_INDEX: s = "CB_INT_INDEX"; break; + + case CB_STATIC_INT_INDEX: s = "CB_STATIC_INT_INDEX"; break; + + case CB_STATIC_INT_VARYING: s = "CB_STATIC_INT_VARYING"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cb_storage (int indent, enum cb_storage x){ + const char *s = NULL; + switch (x){ + + case CB_STORAGE_CONSTANT: s = "CB_STORAGE_CONSTANT"; break; + + case CB_STORAGE_FILE: s = "CB_STORAGE_FILE"; break; + + case CB_STORAGE_WORKING: s = "CB_STORAGE_WORKING"; break; + + case CB_STORAGE_LOCAL: s = "CB_STORAGE_LOCAL"; break; + + case CB_STORAGE_LINKAGE: s = "CB_STORAGE_LINKAGE"; break; + + case CB_STORAGE_SCREEN: s = "CB_STORAGE_SCREEN"; break; + + case CB_STORAGE_REPORT: s = "CB_STORAGE_REPORT"; break; + + case CB_STORAGE_COMMUNICATION: s = "CB_STORAGE_COMMUNICATION"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cb_usage (int indent, enum cb_usage x){ + const char *s = NULL; + switch (x){ + + case CB_USAGE_BINARY: s = "CB_USAGE_BINARY"; break; + + case CB_USAGE_BIT: s = "CB_USAGE_BIT"; break; + + case CB_USAGE_COMP_5: s = "CB_USAGE_COMP_5"; break; + + case CB_USAGE_COMP_X: s = "CB_USAGE_COMP_X"; break; + + case CB_USAGE_DISPLAY: s = "CB_USAGE_DISPLAY"; break; + + case CB_USAGE_FLOAT: s = "CB_USAGE_FLOAT"; break; + + case CB_USAGE_DOUBLE: s = "CB_USAGE_DOUBLE"; break; + + case CB_USAGE_INDEX: s = "CB_USAGE_INDEX"; break; + + case CB_USAGE_NATIONAL: s = "CB_USAGE_NATIONAL"; break; + + case CB_USAGE_OBJECT: s = "CB_USAGE_OBJECT"; break; + + case CB_USAGE_PACKED: s = "CB_USAGE_PACKED"; break; + + case CB_USAGE_POINTER: s = "CB_USAGE_POINTER"; break; + + case CB_USAGE_LENGTH: s = "CB_USAGE_LENGTH"; break; + + case CB_USAGE_PROGRAM_POINTER: s = "CB_USAGE_PROGRAM_POINTER"; break; + + case CB_USAGE_UNSIGNED_CHAR: s = "CB_USAGE_UNSIGNED_CHAR"; break; + + case CB_USAGE_SIGNED_CHAR: s = "CB_USAGE_SIGNED_CHAR"; break; + + case CB_USAGE_UNSIGNED_SHORT: s = "CB_USAGE_UNSIGNED_SHORT"; break; + + case CB_USAGE_SIGNED_SHORT: s = "CB_USAGE_SIGNED_SHORT"; break; + + case CB_USAGE_UNSIGNED_INT: s = "CB_USAGE_UNSIGNED_INT"; break; + + case CB_USAGE_SIGNED_INT: s = "CB_USAGE_SIGNED_INT"; break; + + case CB_USAGE_UNSIGNED_LONG: s = "CB_USAGE_UNSIGNED_LONG"; break; + + case CB_USAGE_SIGNED_LONG: s = "CB_USAGE_SIGNED_LONG"; break; + + case CB_USAGE_COMP_6: s = "CB_USAGE_COMP_6"; break; + + case CB_USAGE_FP_DEC64: s = "CB_USAGE_FP_DEC64"; break; + + case CB_USAGE_FP_DEC128: s = "CB_USAGE_FP_DEC128"; break; + + case CB_USAGE_FP_BIN32: s = "CB_USAGE_FP_BIN32"; break; + + case CB_USAGE_FP_BIN64: s = "CB_USAGE_FP_BIN64"; break; + + case CB_USAGE_FP_BIN128: s = "CB_USAGE_FP_BIN128"; break; + + case CB_USAGE_LONG_DOUBLE: s = "CB_USAGE_LONG_DOUBLE"; break; + + case CB_USAGE_HNDL: s = "CB_USAGE_HNDL"; break; + + case CB_USAGE_HNDL_WINDOW: s = "CB_USAGE_HNDL_WINDOW"; break; + + case CB_USAGE_HNDL_SUBWINDOW: s = "CB_USAGE_HNDL_SUBWINDOW"; break; + + case CB_USAGE_HNDL_FONT: s = "CB_USAGE_HNDL_FONT"; break; + + case CB_USAGE_HNDL_THREAD: s = "CB_USAGE_HNDL_THREAD"; break; + + case CB_USAGE_HNDL_MENU: s = "CB_USAGE_HNDL_MENU"; break; + + case CB_USAGE_HNDL_VARIANT: s = "CB_USAGE_HNDL_VARIANT"; break; + + case CB_USAGE_HNDL_LM: s = "CB_USAGE_HNDL_LM"; break; + + case CB_USAGE_COMP_N: s = "CB_USAGE_COMP_N"; break; + + case CB_USAGE_ERROR: s = "CB_USAGE_ERROR"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_field (int indent, int ptr_uid, struct cb_field *ptr){ + PRINT_STRUCT_TY("struct cb_field"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->ename != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,ename); + + print_char_ptr (indent+2, ptr->ename); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->depending != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,depending); + + if (ptr->depending == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->depending); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->values != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,values); + + if (ptr->values == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->values); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->false_88 != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,false_88); + + if (ptr->false_88 == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->false_88); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->index_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,index_list); + + if (ptr->index_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->index_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->external_form_identifier != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,external_form_identifier); + + if (ptr->external_form_identifier == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->external_form_identifier); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->parent != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,parent); + + if (ptr->parent == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->parent); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->children != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,children); + + if (ptr->children == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->children); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->validation != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,validation); + + if (ptr->validation == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->validation); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->sister != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,sister); + + if (ptr->sister == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->sister); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->redefines != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,redefines); + + if (ptr->redefines == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->redefines); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->rename_thru != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,rename_thru); + + if (ptr->rename_thru == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->rename_thru); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->index_qual != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,index_qual); + + if (ptr->index_qual == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->index_qual); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->file != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,file); + + if (ptr->file == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_file_ptr (indent+2, ptr->file); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cd != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cd); + + if (ptr->cd == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_cd_ptr (indent+2, ptr->cd); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->keys != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,keys); + + if (ptr->keys == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_key_ptr (indent+2, ptr->keys); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->pic != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,pic); + + if (ptr->pic == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_picture_ptr (indent+2, ptr->pic); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->vsize != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,vsize); + + if (ptr->vsize == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->vsize); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->debug_section != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,debug_section); + + if (ptr->debug_section == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->debug_section); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report); + + if (ptr->report == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_report_ptr (indent+2, ptr->report); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,xref); + + print_struct_cb_xref (indent+2, 0, &ptr->xref); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->screen_line != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_line); + + if (ptr->screen_line == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_line); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_column != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_column); + + if (ptr->screen_column == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_column); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_from != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_from); + + if (ptr->screen_from == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_from); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_to != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_to); + + if (ptr->screen_to == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_to); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_foreg != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_foreg); + + if (ptr->screen_foreg == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_foreg); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_backg != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_backg); + + if (ptr->screen_backg == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_backg); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_prompt != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_prompt); + + if (ptr->screen_prompt == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_prompt); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_control != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_control); + + if (ptr->screen_control == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_control); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_color != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_color); + + if (ptr->screen_color == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->screen_color); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_source != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_source); + + if (ptr->report_source == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_source); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_from != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_from); + + if (ptr->report_from == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_from); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_sum_counter != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_sum_counter); + + if (ptr->report_sum_counter == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_sum_counter); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_sum_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_sum_list); + + if (ptr->report_sum_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_sum_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_sum_upon != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_sum_upon); + + if (ptr->report_sum_upon == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_sum_upon); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_reset != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_reset); + + if (ptr->report_reset == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_reset); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_control != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_control); + + if (ptr->report_control == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_control); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_when != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_when); + + if (ptr->report_when == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_when); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_column_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_column_list); + + if (ptr->report_column_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_column_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_vary_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_vary_list); + + if (ptr->report_vary_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->report_vary_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->same_as != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,same_as); + + if (ptr->same_as == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->same_as); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->external_definition != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,external_definition); + + if (ptr->external_definition == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->external_definition); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->like_modifier != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,like_modifier); + + if (ptr->like_modifier == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->like_modifier); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,id); + + print_int (indent+2, ptr->id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->size != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,size); + + print_int (indent+2, ptr->size); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->level != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,level); + + print_int (indent+2, ptr->level); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->memory_size != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,memory_size); + + print_int (indent+2, ptr->memory_size); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->offset != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,offset); + + print_int (indent+2, ptr->offset); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->occurs_min != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,occurs_min); + + print_int (indent+2, ptr->occurs_min); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->occurs_max != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,occurs_max); + + print_int (indent+2, ptr->occurs_max); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->indexes != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,indexes); + + print_int (indent+2, ptr->indexes); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->count != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,count); + + print_int (indent+2, ptr->count); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->mem_offset != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,mem_offset); + + print_int (indent+2, ptr->mem_offset); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->nkeys != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,nkeys); + + print_int (indent+2, ptr->nkeys); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->param_num != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,param_num); + + print_int (indent+2, ptr->param_num); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screen_flag != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screen_flag); + + print_long_long_ptr0 (indent+2, ptr->screen_flag); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_flag != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_flag); + + print_int (indent+2, ptr->report_flag); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_line != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_line); + + print_int (indent+2, ptr->report_line); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_column != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_column); + + print_int (indent+2, ptr->report_column); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_num_col != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_num_col); + + print_int (indent+2, ptr->report_num_col); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->report_decl_id != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,report_decl_id); + + print_int (indent+2, ptr->report_decl_id); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->step_count != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,step_count); + + print_int (indent+2, ptr->step_count); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->next_group_line != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,next_group_line); + + print_int (indent+2, ptr->next_group_line); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->vaddr != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,vaddr); + + print_uint (indent+2, ptr->vaddr); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->odo_level != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,odo_level); + + print_uint (indent+2, ptr->odo_level); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,index_type); + + print_enum_cb_index_type (indent+2, ptr->index_type); + + PRINT_STRUCT_FIELD_END(indent); + + PRINT_STRUCT_FIELD_BEGIN(indent,storage); + + print_enum_cb_storage (indent+2, ptr->storage); + + PRINT_STRUCT_FIELD_END(indent); + + PRINT_STRUCT_FIELD_BEGIN(indent,usage); + + print_enum_cb_usage (indent+2, ptr->usage); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->flag_base != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_base); + + print_uchar (indent+2, ptr->flag_base); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_external != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_external); + + print_uchar (indent+2, ptr->flag_external); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_local_storage != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_local_storage); + + print_uchar (indent+2, ptr->flag_local_storage); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_global != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_global); + + print_uchar (indent+2, ptr->flag_is_global); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_local != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_local); + + print_int (indent, ptr->flag_local); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_occurs != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_occurs); + + print_int (indent, ptr->flag_occurs); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_sign_clause != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_sign_clause); + + print_int (indent, ptr->flag_sign_clause); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_sign_separate != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_sign_separate); + + print_int (indent, ptr->flag_sign_separate); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_sign_leading != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_sign_leading); + + print_int (indent, ptr->flag_sign_leading); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_blank_zero != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_blank_zero); + + print_int (indent, ptr->flag_blank_zero); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_justified != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_justified); + + print_int (indent, ptr->flag_justified); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_binary_swap != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_binary_swap); + + print_int (indent, ptr->flag_binary_swap); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_real_binary != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_real_binary); + + print_int (indent, ptr->flag_real_binary); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_pointer != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_pointer); + + print_int (indent, ptr->flag_is_pointer); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_item_78 != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_item_78); + + print_int (indent, ptr->flag_item_78); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_any_length != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_any_length); + + print_int (indent, ptr->flag_any_length); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_item_based != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_item_based); + + print_int (indent, ptr->flag_item_based); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_external_form != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_external_form); + + print_int (indent, ptr->flag_is_external_form); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_filler != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_filler); + + print_int (indent, ptr->flag_filler); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_synchronized != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_synchronized); + + print_int (indent, ptr->flag_synchronized); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_invalid != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_invalid); + + print_int (indent, ptr->flag_invalid); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_field != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_field); + + print_int (indent, ptr->flag_field); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_chained != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_chained); + + print_int (indent, ptr->flag_chained); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_anylen_done != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_anylen_done); + + print_int (indent, ptr->flag_anylen_done); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_typedef != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_typedef); + + print_int (indent, ptr->flag_is_typedef); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_c_long != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_c_long); + + print_int (indent, ptr->flag_is_c_long); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_pdiv_parm != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_pdiv_parm); + + print_int (indent, ptr->flag_is_pdiv_parm); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_pdiv_opt != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_pdiv_opt); + + print_int (indent, ptr->flag_is_pdiv_opt); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_indexed_by != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_indexed_by); + + print_int (indent, ptr->flag_indexed_by); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_local_alloced != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_local_alloced); + + print_int (indent, ptr->flag_local_alloced); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_no_init != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_no_init); + + print_int (indent, ptr->flag_no_init); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_vsize_done != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_vsize_done); + + print_int (indent, ptr->flag_vsize_done); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_vaddr_done != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_vaddr_done); + + print_int (indent, ptr->flag_vaddr_done); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_odo_relative != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_odo_relative); + + print_int (indent, ptr->flag_odo_relative); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_field_debug != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_field_debug); + + print_int (indent, ptr->flag_field_debug); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_all_debug != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_all_debug); + + print_int (indent, ptr->flag_all_debug); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_no_field != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_no_field); + + print_int (indent, ptr->flag_no_field); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_any_numeric != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_any_numeric); + + print_int (indent, ptr->flag_any_numeric); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_returning != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_returning); + + print_int (indent, ptr->flag_is_returning); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_unbounded != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_unbounded); + + print_int (indent, ptr->flag_unbounded); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_above_unbounded != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_above_unbounded); + + print_int (indent, ptr->flag_above_unbounded); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_volatile != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_volatile); + + print_int (indent, ptr->flag_volatile); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_constant != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_constant); + + print_int (indent, ptr->flag_constant); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_internal_constant != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_internal_constant); + + print_int (indent, ptr->flag_internal_constant); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_used_in_call != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_used_in_call); + + print_int (indent, ptr->flag_used_in_call); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_sync_left != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_sync_left); + + print_int (indent, ptr->flag_sync_left); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_sync_right != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_sync_right); + + print_int (indent, ptr->flag_sync_right); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_internal_register != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_internal_register); + + print_int (indent, ptr->flag_internal_register); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_picture_l != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_picture_l); + + print_int (indent, ptr->flag_picture_l); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_comp_1 != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_comp_1); + + print_int (indent, ptr->flag_comp_1); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_verified != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_verified); + + print_int (indent, ptr->flag_is_verified); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_had_definition_note != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_had_definition_note); + + print_int (indent, ptr->flag_had_definition_note); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_reference (int indent, int ptr_uid, struct cb_reference *ptr); +static void print_struct_cb_reference_ptr (int indent, struct cb_reference *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_reference*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_reference (indent, ptr_uid, ptr); +} + +static void print_enum_cob_statement (int indent, enum cob_statement x){ + const char *s = NULL; + switch (x){ + + case STMT_UNKNOWN: s = "STMT_UNKNOWN"; break; + + case STMT_ADD: s = "STMT_ADD"; break; + + case STMT_SUBTRACT: s = "STMT_SUBTRACT"; break; + + case STMT_MULTIPLY: s = "STMT_MULTIPLY"; break; + + case STMT_DIVIDE: s = "STMT_DIVIDE"; break; + + case STMT_COMPUTE: s = "STMT_COMPUTE"; break; + + case STMT_MOVE: s = "STMT_MOVE"; break; + + case STMT_INITIALIZE: s = "STMT_INITIALIZE"; break; + + case STMT_STRING: s = "STMT_STRING"; break; + + case STMT_UNSTRING: s = "STMT_UNSTRING"; break; + + case STMT_INSPECT: s = "STMT_INSPECT"; break; + + case STMT_EXAMINE: s = "STMT_EXAMINE"; break; + + case STMT_VALIDATE: s = "STMT_VALIDATE"; break; + + case STMT_CONTINUE: s = "STMT_CONTINUE"; break; + + case STMT_CONTINUE_AFTER: s = "STMT_CONTINUE_AFTER"; break; + + case STMT_ACCEPT: s = "STMT_ACCEPT"; break; + + case STMT_DISPLAY: s = "STMT_DISPLAY"; break; + + case STMT_EXHIBIT: s = "STMT_EXHIBIT"; break; + + case STMT_STOP: s = "STMT_STOP"; break; + + case STMT_STOP_ERROR: s = "STMT_STOP_ERROR"; break; + + case STMT_DISPLAY_WINDOW: s = "STMT_DISPLAY_WINDOW"; break; + + case STMT_INQUIRE: s = "STMT_INQUIRE"; break; + + case STMT_DESTROY: s = "STMT_DESTROY"; break; + + case STMT_MODIFY: s = "STMT_MODIFY"; break; + + case STMT_CLOSE_WINDOW: s = "STMT_CLOSE_WINDOW"; break; + + case STMT_SEARCH: s = "STMT_SEARCH"; break; + + case STMT_SEARCH_ALL: s = "STMT_SEARCH_ALL"; break; + + case STMT_SEARCH_VARYING: s = "STMT_SEARCH_VARYING"; break; + + case STMT_AT_END: s = "STMT_AT_END"; break; + + case STMT_NEXT_SENTENCE: s = "STMT_NEXT_SENTENCE"; break; + + case STMT_CALL: s = "STMT_CALL"; break; + + case STMT_CANCEL: s = "STMT_CANCEL"; break; + + case STMT_CHAIN: s = "STMT_CHAIN"; break; + + case STMT_GOBACK: s = "STMT_GOBACK"; break; + + case STMT_EXIT_PROGRAM: s = "STMT_EXIT_PROGRAM"; break; + + case STMT_EXIT_FUNCTION: s = "STMT_EXIT_FUNCTION"; break; + + case STMT_STOP_RUN: s = "STMT_STOP_RUN"; break; + + case STMT_STOP_THREAD: s = "STMT_STOP_THREAD"; break; + + case STMT_LOCK_THREAD: s = "STMT_LOCK_THREAD"; break; + + case STMT_WAITH_THREAD: s = "STMT_WAITH_THREAD"; break; + + case STMT_RAISE: s = "STMT_RAISE"; break; + + case STMT_RESUME: s = "STMT_RESUME"; break; + + case STMT_DISABLE: s = "STMT_DISABLE"; break; + + case STMT_ENABLE: s = "STMT_ENABLE"; break; + + case STMT_PURGE: s = "STMT_PURGE"; break; + + case STMT_SEND: s = "STMT_SEND"; break; + + case STMT_RECEIVE: s = "STMT_RECEIVE"; break; + + case STMT_END: s = "STMT_END"; break; + + case STMT_NOTE: s = "STMT_NOTE"; break; + + case STMT_PERFORM: s = "STMT_PERFORM"; break; + + case STMT_UNTIL: s = "STMT_UNTIL"; break; + + case STMT_VARYING: s = "STMT_VARYING"; break; + + case STMT_EXIT_PERFORM: s = "STMT_EXIT_PERFORM"; break; + + case STMT_END_PERFORM: s = "STMT_END_PERFORM"; break; + + case STMT_SET: s = "STMT_SET"; break; + + case STMT_END_SET: s = "STMT_END_SET"; break; + + case STMT_ENTER: s = "STMT_ENTER"; break; + + case STMT_INVOKE: s = "STMT_INVOKE"; break; + + case STMT_END_INVOKE: s = "STMT_END_INVOKE"; break; + + case STMT_ENTRY: s = "STMT_ENTRY"; break; + + case STMT_ENTRY_FOR_GO_TO: s = "STMT_ENTRY_FOR_GO_TO"; break; + + case STMT_GO_TO: s = "STMT_GO_TO"; break; + + case STMT_ALTER: s = "STMT_ALTER"; break; + + case STMT_IF: s = "STMT_IF"; break; + + case STMT_ELSE: s = "STMT_ELSE"; break; + + case STMT_END_IF: s = "STMT_END_IF"; break; + + case STMT_VALUE_THRU: s = "STMT_VALUE_THRU"; break; + + case STMT_EVALUATE: s = "STMT_EVALUATE"; break; + + case STMT_WHEN: s = "STMT_WHEN"; break; + + case STMT_WHEN_OTHER: s = "STMT_WHEN_OTHER"; break; + + case STMT_END_EVALUATE: s = "STMT_END_EVALUATE"; break; + + case STMT_EXECUTE: s = "STMT_EXECUTE"; break; + + case STMT_EXIT: s = "STMT_EXIT"; break; + + case STMT_EXIT_SECTION: s = "STMT_EXIT_SECTION"; break; + + case STMT_EXIT_PARAGRAPH: s = "STMT_EXIT_PARAGRAPH"; break; + + case STMT_EXIT_PERFORM_CYCLE: s = "STMT_EXIT_PERFORM_CYCLE"; break; + + case STMT_OPEN: s = "STMT_OPEN"; break; + + case STMT_REWRITE: s = "STMT_REWRITE"; break; + + case STMT_WRITE: s = "STMT_WRITE"; break; + + case STMT_DELETE: s = "STMT_DELETE"; break; + + case STMT_CLOSE: s = "STMT_CLOSE"; break; + + case STMT_START: s = "STMT_START"; break; + + case STMT_READ: s = "STMT_READ"; break; + + case STMT_UNLOCK: s = "STMT_UNLOCK"; break; + + case STMT_LOCK_FILE: s = "STMT_LOCK_FILE"; break; + + case STMT_DELETE_FILE: s = "STMT_DELETE_FILE"; break; + + case STMT_ROLLBACK: s = "STMT_ROLLBACK"; break; + + case STMT_COMMIT: s = "STMT_COMMIT"; break; + + case STMT_ALLOCATE: s = "STMT_ALLOCATE"; break; + + case STMT_FREE: s = "STMT_FREE"; break; + + case STMT_INITIATE: s = "STMT_INITIATE"; break; + + case STMT_GENERATE: s = "STMT_GENERATE"; break; + + case STMT_TERMINATE: s = "STMT_TERMINATE"; break; + + case STMT_SUPPRESS: s = "STMT_SUPPRESS"; break; + + case STMT_PRESENT_WHEN: s = "STMT_PRESENT_WHEN"; break; + + case STMT_SORT: s = "STMT_SORT"; break; + + case STMT_MERGE: s = "STMT_MERGE"; break; + + case STMT_RELEASE: s = "STMT_RELEASE"; break; + + case STMT_RETURN: s = "STMT_RETURN"; break; + + case STMT_READY_TRACE: s = "STMT_READY_TRACE"; break; + + case STMT_RESET_TRACE: s = "STMT_RESET_TRACE"; break; + + case STMT_OTHERWISE: s = "STMT_OTHERWISE"; break; + + case STMT_RECOVER: s = "STMT_RECOVER"; break; + + case STMT_SERVICE: s = "STMT_SERVICE"; break; + + case STMT_TRANSFORM: s = "STMT_TRANSFORM"; break; + + case STMT_JSON_GENERATE: s = "STMT_JSON_GENERATE"; break; + + case STMT_JSON_PARSE: s = "STMT_JSON_PARSE"; break; + + case STMT_XML_GENERATE: s = "STMT_XML_GENERATE"; break; + + case STMT_XML_PARSE: s = "STMT_XML_PARSE"; break; + + case STMT_INIT_STORAGE: s = "STMT_INIT_STORAGE"; break; + + case STMT_BEFORE_CALL: s = "STMT_BEFORE_CALL"; break; + + case STMT_BEFORE_UDF: s = "STMT_BEFORE_UDF"; break; + + case STMT_MAX_ENTRY: s = "STMT_MAX_ENTRY"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_reference (int indent, int ptr_uid, struct cb_reference *ptr){ + PRINT_STRUCT_TY("struct cb_reference"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->chain != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,chain); + + if (ptr->chain == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->chain); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->value != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,value); + + if (ptr->value == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->value); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->subs != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,subs); + + if (ptr->subs == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->subs); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->offset != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,offset); + + if (ptr->offset == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->offset); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->length != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,length); + + if (ptr->length == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->length); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->check != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,check); + + if (ptr->check == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->check); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,statement); + + print_enum_cob_statement (indent+2, ptr->statement); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->word != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,word); + + if (ptr->word == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_word_ptr (indent+2, ptr->word); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->section != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,section); + + if (ptr->section == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->section); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->paragraph != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,paragraph); + + if (ptr->paragraph == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->paragraph); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->debug_section != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,debug_section); + + if (ptr->debug_section == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->debug_section); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,hashval); + + print_size_t (indent+2, ptr->hashval); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->flag_receiving != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_receiving); + + print_int (indent, ptr->flag_receiving); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_all != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_all); + + print_int (indent, ptr->flag_all); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_in_decl != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_in_decl); + + print_int (indent, ptr->flag_in_decl); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_alter_code != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_alter_code); + + print_int (indent, ptr->flag_alter_code); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_debug_code != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_debug_code); + + print_int (indent, ptr->flag_debug_code); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_all_debug != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_all_debug); + + print_int (indent, ptr->flag_all_debug); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_target != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_target); + + print_int (indent, ptr->flag_target); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_optional != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_optional); + + print_int (indent, ptr->flag_optional); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_ignored != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_ignored); + + print_int (indent, ptr->flag_ignored); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_filler_ref != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_filler_ref); + + print_int (indent, ptr->flag_filler_ref); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_duped != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_duped); + + print_int (indent, ptr->flag_duped); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_binary_op (int indent, int ptr_uid, struct cb_binary_op *ptr); +static void print_struct_cb_binary_op_ptr (int indent, struct cb_binary_op *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_binary_op*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_binary_op (indent, ptr_uid, ptr); +} + +static void print_enum_cb_binary_op_op (int indent, enum cb_binary_op_op x){ + const char *s = NULL; + switch (x){ + + case BOP_INVALID: s = "BOP_INVALID"; break; + + case BOP_PLUS: s = "BOP_PLUS"; break; + + case BOP_MINUS: s = "BOP_MINUS"; break; + + case BOP_MULT: s = "BOP_MULT"; break; + + case BOP_DIV: s = "BOP_DIV"; break; + + case BOP_POW: s = "BOP_POW"; break; + + case BOP_EQ: s = "BOP_EQ"; break; + + case BOP_GT: s = "BOP_GT"; break; + + case BOP_LT: s = "BOP_LT"; break; + + case BOP_LE: s = "BOP_LE"; break; + + case BOP_GE: s = "BOP_GE"; break; + + case BOP_NE: s = "BOP_NE"; break; + + case BOP_NOT: s = "BOP_NOT"; break; + + case BOP_AND: s = "BOP_AND"; break; + + case BOP_OR: s = "BOP_OR"; break; + + case BOP_PARENS: s = "BOP_PARENS"; break; + + case BOP_BITWISE_NOT: s = "BOP_BITWISE_NOT"; break; + + case BOP_BITWISE_AND: s = "BOP_BITWISE_AND"; break; + + case BOP_BITWISE_OR: s = "BOP_BITWISE_OR"; break; + + case BOP_BITWISE_XOR: s = "BOP_BITWISE_XOR"; break; + + case BOP_SHIFT_L: s = "BOP_SHIFT_L"; break; + + case BOP_SHIFT_R: s = "BOP_SHIFT_R"; break; + + case BOP_SHIFT_LC: s = "BOP_SHIFT_LC"; break; + + case BOP_SHIFT_RC: s = "BOP_SHIFT_RC"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cb_binary_op_flag (int indent, enum cb_binary_op_flag x){ + const char *s = NULL; + switch (x){ + + case BOP_RESOLVE_AS_INTEGER: s = "BOP_RESOLVE_AS_INTEGER"; break; + + case BOP_OPERANDS_SWAPPED: s = "BOP_OPERANDS_SWAPPED"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_binary_op (int indent, int ptr_uid, struct cb_binary_op *ptr){ + PRINT_STRUCT_TY("struct cb_binary_op"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->x != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,x); + + if (ptr->x == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->x); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->y != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,y); + + if (ptr->y == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->y); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,op); + + print_enum_cb_binary_op_op (indent+2, ptr->op); + + PRINT_STRUCT_FIELD_END(indent); + + PRINT_STRUCT_FIELD_BEGIN(indent,flag); + + print_enum_cb_binary_op_flag (indent+2, ptr->flag); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_funcall (int indent, int ptr_uid, struct cb_funcall *ptr); +static void print_struct_cb_funcall_ptr (int indent, struct cb_funcall *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_funcall*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_funcall (indent, ptr_uid, ptr); +} + +static void print_struct_cb_funcall (int indent, int ptr_uid, struct cb_funcall *ptr){ + PRINT_STRUCT_TY("struct cb_funcall"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->argv != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,argv); + + PRINT_ARRAY_BEGIN(indent); + { + int i; + for (i=0; i<14; i++){ + if (i>0){ + PRINT_ARRAY_SEP(indent); + } + + if (ptr->argv[i] == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->argv[i]); + } + + } + } + PRINT_ARRAY_END(indent); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->argc != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,argc); + + print_int (indent+2, ptr->argc); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->varcnt != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,varcnt); + + print_int (indent+2, ptr->varcnt); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->screenptr != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,screenptr); + + print_uint (indent+2, ptr->screenptr); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->nolitcast != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,nolitcast); + + print_uint (indent+2, ptr->nolitcast); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_cast (int indent, int ptr_uid, struct cb_cast *ptr); +static void print_struct_cb_cast_ptr (int indent, struct cb_cast *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_cast*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_cast (indent, ptr_uid, ptr); +} + +static void print_enum_cb_cast_type (int indent, enum cb_cast_type x){ + const char *s = NULL; + switch (x){ + + case CB_CAST_INTEGER: s = "CB_CAST_INTEGER"; break; + + case CB_CAST_NEGATIVE_INTEGER: s = "CB_CAST_NEGATIVE_INTEGER"; break; + + case CB_CAST_LONG_INT: s = "CB_CAST_LONG_INT"; break; + + case CB_CAST_NEGATIVE_LONG_INT: s = "CB_CAST_NEGATIVE_LONG_INT"; break; + + case CB_CAST_ADDRESS: s = "CB_CAST_ADDRESS"; break; + + case CB_CAST_ADDR_OF_ADDR: s = "CB_CAST_ADDR_OF_ADDR"; break; + + case CB_CAST_LENGTH: s = "CB_CAST_LENGTH"; break; + + case CB_CAST_PROGRAM_POINTER: s = "CB_CAST_PROGRAM_POINTER"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_cast (int indent, int ptr_uid, struct cb_cast *ptr){ + PRINT_STRUCT_TY("struct cb_cast"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->val != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,val); + + if (ptr->val == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->val); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,cast_type); + + print_enum_cb_cast_type (indent+2, ptr->cast_type); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_intrinsic (int indent, int ptr_uid, struct cb_intrinsic *ptr); +static void print_struct_cb_intrinsic_ptr (int indent, struct cb_intrinsic *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_intrinsic*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_intrinsic (indent, ptr_uid, ptr); +} + +static void print_struct_cb_intrinsic_table (int indent, int ptr_uid, struct cb_intrinsic_table *ptr); +static void print_struct_cb_intrinsic_table_ptr (int indent, struct cb_intrinsic_table *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_intrinsic_table*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_intrinsic_table (indent, ptr_uid, ptr); +} + +static void print_enum_cb_intr_enum (int indent, enum cb_intr_enum x){ + const char *s = NULL; + switch (x){ + + case CB_INTR_ABS: s = "CB_INTR_ABS"; break; + + case CB_INTR_ACOS: s = "CB_INTR_ACOS"; break; + + case CB_INTR_ANNUITY: s = "CB_INTR_ANNUITY"; break; + + case CB_INTR_ASIN: s = "CB_INTR_ASIN"; break; + + case CB_INTR_ATAN: s = "CB_INTR_ATAN"; break; + + case CB_INTR_BASECONVERT: s = "CB_INTR_BASECONVERT"; break; + + case CB_INTR_BIT_OF: s = "CB_INTR_BIT_OF"; break; + + case CB_INTR_BIT_TO_CHAR: s = "CB_INTR_BIT_TO_CHAR"; break; + + case CB_INTR_BOOLEAN_OF_INTEGER: s = "CB_INTR_BOOLEAN_OF_INTEGER"; break; + + case CB_INTR_BYTE_LENGTH: s = "CB_INTR_BYTE_LENGTH"; break; + + case CB_INTR_CHAR: s = "CB_INTR_CHAR"; break; + + case CB_INTR_CHAR_NATIONAL: s = "CB_INTR_CHAR_NATIONAL"; break; + + case CB_INTR_COMBINED_DATETIME: s = "CB_INTR_COMBINED_DATETIME"; break; + + case CB_INTR_CONCATENATE: s = "CB_INTR_CONCATENATE"; break; + + case CB_INTR_CONTENT_LENGTH: s = "CB_INTR_CONTENT_LENGTH"; break; + + case CB_INTR_CONTENT_OF: s = "CB_INTR_CONTENT_OF"; break; + + case CB_INTR_CONVERT: s = "CB_INTR_CONVERT"; break; + + case CB_INTR_COS: s = "CB_INTR_COS"; break; + + case CB_INTR_CURRENCY_SYMBOL: s = "CB_INTR_CURRENCY_SYMBOL"; break; + + case CB_INTR_CURRENT_DATE: s = "CB_INTR_CURRENT_DATE"; break; + + case CB_INTR_DATE_OF_INTEGER: s = "CB_INTR_DATE_OF_INTEGER"; break; + + case CB_INTR_DATE_TO_YYYYMMDD: s = "CB_INTR_DATE_TO_YYYYMMDD"; break; + + case CB_INTR_DAY_OF_INTEGER: s = "CB_INTR_DAY_OF_INTEGER"; break; + + case CB_INTR_DAY_TO_YYYYDDD: s = "CB_INTR_DAY_TO_YYYYDDD"; break; + + case CB_INTR_DISPLAY_OF: s = "CB_INTR_DISPLAY_OF"; break; + + case CB_INTR_E: s = "CB_INTR_E"; break; + + case CB_INTR_EXCEPTION_FILE: s = "CB_INTR_EXCEPTION_FILE"; break; + + case CB_INTR_EXCEPTION_FILE_N: s = "CB_INTR_EXCEPTION_FILE_N"; break; + + case CB_INTR_EXCEPTION_LOCATION: s = "CB_INTR_EXCEPTION_LOCATION"; break; + + case CB_INTR_EXCEPTION_LOCATION_N: s = "CB_INTR_EXCEPTION_LOCATION_N"; break; + + case CB_INTR_EXCEPTION_STATEMENT: s = "CB_INTR_EXCEPTION_STATEMENT"; break; + + case CB_INTR_EXCEPTION_STATUS: s = "CB_INTR_EXCEPTION_STATUS"; break; + + case CB_INTR_EXP: s = "CB_INTR_EXP"; break; + + case CB_INTR_EXP10: s = "CB_INTR_EXP10"; break; + + case CB_INTR_FACTORIAL: s = "CB_INTR_FACTORIAL"; break; + + case CB_INTR_FIND_STRING: s = "CB_INTR_FIND_STRING"; break; + + case CB_INTR_FORMATTED_CURRENT_DATE: s = "CB_INTR_FORMATTED_CURRENT_DATE"; break; + + case CB_INTR_FORMATTED_DATE: s = "CB_INTR_FORMATTED_DATE"; break; + + case CB_INTR_FORMATTED_DATETIME: s = "CB_INTR_FORMATTED_DATETIME"; break; + + case CB_INTR_FORMATTED_TIME: s = "CB_INTR_FORMATTED_TIME"; break; + + case CB_INTR_FRACTION_PART: s = "CB_INTR_FRACTION_PART"; break; + + case CB_INTR_HEX_OF: s = "CB_INTR_HEX_OF"; break; + + case CB_INTR_HEX_TO_CHAR: s = "CB_INTR_HEX_TO_CHAR"; break; + + case CB_INTR_HIGHEST_ALGEBRAIC: s = "CB_INTR_HIGHEST_ALGEBRAIC"; break; + + case CB_INTR_INTEGER: s = "CB_INTR_INTEGER"; break; + + case CB_INTR_INTEGER_OF_BOOLEAN: s = "CB_INTR_INTEGER_OF_BOOLEAN"; break; + + case CB_INTR_INTEGER_OF_DATE: s = "CB_INTR_INTEGER_OF_DATE"; break; + + case CB_INTR_INTEGER_OF_DAY: s = "CB_INTR_INTEGER_OF_DAY"; break; + + case CB_INTR_INTEGER_OF_FORMATTED_DATE: s = "CB_INTR_INTEGER_OF_FORMATTED_DATE"; break; + + case CB_INTR_INTEGER_PART: s = "CB_INTR_INTEGER_PART"; break; + + case CB_INTR_LENGTH: s = "CB_INTR_LENGTH"; break; + + case CB_INTR_LOCALE_COMPARE: s = "CB_INTR_LOCALE_COMPARE"; break; + + case CB_INTR_LOCALE_DATE: s = "CB_INTR_LOCALE_DATE"; break; + + case CB_INTR_LOCALE_TIME: s = "CB_INTR_LOCALE_TIME"; break; + + case CB_INTR_LOCALE_TIME_FROM_SECS: s = "CB_INTR_LOCALE_TIME_FROM_SECS"; break; + + case CB_INTR_LOG: s = "CB_INTR_LOG"; break; + + case CB_INTR_LOG10: s = "CB_INTR_LOG10"; break; + + case CB_INTR_LOWER_CASE: s = "CB_INTR_LOWER_CASE"; break; + + case CB_INTR_LOWEST_ALGEBRAIC: s = "CB_INTR_LOWEST_ALGEBRAIC"; break; + + case CB_INTR_MAX: s = "CB_INTR_MAX"; break; + + case CB_INTR_MEAN: s = "CB_INTR_MEAN"; break; + + case CB_INTR_MEDIAN: s = "CB_INTR_MEDIAN"; break; + + case CB_INTR_MIDRANGE: s = "CB_INTR_MIDRANGE"; break; + + case CB_INTR_MIN: s = "CB_INTR_MIN"; break; + + case CB_INTR_MOD: s = "CB_INTR_MOD"; break; + + case CB_INTR_MODULE_CALLER_ID: s = "CB_INTR_MODULE_CALLER_ID"; break; + + case CB_INTR_MODULE_DATE: s = "CB_INTR_MODULE_DATE"; break; + + case CB_INTR_MODULE_FORMATTED_DATE: s = "CB_INTR_MODULE_FORMATTED_DATE"; break; + + case CB_INTR_MODULE_ID: s = "CB_INTR_MODULE_ID"; break; + + case CB_INTR_MODULE_NAME: s = "CB_INTR_MODULE_NAME"; break; + + case CB_INTR_MODULE_PATH: s = "CB_INTR_MODULE_PATH"; break; + + case CB_INTR_MODULE_SOURCE: s = "CB_INTR_MODULE_SOURCE"; break; + + case CB_INTR_MODULE_TIME: s = "CB_INTR_MODULE_TIME"; break; + + case CB_INTR_MON_DECIMAL_POINT: s = "CB_INTR_MON_DECIMAL_POINT"; break; + + case CB_INTR_MON_THOUSANDS_SEP: s = "CB_INTR_MON_THOUSANDS_SEP"; break; + + case CB_INTR_NATIONAL_OF: s = "CB_INTR_NATIONAL_OF"; break; + + case CB_INTR_NUM_DECIMAL_POINT: s = "CB_INTR_NUM_DECIMAL_POINT"; break; + + case CB_INTR_NUM_THOUSANDS_SEP: s = "CB_INTR_NUM_THOUSANDS_SEP"; break; + + case CB_INTR_NUMVAL: s = "CB_INTR_NUMVAL"; break; + + case CB_INTR_NUMVAL_C: s = "CB_INTR_NUMVAL_C"; break; + + case CB_INTR_NUMVAL_F: s = "CB_INTR_NUMVAL_F"; break; + + case CB_INTR_ORD: s = "CB_INTR_ORD"; break; + + case CB_INTR_ORD_MAX: s = "CB_INTR_ORD_MAX"; break; + + case CB_INTR_ORD_MIN: s = "CB_INTR_ORD_MIN"; break; + + case CB_INTR_PI: s = "CB_INTR_PI"; break; + + case CB_INTR_PRESENT_VALUE: s = "CB_INTR_PRESENT_VALUE"; break; + + case CB_INTR_RANDOM: s = "CB_INTR_RANDOM"; break; + + case CB_INTR_RANGE: s = "CB_INTR_RANGE"; break; + + case CB_INTR_REM: s = "CB_INTR_REM"; break; + + case CB_INTR_REVERSE: s = "CB_INTR_REVERSE"; break; + + case CB_INTR_SECONDS_FROM_FORMATTED_TIME: s = "CB_INTR_SECONDS_FROM_FORMATTED_TIME"; break; + + case CB_INTR_SECONDS_PAST_MIDNIGHT: s = "CB_INTR_SECONDS_PAST_MIDNIGHT"; break; + + case CB_INTR_SIGN: s = "CB_INTR_SIGN"; break; + + case CB_INTR_SIN: s = "CB_INTR_SIN"; break; + + case CB_INTR_SQRT: s = "CB_INTR_SQRT"; break; + + case CB_INTR_STANDARD_COMPARE: s = "CB_INTR_STANDARD_COMPARE"; break; + + case CB_INTR_STANDARD_DEVIATION: s = "CB_INTR_STANDARD_DEVIATION"; break; + + case CB_INTR_STORED_CHAR_LENGTH: s = "CB_INTR_STORED_CHAR_LENGTH"; break; + + case CB_INTR_SUBSTITUTE: s = "CB_INTR_SUBSTITUTE"; break; + + case CB_INTR_SUBSTITUTE_CASE: s = "CB_INTR_SUBSTITUTE_CASE"; break; + + case CB_INTR_SUM: s = "CB_INTR_SUM"; break; + + case CB_INTR_TAN: s = "CB_INTR_TAN"; break; + + case CB_INTR_TEST_DATE_YYYYMMDD: s = "CB_INTR_TEST_DATE_YYYYMMDD"; break; + + case CB_INTR_TEST_DAY_YYYYDDD: s = "CB_INTR_TEST_DAY_YYYYDDD"; break; + + case CB_INTR_TEST_FORMATTED_DATETIME: s = "CB_INTR_TEST_FORMATTED_DATETIME"; break; + + case CB_INTR_TEST_NUMVAL: s = "CB_INTR_TEST_NUMVAL"; break; + + case CB_INTR_TEST_NUMVAL_C: s = "CB_INTR_TEST_NUMVAL_C"; break; + + case CB_INTR_TEST_NUMVAL_F: s = "CB_INTR_TEST_NUMVAL_F"; break; + + case CB_INTR_TRIM: s = "CB_INTR_TRIM"; break; + + case CB_INTR_UPPER_CASE: s = "CB_INTR_UPPER_CASE"; break; + + case CB_INTR_USER_FUNCTION: s = "CB_INTR_USER_FUNCTION"; break; + + case CB_INTR_VARIANCE: s = "CB_INTR_VARIANCE"; break; + + case CB_INTR_WHEN_COMPILED: s = "CB_INTR_WHEN_COMPILED"; break; + + case CB_INTR_YEAR_TO_YYYY: s = "CB_INTR_YEAR_TO_YYYY"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cb_feature_mode (int indent, enum cb_feature_mode x){ + const char *s = NULL; + switch (x){ + + case CB_FEATURE_ACTIVE: s = "CB_FEATURE_ACTIVE"; break; + + case CB_FEATURE_DISABLED: s = "CB_FEATURE_DISABLED"; break; + + case CB_FEATURE_MUST_BE_ENABLED: s = "CB_FEATURE_MUST_BE_ENABLED"; break; + + case CB_FEATURE_NOT_IMPLEMENTED: s = "CB_FEATURE_NOT_IMPLEMENTED"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_intrinsic_table (int indent, int ptr_uid, struct cb_intrinsic_table *ptr){ + PRINT_STRUCT_TY("struct cb_intrinsic_table"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->intr_routine != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,intr_routine); + + print_char_ptr (indent+2, ptr->intr_routine); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,intr_enum); + + print_enum_cb_intr_enum (indent+2, ptr->intr_enum); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->token != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,token); + + print_int (indent+2, ptr->token); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,active); + + print_enum_cb_feature_mode (indent+2, ptr->active); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->args != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,args); + + print_int (indent+2, ptr->args); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->min_args != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,min_args); + + print_int (indent+2, ptr->min_args); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,category); + + print_enum_cb_category (indent+2, ptr->category); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->refmod != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,refmod); + + print_uint (indent+2, ptr->refmod); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_intrinsic (int indent, int ptr_uid, struct cb_intrinsic *ptr){ + PRINT_STRUCT_TY("struct cb_intrinsic"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + if (ptr->name == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->name); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->args != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,args); + + if (ptr->args == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->args); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->intr_field != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,intr_field); + + if (ptr->intr_field == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->intr_field); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->intr_tab != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,intr_tab); + + if (ptr->intr_tab == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_intrinsic_table_ptr (indent+2, ptr->intr_tab); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->offset != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,offset); + + if (ptr->offset == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->offset); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->length != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,length); + + if (ptr->length == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->length); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->isuser != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,isuser); + + print_int (indent+2, ptr->isuser); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_assign (int indent, int ptr_uid, struct cb_assign *ptr); +static void print_struct_cb_assign_ptr (int indent, struct cb_assign *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_assign*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_assign (indent, ptr_uid, ptr); +} + +static void print_struct_cb_assign (int indent, int ptr_uid, struct cb_assign *ptr){ + PRINT_STRUCT_TY("struct cb_assign"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->var != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,var); + + if (ptr->var == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->var); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->val != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,val); + + if (ptr->val == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->val); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_initialize (int indent, int ptr_uid, struct cb_initialize *ptr); +static void print_struct_cb_initialize_ptr (int indent, struct cb_initialize *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_initialize*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_initialize (indent, ptr_uid, ptr); +} + +static void print_struct_cb_initialize (int indent, int ptr_uid, struct cb_initialize *ptr){ + PRINT_STRUCT_TY("struct cb_initialize"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->var != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,var); + + if (ptr->var == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->var); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->val != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,val); + + if (ptr->val == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->val); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->rep != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,rep); + + if (ptr->rep == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->rep); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,statement); + + print_enum_cob_statement (indent+2, ptr->statement); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->flag_default != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_default); + + print_uchar (indent+2, ptr->flag_default); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_no_filler_init != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_no_filler_init); + + print_uchar (indent+2, ptr->flag_no_filler_init); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->padding != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,padding); + + print_uchar (indent+2, ptr->padding); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_search (int indent, int ptr_uid, struct cb_search *ptr); +static void print_struct_cb_search_ptr (int indent, struct cb_search *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_search*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_search (indent, ptr_uid, ptr); +} + +static void print_struct_cb_search (int indent, int ptr_uid, struct cb_search *ptr){ + PRINT_STRUCT_TY("struct cb_search"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->table != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,table); + + if (ptr->table == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->table); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->var != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,var); + + if (ptr->var == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->var); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->at_end != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,at_end); + + if (ptr->at_end == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->at_end); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->whens != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,whens); + + if (ptr->whens == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->whens); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_all != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_all); + + print_int (indent+2, ptr->flag_all); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_call (int indent, int ptr_uid, struct cb_call *ptr); +static void print_struct_cb_call_ptr (int indent, struct cb_call *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_call*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_call (indent, ptr_uid, ptr); +} + +static void print_struct_cb_call (int indent, int ptr_uid, struct cb_call *ptr){ + PRINT_STRUCT_TY("struct cb_call"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + if (ptr->name == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->name); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->args != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,args); + + if (ptr->args == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->args); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->stmt1 != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,stmt1); + + if (ptr->stmt1 == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->stmt1); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->stmt2 != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,stmt2); + + if (ptr->stmt2 == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->stmt2); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->call_returning != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,call_returning); + + if (ptr->call_returning == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->call_returning); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->is_system != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,is_system); + + print_uint (indent+2, ptr->is_system); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->convention != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,convention); + + print_int (indent+2, ptr->convention); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_goto (int indent, int ptr_uid, struct cb_goto *ptr); +static void print_struct_cb_goto_ptr (int indent, struct cb_goto *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_goto*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_goto (indent, ptr_uid, ptr); +} + +static void print_struct_cb_goto (int indent, int ptr_uid, struct cb_goto *ptr){ + PRINT_STRUCT_TY("struct cb_goto"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->target != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,target); + + if (ptr->target == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->target); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->depending != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,depending); + + if (ptr->depending == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->depending); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flags != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flags); + + print_int (indent+2, ptr->flags); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_if (int indent, int ptr_uid, struct cb_if *ptr); +static void print_struct_cb_if_ptr (int indent, struct cb_if *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_if*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_if (indent, ptr_uid, ptr); +} + +static void print_struct_cb_if (int indent, int ptr_uid, struct cb_if *ptr){ + PRINT_STRUCT_TY("struct cb_if"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->test != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,test); + + if (ptr->test == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->test); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->stmt1 != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,stmt1); + + if (ptr->stmt1 == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->stmt1); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->stmt2 != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,stmt2); + + if (ptr->stmt2 == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->stmt2); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,statement); + + print_enum_cob_statement (indent+2, ptr->statement); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_perform (int indent, int ptr_uid, struct cb_perform *ptr); +static void print_struct_cb_perform_ptr (int indent, struct cb_perform *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_perform*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_perform (indent, ptr_uid, ptr); +} + +static void print_enum_cb_perform_type (int indent, enum cb_perform_type x){ + const char *s = NULL; + switch (x){ + + case CB_PERFORM_EXIT: s = "CB_PERFORM_EXIT"; break; + + case CB_PERFORM_ONCE: s = "CB_PERFORM_ONCE"; break; + + case CB_PERFORM_TIMES: s = "CB_PERFORM_TIMES"; break; + + case CB_PERFORM_UNTIL: s = "CB_PERFORM_UNTIL"; break; + + case CB_PERFORM_FOREVER: s = "CB_PERFORM_FOREVER"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_perform (int indent, int ptr_uid, struct cb_perform *ptr){ + PRINT_STRUCT_TY("struct cb_perform"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->test != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,test); + + if (ptr->test == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->test); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->body != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,body); + + if (ptr->body == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->body); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->data != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,data); + + if (ptr->data == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->data); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->varying != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,varying); + + if (ptr->varying == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->varying); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->exit_label != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,exit_label); + + if (ptr->exit_label == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->exit_label); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cycle_label != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cycle_label); + + if (ptr->cycle_label == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->cycle_label); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,perform_type); + + print_enum_cb_perform_type (indent+2, ptr->perform_type); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_statement (int indent, int ptr_uid, struct cb_statement *ptr); +static void print_struct_cb_statement_ptr (int indent, struct cb_statement *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_statement*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_statement (indent, ptr_uid, ptr); +} + +static void print_struct_cb_attr_struct (int indent, int ptr_uid, struct cb_attr_struct *ptr); +static void print_struct_cb_attr_struct_ptr (int indent, struct cb_attr_struct *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_attr_struct*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_attr_struct (indent, ptr_uid, ptr); +} + +static void print_struct_cb_attr_struct (int indent, int ptr_uid, struct cb_attr_struct *ptr){ + PRINT_STRUCT_TY("struct cb_attr_struct"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + if( print_zero_fields || ptr->fgc != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,fgc); + + if (ptr->fgc == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->fgc); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->bgc != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,bgc); + + if (ptr->bgc == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->bgc); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->scroll != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,scroll); + + if (ptr->scroll == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->scroll); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->timeout != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,timeout); + + if (ptr->timeout == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->timeout); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->prompt != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,prompt); + + if (ptr->prompt == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->prompt); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->size_is != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,size_is); + + if (ptr->size_is == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->size_is); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->control != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,control); + + if (ptr->control == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->control); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->color != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,color); + + if (ptr->color == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->color); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->cursor != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,cursor); + + if (ptr->cursor == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->cursor); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->dispattrs != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,dispattrs); + + print_long_long_ptr0 (indent+2, ptr->dispattrs); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_enum_cb_handler_type (int indent, enum cb_handler_type x){ + const char *s = NULL; + switch (x){ + + case NO_HANDLER: s = "NO_HANDLER"; break; + + case DISPLAY_HANDLER: s = "DISPLAY_HANDLER"; break; + + case ACCEPT_HANDLER: s = "ACCEPT_HANDLER"; break; + + case SIZE_ERROR_HANDLER: s = "SIZE_ERROR_HANDLER"; break; + + case OVERFLOW_HANDLER: s = "OVERFLOW_HANDLER"; break; + + case AT_END_HANDLER: s = "AT_END_HANDLER"; break; + + case EOP_HANDLER: s = "EOP_HANDLER"; break; + + case INVALID_KEY_HANDLER: s = "INVALID_KEY_HANDLER"; break; + + case XML_HANDLER: s = "XML_HANDLER"; break; + + case JSON_HANDLER: s = "JSON_HANDLER"; break; + + case MCS_HANDLER: s = "MCS_HANDLER"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_statement (int indent, int ptr_uid, struct cb_statement *ptr){ + PRINT_STRUCT_TY("struct cb_statement"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + PRINT_STRUCT_FIELD_BEGIN(indent,statement); + + print_enum_cob_statement (indent+2, ptr->statement); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->body != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,body); + + if (ptr->body == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->body); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->file != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,file); + + if (ptr->file == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->file); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->ex_handler != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,ex_handler); + + if (ptr->ex_handler == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->ex_handler); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->not_ex_handler != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,not_ex_handler); + + if (ptr->not_ex_handler == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->not_ex_handler); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->handler3 != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,handler3); + + if (ptr->handler3 == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->handler3); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->null_check != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,null_check); + + if (ptr->null_check == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->null_check); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->debug_check != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,debug_check); + + if (ptr->debug_check == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->debug_check); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->debug_nodups != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,debug_nodups); + + if (ptr->debug_nodups == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->debug_nodups); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->attr_ptr != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,attr_ptr); + + if (ptr->attr_ptr == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_attr_struct_ptr (indent+2, ptr->attr_ptr); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,handler_type); + + print_enum_cb_handler_type (indent+2, ptr->handler_type); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->flag_no_based != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_no_based); + + print_int (indent, ptr->flag_no_based); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_in_debug != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_in_debug); + + print_int (indent, ptr->flag_in_debug); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_callback != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_callback); + + print_int (indent, ptr->flag_callback); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_implicit != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_implicit); + + print_int (indent, ptr->flag_implicit); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_continue (int indent, int ptr_uid, struct cb_continue *ptr); +static void print_struct_cb_continue_ptr (int indent, struct cb_continue *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_continue*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_continue (indent, ptr_uid, ptr); +} + +static void print_struct_cb_continue (int indent, int ptr_uid, struct cb_continue *ptr){ + PRINT_STRUCT_TY("struct cb_continue"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_cancel (int indent, int ptr_uid, struct cb_cancel *ptr); +static void print_struct_cb_cancel_ptr (int indent, struct cb_cancel *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_cancel*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_cancel (indent, ptr_uid, ptr); +} + +static void print_struct_cb_cancel (int indent, int ptr_uid, struct cb_cancel *ptr){ + PRINT_STRUCT_TY("struct cb_cancel"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->target != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,target); + + if (ptr->target == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->target); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_alter (int indent, int ptr_uid, struct cb_alter *ptr); +static void print_struct_cb_alter_ptr (int indent, struct cb_alter *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_alter*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_alter (indent, ptr_uid, ptr); +} + +static void print_struct_cb_alter (int indent, int ptr_uid, struct cb_alter *ptr){ + PRINT_STRUCT_TY("struct cb_alter"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->source != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,source); + + if (ptr->source == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->source); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->target != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,target); + + if (ptr->target == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->target); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_set_attr (int indent, int ptr_uid, struct cb_set_attr *ptr); +static void print_struct_cb_set_attr_ptr (int indent, struct cb_set_attr *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_set_attr*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_set_attr (indent, ptr_uid, ptr); +} + +static void print_struct_cb_set_attr (int indent, int ptr_uid, struct cb_set_attr *ptr){ + PRINT_STRUCT_TY("struct cb_set_attr"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->fld != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,fld); + + if (ptr->fld == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_field_ptr (indent+2, ptr->fld); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->val_on != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,val_on); + + print_long_long_ptr0 (indent+2, ptr->val_on); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->val_off != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,val_off); + + print_long_long_ptr0 (indent+2, ptr->val_off); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_xml_parse (int indent, int ptr_uid, struct cb_xml_parse *ptr); +static void print_struct_cb_xml_parse_ptr (int indent, struct cb_xml_parse *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_xml_parse*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_xml_parse (indent, ptr_uid, ptr); +} + +static void print_struct_cb_xml_parse (int indent, int ptr_uid, struct cb_xml_parse *ptr){ + PRINT_STRUCT_TY("struct cb_xml_parse"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->data != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,data); + + if (ptr->data == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->data); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->proc != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,proc); + + if (ptr->proc == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->proc); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->encoding != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,encoding); + + if (ptr->encoding == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->encoding); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->validating != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,validating); + + if (ptr->validating == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->validating); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->returning_national != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,returning_national); + + print_int (indent+2, ptr->returning_national); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_perform_varying (int indent, int ptr_uid, struct cb_perform_varying *ptr); +static void print_struct_cb_perform_varying_ptr (int indent, struct cb_perform_varying *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_perform_varying*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_perform_varying (indent, ptr_uid, ptr); +} + +static void print_struct_cb_perform_varying (int indent, int ptr_uid, struct cb_perform_varying *ptr){ + PRINT_STRUCT_TY("struct cb_perform_varying"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + if (ptr->name == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->name); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->from != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,from); + + if (ptr->from == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->from); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->step != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,step); + + if (ptr->step == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->step); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->until != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,until); + + if (ptr->until == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->until); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_direct (int indent, int ptr_uid, struct cb_direct *ptr); +static void print_struct_cb_direct_ptr (int indent, struct cb_direct *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_direct*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_direct (indent, ptr_uid, ptr); +} + +static void print_struct_cb_direct (int indent, int ptr_uid, struct cb_direct *ptr){ + PRINT_STRUCT_TY("struct cb_direct"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->line != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,line); + + print_char_ptr (indent+2, ptr->line); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_is_direct != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_is_direct); + + print_uint (indent+2, ptr->flag_is_direct); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->flag_new_line != 0 ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,flag_new_line); + + print_uint (indent+2, ptr->flag_new_line); + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_debug (int indent, int ptr_uid, struct cb_debug *ptr); +static void print_struct_cb_debug_ptr (int indent, struct cb_debug *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_debug*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_debug (indent, ptr_uid, ptr); +} + +static void print_struct_cb_debug (int indent, int ptr_uid, struct cb_debug *ptr){ + PRINT_STRUCT_TY("struct cb_debug"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->target != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,target); + + if (ptr->target == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->target); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->value != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,value); + + print_char_ptr (indent+2, ptr->value); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->fld != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,fld); + + if (ptr->fld == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->fld); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,size); + + print_size_t (indent+2, ptr->size); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_debug_call (int indent, int ptr_uid, struct cb_debug_call *ptr); +static void print_struct_cb_debug_call_ptr (int indent, struct cb_debug_call *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_debug_call*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_debug_call (indent, ptr_uid, ptr); +} + +static void print_struct_cb_debug_call (int indent, int ptr_uid, struct cb_debug_call *ptr){ + PRINT_STRUCT_TY("struct cb_debug_call"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->target != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,target); + + if (ptr->target == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_label_ptr (indent+2, ptr->target); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_prototype (int indent, int ptr_uid, struct cb_prototype *ptr); +static void print_struct_cb_prototype_ptr (int indent, struct cb_prototype *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_prototype*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_prototype (indent, ptr_uid, ptr); +} + +static void print_struct_cb_prototype (int indent, int ptr_uid, struct cb_prototype *ptr){ + PRINT_STRUCT_TY("struct cb_prototype"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,name); + + print_char_ptr (indent+2, ptr->name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->ext_name != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,ext_name); + + print_char_ptr (indent+2, ptr->ext_name); + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,type); + + print_enum_cob_module_type (indent+2, ptr->type); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_ml_suppress_clause (int indent, int ptr_uid, struct cb_ml_suppress_clause *ptr); +static void print_struct_cb_ml_suppress_clause_ptr (int indent, struct cb_ml_suppress_clause *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_ml_suppress_clause*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_ml_suppress_clause (indent, ptr_uid, ptr); +} + +static void print_enum_cb_ml_suppress_target (int indent, enum cb_ml_suppress_target x){ + const char *s = NULL; + switch (x){ + + case CB_ML_SUPPRESS_IDENTIFIER: s = "CB_ML_SUPPRESS_IDENTIFIER"; break; + + case CB_ML_SUPPRESS_ALL: s = "CB_ML_SUPPRESS_ALL"; break; + + case CB_ML_SUPPRESS_TYPE: s = "CB_ML_SUPPRESS_TYPE"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_enum_cb_ml_suppress_category (int indent, enum cb_ml_suppress_category x){ + const char *s = NULL; + switch (x){ + + case CB_ML_SUPPRESS_CAT_NUMERIC: s = "CB_ML_SUPPRESS_CAT_NUMERIC"; break; + + case CB_ML_SUPPRESS_CAT_NONNUMERIC: s = "CB_ML_SUPPRESS_CAT_NONNUMERIC"; break; + + case CB_ML_SUPPRESS_CAT_ANY: s = "CB_ML_SUPPRESS_CAT_ANY"; break; + + } + if ( s == NULL ){ + PRINT_ENUM_UNKNOWN(indent, ty, x); + } else { + PRINT_ENUM(indent,ty,s); + } +} + +static void print_struct_cb_ml_suppress_clause (int indent, int ptr_uid, struct cb_ml_suppress_clause *ptr){ + PRINT_STRUCT_TY("struct cb_ml_suppress_clause"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + PRINT_STRUCT_FIELD_BEGIN(indent,target); + + print_enum_cb_ml_suppress_target (indent+2, ptr->target); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->identifier != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,identifier); + + if (ptr->identifier == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->identifier); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->when_list != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,when_list); + + if (ptr->when_list == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->when_list); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + PRINT_STRUCT_FIELD_BEGIN(indent,ml_type); + + print_enum_cb_ml_type (indent+2, ptr->ml_type); + + PRINT_STRUCT_FIELD_END(indent); + + PRINT_STRUCT_FIELD_BEGIN(indent,category); + + print_enum_cb_ml_suppress_category (indent+2, ptr->category); + + PRINT_STRUCT_FIELD_END(indent); + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_ml_suppress_checks (int indent, int ptr_uid, struct cb_ml_suppress_checks *ptr); +static void print_struct_cb_ml_suppress_checks_ptr (int indent, struct cb_ml_suppress_checks *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_ml_suppress_checks*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_ml_suppress_checks (indent, ptr_uid, ptr); +} + +static void print_struct_cb_ml_suppress_checks (int indent, int ptr_uid, struct cb_ml_suppress_checks *ptr){ + PRINT_STRUCT_TY("struct cb_ml_suppress_checks"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->tree != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,tree); + + if (ptr->tree == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_ml_generate_tree_ptr (indent+2, ptr->tree); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_vary (int indent, int ptr_uid, struct cb_vary *ptr); +static void print_struct_cb_vary_ptr (int indent, struct cb_vary *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_vary*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_vary (indent, ptr_uid, ptr); +} + +static void print_struct_cb_vary (int indent, int ptr_uid, struct cb_vary *ptr){ + PRINT_STRUCT_TY("struct cb_vary"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->var != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,var); + + if (ptr->var == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->var); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->from != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,from); + + if (ptr->from == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->from); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->by != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,by); + + if (ptr->by == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->by); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + +static void print_struct_cb_table_values (int indent, int ptr_uid, struct cb_table_values *ptr); +static void print_struct_cb_table_values_ptr (int indent, struct cb_table_values *ptr){ + int ptr_uid ; + PRINT_STRUCT_PTR_TY("struct cb_table_values*"); + if (ptr == NULL){ + PRINT_NULL(indent,ty); + return; + } + ptr_uid = is_known_ptr (ptr); + if (ptr_uid < 0 ){ + ptr_uid = -ptr_uid; + PRINT_STRUCT_KNOWN(indent, ty, ptr_uid); + return; + } + print_struct_cb_table_values (indent, ptr_uid, ptr); +} + +static void print_struct_cb_table_values (int indent, int ptr_uid, struct cb_table_values *ptr){ + PRINT_STRUCT_TY("struct cb_table_values"); + PRINT_STRUCT_BEGIN(indent, ty, ptr_uid); + indent += 2; + + PRINT_STRUCT_FIELD_BEGIN(indent,common); + + print_struct_cb_tree_common (indent+2, 0, &ptr->common); + + PRINT_STRUCT_FIELD_END(indent); + + if( print_zero_fields || ptr->values != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,values); + + if (ptr->values == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->values); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->from != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,from); + + if (ptr->from == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->from); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->to != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,to); + + if (ptr->to == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->to); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + if( print_zero_fields || ptr->repeat_times != NULL ){ + + PRINT_STRUCT_FIELD_BEGIN(indent,repeat_times); + + if (ptr->repeat_times == NULL){ + PRINT_NULL(indent,ty); + } else { + print_struct_cb_tree_common_ptr (indent+2, ptr->repeat_times); + } + + PRINT_STRUCT_FIELD_END(indent); + + } + + indent -= 2; + PRINT_STRUCT_END(indent, ty); +} + + +static void print_struct_cb_tree_common_ptr (int indent, cb_tree cb){ + + const char* ty = "cb_tree"; + if (cb == NULL){ + PRINT_NULL(indent,ty); + return; + } + switch (cb->tag){ + + case CB_TAG_CONST: { print_struct_cb_const_ptr (indent, (struct cb_const *)cb); return; } + + case CB_TAG_INTEGER: { print_struct_cb_integer_ptr (indent, (struct cb_integer *)cb); return; } + + case CB_TAG_STRING: { print_struct_cb_string_ptr (indent, (struct cb_string *)cb); return; } + + case CB_TAG_ALPHABET_NAME: { print_struct_cb_alphabet_name_ptr (indent, (struct cb_alphabet_name *)cb); return; } + + case CB_TAG_CLASS_NAME: { print_struct_cb_class_name_ptr (indent, (struct cb_class_name *)cb); return; } + + case CB_TAG_LOCALE_NAME: { print_struct_cb_locale_name_ptr (indent, (struct cb_locale_name *)cb); return; } + + case CB_TAG_SYSTEM_NAME: { print_struct_cb_system_name_ptr (indent, (struct cb_system_name *)cb); return; } + + case CB_TAG_SCHEMA_NAME: { print_struct_cb_schema_name_ptr (indent, (struct cb_schema_name *)cb); return; } + + case CB_TAG_LITERAL: { print_struct_cb_literal_ptr (indent, (struct cb_literal *)cb); return; } + + case CB_TAG_DECIMAL: { print_struct_cb_decimal_ptr (indent, (struct cb_decimal *)cb); return; } + + case CB_TAG_FIELD: { print_struct_cb_field_ptr (indent, (struct cb_field *)cb); return; } + + case CB_TAG_FILE: { print_struct_cb_file_ptr (indent, (struct cb_file *)cb); return; } + + case CB_TAG_REPORT: { print_struct_cb_report_ptr (indent, (struct cb_report *)cb); return; } + + case CB_TAG_CD: { print_struct_cb_cd_ptr (indent, (struct cb_cd *)cb); return; } + + case CB_TAG_REFERENCE: { print_struct_cb_reference_ptr (indent, (struct cb_reference *)cb); return; } + + case CB_TAG_BINARY_OP: { print_struct_cb_binary_op_ptr (indent, (struct cb_binary_op *)cb); return; } + + case CB_TAG_FUNCALL: { print_struct_cb_funcall_ptr (indent, (struct cb_funcall *)cb); return; } + + case CB_TAG_CAST: { print_struct_cb_cast_ptr (indent, (struct cb_cast *)cb); return; } + + case CB_TAG_INTRINSIC: { print_struct_cb_intrinsic_ptr (indent, (struct cb_intrinsic *)cb); return; } + + case CB_TAG_LABEL: { print_struct_cb_label_ptr (indent, (struct cb_label *)cb); return; } + + case CB_TAG_ASSIGN: { print_struct_cb_assign_ptr (indent, (struct cb_assign *)cb); return; } + + case CB_TAG_INITIALIZE: { print_struct_cb_initialize_ptr (indent, (struct cb_initialize *)cb); return; } + + case CB_TAG_SEARCH: { print_struct_cb_search_ptr (indent, (struct cb_search *)cb); return; } + + case CB_TAG_CALL: { print_struct_cb_call_ptr (indent, (struct cb_call *)cb); return; } + + case CB_TAG_GOTO: { print_struct_cb_goto_ptr (indent, (struct cb_goto *)cb); return; } + + case CB_TAG_IF: { print_struct_cb_if_ptr (indent, (struct cb_if *)cb); return; } + + case CB_TAG_PERFORM: { print_struct_cb_perform_ptr (indent, (struct cb_perform *)cb); return; } + + case CB_TAG_STATEMENT: { print_struct_cb_statement_ptr (indent, (struct cb_statement *)cb); return; } + + case CB_TAG_CONTINUE: { print_struct_cb_continue_ptr (indent, (struct cb_continue *)cb); return; } + + case CB_TAG_CANCEL: { print_struct_cb_cancel_ptr (indent, (struct cb_cancel *)cb); return; } + + case CB_TAG_ALTER: { print_struct_cb_alter_ptr (indent, (struct cb_alter *)cb); return; } + + case CB_TAG_SET_ATTR: { print_struct_cb_set_attr_ptr (indent, (struct cb_set_attr *)cb); return; } + + case CB_TAG_XML_PARSE: { print_struct_cb_xml_parse_ptr (indent, (struct cb_xml_parse *)cb); return; } + + case CB_TAG_PERFORM_VARYING: { print_struct_cb_perform_varying_ptr (indent, (struct cb_perform_varying *)cb); return; } + + case CB_TAG_PICTURE: { print_struct_cb_picture_ptr (indent, (struct cb_picture *)cb); return; } + + case CB_TAG_LIST: { print_struct_cb_list_ptr (indent, (struct cb_list *)cb); return; } + + case CB_TAG_DIRECT: { print_struct_cb_direct_ptr (indent, (struct cb_direct *)cb); return; } + + case CB_TAG_DEBUG: { print_struct_cb_debug_ptr (indent, (struct cb_debug *)cb); return; } + + case CB_TAG_DEBUG_CALL: { print_struct_cb_debug_call_ptr (indent, (struct cb_debug_call *)cb); return; } + + case CB_TAG_PROGRAM: { print_struct_cb_program_ptr (indent, (struct cb_program *)cb); return; } + + case CB_TAG_PROTOTYPE: { print_struct_cb_prototype_ptr (indent, (struct cb_prototype *)cb); return; } + + case CB_TAG_DECIMAL_LITERAL: { print_struct_cb_decimal_ptr (indent, (struct cb_decimal *)cb); return; } + + case CB_TAG_REPORT_LINE: { print_struct_cb_reference_ptr (indent, (struct cb_reference *)cb); return; } + + case CB_TAG_ML_SUPPRESS: { print_struct_cb_ml_suppress_clause_ptr (indent, (struct cb_ml_suppress_clause *)cb); return; } + + case CB_TAG_ML_TREE: { print_struct_cb_ml_generate_tree_ptr (indent, (struct cb_ml_generate_tree *)cb); return; } + + case CB_TAG_ML_SUPPRESS_CHECKS: { print_struct_cb_ml_suppress_checks_ptr (indent, (struct cb_ml_suppress_checks *)cb); return; } + + case CB_TAG_VARY: { print_struct_cb_vary_ptr (indent, (struct cb_vary *)cb); return; } + + case CB_TAG_TAB_VALS: { print_struct_cb_table_values_ptr (indent, (struct cb_table_values *)cb); return; } + + default: + PRINT_UNKNOWN_SELECTOR(indent, ty, cb->tag); + } +} + +static void cb_print_tree (cb_tree cb){ + init_ptr_table (); + print_struct_cb_tree_common_ptr (0, cb); + clear_ptr_table (); +} + + diff --git a/cobc/flag.def b/cobc/flag.def index d487f3ab4..5e1a09333 100644 --- a/cobc/flag.def +++ b/cobc/flag.def @@ -282,3 +282,12 @@ CB_FLAG (cb_diagnostics_absolute_paths, 1, "diagnostics-absolute-paths", CB_FLAG (cb_flag_prof, 1, "prof", _(" -fprof enable profiling of the COBOL program")) +CB_FLAG_NQ (1, "dump-ast", CB_FLAG_DUMP_AST, + _(" -fdump-ast= dump parsed AST to , format is JSON unless\n" + " the file has a .ml extension for OCaml format.")) + +CB_FLAG_NQ (1, "dump-ast-flags", CB_FLAG_DUMP_AST_FLAGS, + _(" -fdump-ast-flags= set flags used when dumping the parsed AST\n" + " '+/-' to enable/disable, 'l' for locations,\n" + " 't' for types, 'p' for pointers, 'i' for indent.")) + diff --git a/cobc/tree.h b/cobc/tree.h index 19878838f..573056743 100644 --- a/cobc/tree.h +++ b/cobc/tree.h @@ -1827,6 +1827,8 @@ struct nested_list { struct cb_program *nested_prog; }; +#define CB_MAX_GLOBAL_HANDLERS 5 + struct cb_program { struct cb_tree_common common; /* Common values */ @@ -1878,7 +1880,7 @@ struct cb_program { struct cb_field *report_storage; /* REPORT */ cb_tree local_file_list; /* Local files */ cb_tree global_file_list; /* Global files */ - struct handler_struct global_handler[5]; /* Global handlers */ + struct handler_struct global_handler[CB_MAX_GLOBAL_HANDLERS]; /* Global handlers */ cb_tree collating_sequence; /* COLLATING */ cb_tree collating_sequence_n; /* COLLATING FOR NATIONAL*/ cb_tree classification; /* CLASSIFICATION */ @@ -2255,7 +2257,7 @@ extern cb_tree cb_build_initialize (const cb_tree, const cb_tree, const enum cob_statement, const unsigned int); -struct cb_literal *build_literal (enum cb_category, +extern struct cb_literal *build_literal (enum cb_category, const void *, const size_t); extern cb_tree cb_build_system_name (const enum cb_system_name_category, @@ -2607,6 +2609,10 @@ extern cb_tree cb_build_xml_parse (cb_tree, cb_tree, extern void cb_emit_json_generate (cb_tree, cb_tree, cb_tree, cb_tree, cb_tree); +extern void cb_dump_ast_to_file (struct cb_program *prog, + const char *filename, + const char *flags); + #ifdef COB_TREE_DEBUG extern cb_tree cobc_tree_cast_check (const cb_tree, const char *, const int, const enum cb_tag);