diff --git a/.bash_history b/.bash_history
new file mode 100644
index 0000000..0eaaa3b
--- /dev/null
+++ b/.bash_history
@@ -0,0 +1,78 @@
+cd cobroutines/
+ls
+make -f Makefile.Win32
+ls
+a.exe
+cat xupeta.c
+ls
+vi mwindows.h
+vi sql*
+vi scr.c
+ls
+mv screen.c~ screen.c
+ls
+make -f Makefile.Win32
+ls
+file *]
+exit
+cd c:/mingw
+grep -r -i euidaccess *
+grep -r -i uname *
+cd c:/
+cd tiny-extras/Postgres/Release/
+ls
+pexports TCSql.dll
+cd
+ls
+cd lib
+ls
+cd
+ls
+tconfig.mingw.sh
+make clean
+make
+make clean
+make
+make install
+make
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make
+make install
+make install
+make
+make install
+make
+make install
diff --git a/.cproject b/.cproject
new file mode 100644
index 0000000..8fe4a68
--- /dev/null
+++ b/.cproject
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.dep.inc b/.dep.inc
new file mode 100644
index 0000000..4560e55
--- /dev/null
+++ b/.dep.inc
@@ -0,0 +1,5 @@
+# This code depends on make tool being used
+DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES}))
+ifneq (${DEPFILES},)
+include ${DEPFILES}
+endif
diff --git a/.metadata/.lock b/.metadata/.lock
new file mode 100644
index 0000000..e69de29
diff --git a/.metadata/.mylyn/repositories.xml.zip b/.metadata/.mylyn/repositories.xml.zip
new file mode 100644
index 0000000..c095d15
Binary files /dev/null and b/.metadata/.mylyn/repositories.xml.zip differ
diff --git a/.metadata/.plugins/org.eclipse.cdt.core/.log b/.metadata/.plugins/org.eclipse.cdt.core/.log
new file mode 100644
index 0000000..5687012
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.cdt.core/.log
@@ -0,0 +1 @@
+*** SESSION set 03, 2012 10:31:09.42 -------------------------------------------
diff --git a/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
@@ -0,0 +1 @@
+
diff --git a/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
@@ -0,0 +1 @@
+
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
new file mode 100644
index 0000000..25cb955
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
new file mode 100644
index 0000000..98daeff
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
new file mode 100644
index 0000000..6b2aaa7
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree
new file mode 100644
index 0000000..77be1fe
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree differ
diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
new file mode 100644
index 0000000..bd08eee
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
new file mode 100644
index 0000000..5e2da66
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+spelling_locale_initialized=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..dffc6b5
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+version=1
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs
new file mode 100644
index 0000000..b8957f6
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.usagedata.recording.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.epp.usagedata.recording.last-upload=1346679081898
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..7ea7e34
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,14 @@
+content_assist_proposals_background=255,255,255
+content_assist_proposals_foreground=0,0,0
+eclipse.preferences.version=1
+fontPropagated=true
+org.eclipse.jdt.internal.ui.navigator.layout=2
+org.eclipse.jdt.ui.editor.tab.width=
+org.eclipse.jdt.ui.formatterprofiles.version=12
+org.eclipse.jdt.ui.javadoclocations.migrated=true
+org.eclipse.jface.textfont=1|Consolas|10.0|0|WINDOWS|1|0|0|0|0|0|0|0|0|1|0|0|0|0|Consolas;
+proposalOrderMigrated=true
+spelling_locale_initialized=true
+tabWidthPropagated=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.j2ee.webservice.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.j2ee.webservice.ui.prefs
new file mode 100644
index 0000000..553bb96
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.j2ee.webservice.ui.prefs
@@ -0,0 +1,2 @@
+areThereWebServices=false
+eclipse.preferences.version=1
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs
new file mode 100644
index 0000000..43e97e4
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+mylyn.attention.migrated=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs
new file mode 100644
index 0000000..8d462a6
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs
new file mode 100644
index 0000000..f9e585b
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+pref_first_startup=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
new file mode 100644
index 0000000..56cd496
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.team.ui.first_time=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
new file mode 100644
index 0000000..a86421e
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
@@ -0,0 +1,5 @@
+PROBLEMS_FILTERS_MIGRATE=true
+eclipse.preferences.version=1
+platformState=1341602168725
+quickStart=true
+tipsAndTricks=true
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
new file mode 100644
index 0000000..08076f2
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+showIntro=false
diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
new file mode 100644
index 0000000..e9a9951
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
@@ -0,0 +1,3 @@
+//org.eclipse.ui.commands/state/org.eclipse.wst.xml.views.XPathView.processor.xpathprocessor/org.eclipse.ui.commands.radioState=xpath10
+ENABLED_DECORATORS=de.tobject.findbugs.decorators.WorkingSetBugCountDecorator\:true,de.tobject.findbugs.decorators.ProjectBugCountDecorator\:true,de.tobject.findbugs.decorators.FolderBugCountDecorator\:true,de.tobject.findbugs.decorators.FileBugCountDecorator\:true,org.eclipse.jst.ws.jaxws.dom.integration.navigator.WebServiceDecorator\:true,org.eclipse.wst.server.ui.decorator\:false,sf.eclipse.javacc.jjdecorator\:true,org.dyno.visual.swing.decorator\:true,org.eclipse.cdt.ui.indexedFiles\:false,org.eclipse.cdt.managedbuilder.ui.excludedFile\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.DependencyDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.ColumnDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.ForeignKeyDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.IndexTriggerDecoration\:true,org.eclipse.datatools.connectivity.internal.core.ui.bookmarkDecoration\:true,org.eclipse.datatools.connectivity.internal.core.ui.FilterNodeDecoration\:true,org.eclipse.datatools.connectivity.ui.decorator.contentextension\:false,org.eclipse.datatools.enablement.ingres.ui.providers.decorators.SynonymDecorationService\:true,org.eclipse.datatools.enablement.ingres.internal.ui.providers.decorators.ParameterDecorationService\:true,org.eclipse.datatools.enablement.sybase.asa.proxytabledecorator\:true,org.eclipse.datatools.enablement.sybase.ase.webservicetabledecorator\:true,org.eclipse.datatools.enablement.sybase.systemtabledecorator\:true,org.eclipse.jdt.ui.override.decorator\:true,org.eclipse.jdt.ui.interface.decorator\:false,org.eclipse.jdt.ui.buildpath.decorator\:true,org.eclipse.jst.j2ee.internal.ui.util.AnnotationIconDecorator_ejb\:true,org.eclipse.jst.j2ee.navigator.internal.J2EEProjectDecorator\:true,org.eclipse.jst.jee.ui.internal.navigator.ejb.BeanDecorator\:true,org.eclipse.jst.jee.navigator.internal.JEEProjectDecorator\:true,org.eclipse.jst.j2ee.internal.ui.util.AnnotationIconDecorator_servlet\:true,org.eclipse.jst.servlet.ui.Decorator\:true,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.pde.ui.binaryProjectDecorator\:false,org.eclipse.rse.core.virtualobject.decorator\:true,org.eclipse.rse.core.binary.executable.decorator\:true,org.eclipse.rse.core.script.executable.decorator\:true,org.eclipse.rse.core.java.executable.decorator\:true,org.eclipse.rse.core.library.decorator\:true,org.eclipse.rse.core.link.decorator\:true,org.eclipse.rse.subsystems.error.decorator\:true,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.team.svn.ui.decorator.SVNLightweightDecorator\:false,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.VirtualResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,org.eclipse.ui.ResourceFilterDecorator\:false,org.eclipse.wst.jsdt.ui.override.decorator\:true,org.eclipse.wst.server.ui.navigatorDecorator\:true,
+eclipse.preferences.version=1
diff --git a/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv b/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv
new file mode 100644
index 0000000..724cee2
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.epp.usagedata.recording/usagedata.csv
@@ -0,0 +1,127 @@
+what,kind,bundleId,bundleVersion,description,time
+activated,perspective,org.eclipse.jst.j2ee.ui,,"org.eclipse.jst.j2ee.J2EEPerspective",1346679079785
+started,bundle,org.eclipse.osgi,3.7.2.v20120110-1415,"org.eclipse.osgi",1346679079787
+started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.200.v20110815-1438,"org.eclipse.equinox.simpleconfigurator",1346679079798
+started,bundle,com.ibm.icu,4.4.2.v20110823,"com.ibm.icu",1346679079815
+started,bundle,org.eclipse.core.contenttype,3.4.100.v20110423-0524,"org.eclipse.core.contenttype",1346679079822
+started,bundle,org.eclipse.core.databinding.observable,1.4.0.I20110222-0800,"org.eclipse.core.databinding.observable",1346679079836
+started,bundle,org.eclipse.core.expressions,3.4.300.v20110228,"org.eclipse.core.expressions",1346679079850
+started,bundle,org.eclipse.core.filebuffers,3.5.200.v20110928-1504,"org.eclipse.core.filebuffers",1346679079853
+started,bundle,org.eclipse.core.filesystem,1.3.100.v20110423-0524,"org.eclipse.core.filesystem",1346679079871
+started,bundle,org.eclipse.core.jobs,3.5.101.v20120113-1953,"org.eclipse.core.jobs",1346679079886
+started,bundle,org.eclipse.core.net,1.2.100.I20110511-0800,"org.eclipse.core.net",1346679079893
+started,bundle,org.eclipse.core.resources,3.7.101.v20120125-1505,"org.eclipse.core.resources",1346679079905
+started,bundle,org.eclipse.core.runtime,3.7.0.v20110110,"org.eclipse.core.runtime",1346679079915
+started,bundle,org.eclipse.core.runtime.compatibility,3.2.100.v20100505,"org.eclipse.core.runtime.compatibility",1346679079924
+started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.200.v20110110,"org.eclipse.core.runtime.compatibility.auth",1346679079937
+started,bundle,org.eclipse.emf.common,2.7.0.v20120127-1122,"org.eclipse.emf.common",1346679079937
+started,bundle,org.eclipse.emf.common.ui,2.7.0.v20120130-0943,"org.eclipse.emf.common.ui",1346679079951
+started,bundle,org.eclipse.emf.ecore,2.7.0.v20120127-1122,"org.eclipse.emf.ecore",1346679079951
+started,bundle,org.eclipse.emf.ecore.xmi,2.7.0.v20120127-1122,"org.eclipse.emf.ecore.xmi",1346679079962
+started,bundle,org.eclipse.emf.edit,2.7.2.v20120130-0943,"org.eclipse.emf.edit",1346679079978
+started,bundle,org.eclipse.emf.edit.ui,2.7.0.v20120130-0943,"org.eclipse.emf.edit.ui",1346679079978
+started,bundle,org.eclipse.epp.mpc.ui,1.1.1.I20110907-0947,"org.eclipse.epp.mpc.ui",1346679079978
+started,bundle,org.eclipse.epp.usagedata.gathering,1.3.1.R201106061540,"org.eclipse.epp.usagedata.gathering",1346679079980
+started,bundle,org.eclipse.epp.usagedata.recording,1.3.1.R201106061540,"org.eclipse.epp.usagedata.recording",1346679079993
+started,bundle,org.eclipse.equinox.app,1.3.100.v20110321,"org.eclipse.equinox.app",1346679080001
+started,bundle,org.eclipse.equinox.common,3.6.0.v20110523,"org.eclipse.equinox.common",1346679080016
+started,bundle,org.eclipse.equinox.ds,1.3.1.R37x_v20110701,"org.eclipse.equinox.ds",1346679080028
+started,bundle,org.eclipse.equinox.event,1.2.100.v20110502,"org.eclipse.equinox.event",1346679080044
+started,bundle,org.eclipse.equinox.p2.core,2.1.1.v20120113-1346,"org.eclipse.equinox.p2.core",1346679080057
+started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.300.v20110815-1419,"org.eclipse.equinox.p2.directorywatcher",1346679080058
+started,bundle,org.eclipse.equinox.p2.engine,2.1.1.R37x_v20111003,"org.eclipse.equinox.p2.engine",1346679080067
+started,bundle,org.eclipse.equinox.p2.metadata,2.1.0.v20110815-1419,"org.eclipse.equinox.p2.metadata",1346679080084
+started,bundle,org.eclipse.equinox.p2.metadata.repository,1.2.0.v20110815-1419,"org.eclipse.equinox.p2.metadata.repository",1346679080098
+started,bundle,org.eclipse.equinox.p2.operations,2.1.1.R37x_v20111111,"org.eclipse.equinox.p2.operations",1346679080106
+started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.1.100.v20110815-1419,"org.eclipse.equinox.p2.reconciler.dropins",1346679080112
+started,bundle,org.eclipse.equinox.p2.repository,2.1.1.v20120113-1346,"org.eclipse.equinox.p2.repository",1346679080124
+started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.100.v20110815-1419,"org.eclipse.equinox.p2.ui.sdk.scheduler",1346679080138
+started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.200.v20110815-1419,"org.eclipse.equinox.p2.updatechecker",1346679080148
+started,bundle,org.eclipse.equinox.preferences,3.4.2.v20120111-2020,"org.eclipse.equinox.preferences",1346679080156
+started,bundle,org.eclipse.equinox.registry,3.5.101.R37x_v20110810-1611,"org.eclipse.equinox.registry",1346679080164
+started,bundle,org.eclipse.equinox.security,1.1.1.R37x_v20110822-1018,"org.eclipse.equinox.security",1346679080181
+started,bundle,org.eclipse.equinox.util,1.0.300.v20110502,"org.eclipse.equinox.util",1346679080189
+started,bundle,org.eclipse.help,3.5.100.v20110426,"org.eclipse.help",1346679080201
+started,bundle,org.eclipse.jdt.core,3.7.3.v20120119-1537,"org.eclipse.jdt.core",1346679080212
+started,bundle,org.eclipse.jdt.core.manipulation,1.4.0.v20110928-1453,"org.eclipse.jdt.core.manipulation",1346679080223
+started,bundle,org.eclipse.jdt.ui,3.7.2.v20120109-1427,"org.eclipse.jdt.ui",1346679080244
+started,bundle,org.eclipse.jem.util,2.1.100.v201103021400,"org.eclipse.jem.util",1346679080252
+started,bundle,org.eclipse.jface,3.7.0.v20110928-1505,"org.eclipse.jface",1346679080260
+started,bundle,org.eclipse.jsch.core,1.1.300.I20110514-0800,"org.eclipse.jsch.core",1346679080273
+started,bundle,org.eclipse.jst.j2ee.ui,1.1.503.v201201190400,"org.eclipse.jst.j2ee.ui",1346679080281
+started,bundle,org.eclipse.jst.j2ee.webservice,1.1.400.v201004110600,"org.eclipse.jst.j2ee.webservice",1346679080298
+started,bundle,org.eclipse.jst.j2ee.webservice.ui,1.1.500.v201105122000,"org.eclipse.jst.j2ee.webservice.ui",1346679080310
+started,bundle,org.eclipse.jst.ws.jaxws.utils,1.0.100.v201201031437,"org.eclipse.jst.ws.jaxws.utils",1346679080321
+started,bundle,org.eclipse.ltk.core.refactoring,3.5.201.r372_v20111101-0700,"org.eclipse.ltk.core.refactoring",1346679080335
+started,bundle,org.eclipse.mylyn.bugzilla.core,3.6.5.v20120123-0100,"org.eclipse.mylyn.bugzilla.core",1346679080347
+started,bundle,org.eclipse.mylyn.bugzilla.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.bugzilla.ui",1346679080352
+started,bundle,org.eclipse.mylyn.commons.identity,0.8.0.v20110608-1400,"org.eclipse.mylyn.commons.identity",1346679080362
+started,bundle,org.eclipse.mylyn.commons.net,3.6.0.v20110608-1400,"org.eclipse.mylyn.commons.net",1346679080362
+started,bundle,org.eclipse.mylyn.commons.ui,3.6.1.v20110720-0100,"org.eclipse.mylyn.commons.ui",1346679080371
+started,bundle,org.eclipse.mylyn.context.core,3.6.1.v20110720-0100,"org.eclipse.mylyn.context.core",1346679080382
+started,bundle,org.eclipse.mylyn.context.ui,3.6.1.v20120112-0100,"org.eclipse.mylyn.context.ui",1346679080390
+started,bundle,org.eclipse.mylyn.monitor.ui,3.6.0.v20110608-1400,"org.eclipse.mylyn.monitor.ui",1346679080400
+started,bundle,org.eclipse.mylyn.tasks.ui,3.6.5.v20120215-0100,"org.eclipse.mylyn.tasks.ui",1346679080420
+started,bundle,org.eclipse.mylyn.team.ui,3.6.1.v20110825-0100,"org.eclipse.mylyn.team.ui",1346679080436
+started,bundle,org.eclipse.search,3.7.0.v20110928-1504,"org.eclipse.search",1346679080448
+started,bundle,org.eclipse.team.core,3.6.0.I20110525-0800,"org.eclipse.team.core",1346679080460
+started,bundle,org.eclipse.team.cvs.core,3.3.400.I20110510-0800,"org.eclipse.team.cvs.core",1346679080470
+started,bundle,org.eclipse.team.cvs.ui,3.3.401.v20120126-1227,"org.eclipse.team.cvs.ui",1346679080479
+started,bundle,org.eclipse.team.ui,3.6.101.R37x_v20111109-0800,"org.eclipse.team.ui",1346679080493
+started,bundle,org.eclipse.ui,3.7.0.v20110928-1505,"org.eclipse.ui",1346679080503
+started,bundle,org.eclipse.ui.console,3.5.100.v20111007_r372,"org.eclipse.ui.console",1346679080508
+started,bundle,org.eclipse.ui.editors,3.7.0.v20110928-1504,"org.eclipse.ui.editors",1346679080520
+started,bundle,org.eclipse.ui.forms,3.5.101.v20111011-1919,"org.eclipse.ui.forms",1346679080533
+started,bundle,org.eclipse.ui.ide,3.7.0.v20110928-1505,"org.eclipse.ui.ide",1346679080549
+started,bundle,org.eclipse.ui.intro,3.4.100.v20110425,"org.eclipse.ui.intro",1346679080564
+started,bundle,org.eclipse.ui.intro.universal,3.2.500.v20110510,"org.eclipse.ui.intro.universal",1346679080564
+started,bundle,org.eclipse.ui.navigator,3.5.101.v20120106-1355,"org.eclipse.ui.navigator",1346679080612
+started,bundle,org.eclipse.ui.navigator.resources,3.4.300.v20110928-1505,"org.eclipse.ui.navigator.resources",1346679080624
+started,bundle,org.eclipse.ui.net,1.2.100.v20111208-1155,"org.eclipse.ui.net",1346679080639
+started,bundle,org.eclipse.ui.views,3.6.0.v20110928-1505,"org.eclipse.ui.views",1346679080650
+started,bundle,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"org.eclipse.ui.workbench",1346679080661
+started,bundle,org.eclipse.ui.workbench.texteditor,3.7.0.v20110928-1504,"org.eclipse.ui.workbench.texteditor",1346679080675
+started,bundle,org.eclipse.update.configurator,3.3.100.v20100512,"org.eclipse.update.configurator",1346679080685
+started,bundle,org.eclipse.update.core,3.2.500.v20110330,"org.eclipse.update.core",1346679080703
+started,bundle,org.eclipse.update.scheduler,3.2.300.v20100512,"org.eclipse.update.scheduler",1346679080716
+started,bundle,org.eclipse.wst.common.emf,1.2.100.v201101101900,"org.eclipse.wst.common.emf",1346679080728
+started,bundle,org.eclipse.wst.common.emfworkbench.integration,1.2.101.v201107140600,"org.eclipse.wst.common.emfworkbench.integration",1346679080758
+started,bundle,org.eclipse.wst.common.frameworks,1.2.102.v201201190400,"org.eclipse.wst.common.frameworks",1346679080768
+started,bundle,org.eclipse.wst.common.project.facet.core,1.4.201.v201201101553,"org.eclipse.wst.common.project.facet.core",1346679080768
+started,bundle,org.eclipse.wst.web,1.1.501.v201201190400,"org.eclipse.wst.web",1346679080777
+started,bundle,org.eclipse.cdt.codan.ui.cxx,2.0.0.201202111925,"org.eclipse.cdt.codan.ui.cxx",1346679080791
+started,bundle,org.eclipse.cdt.core,5.3.2.201202111925,"org.eclipse.cdt.core",1346679080807
+started,bundle,org.eclipse.cdt.make.core,7.1.2.201202111925,"org.eclipse.cdt.make.core",1346679080827
+started,bundle,org.eclipse.cdt.make.ui,7.1.2.201202111925,"org.eclipse.cdt.make.ui",1346679080837
+started,bundle,org.eclipse.cdt.managedbuilder.core,8.0.2.201202111925,"org.eclipse.cdt.managedbuilder.core",1346679080851
+started,bundle,org.eclipse.cdt.ui,5.3.2.201202111925,"org.eclipse.cdt.ui",1346679080869
+os,sysinfo,,,"win32",1346679080875
+arch,sysinfo,,,"x86",1346679080875
+ws,sysinfo,,,"win32",1346679080875
+locale,sysinfo,,,"pt_BR",1346679080875
+processors,sysinfo,,,"4",1346679080875
+java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1346679080875
+java.runtime.version,sysinfo,,,"1.7.0_05-b05",1346679080875
+java.specification.name,sysinfo,,,"Java Platform API Specification",1346679080875
+java.specification.vendor,sysinfo,,,"Oracle Corporation",1346679080875
+java.specification.version,sysinfo,,,"1.7",1346679080875
+java.vendor,sysinfo,,,"Oracle Corporation",1346679080875
+java.version,sysinfo,,,"1.7.0_05",1346679080875
+java.vm.info,sysinfo,,,"mixed mode, sharing",1346679080875
+java.vm.name,sysinfo,,,"Java HotSpot(TM) Client VM",1346679080875
+java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1346679080876
+java.vm.specification.vendor,sysinfo,,,"Oracle Corporation",1346679080876
+java.vm.specification.version,sysinfo,,,"1.7",1346679080876
+java.vm.vendor,sysinfo,,,"Oracle Corporation",1346679080876
+java.vm.version,sysinfo,,,"23.1-b03",1346679080876
+activated,view,org.eclipse.ui.navigator.resources,3.4.300.v20110928-1505,"org.eclipse.ui.navigator.ProjectExplorer",1346679080998
+activated,view,org.eclipse.ui.navigator.resources,3.4.300.v20110928-1505,"org.eclipse.ui.navigator.ProjectExplorer",1346679081044
+closed,view,org.eclipse.ui,3.7.0.v20110928-1505,"org.eclipse.ui.internal.introview",1346679081073
+started,bundle,org.eclipse.cdt.codan.core.cxx,1.0.0.201202111925,"org.eclipse.cdt.codan.core.cxx",1346679081307
+started,bundle,org.eclipse.cdt.codan.core,2.0.0.201202111925,"org.eclipse.cdt.codan.core",1346679081325
+started,bundle,org.eclipse.cdt.codan.checkers,1.0.1.201202111925,"org.eclipse.cdt.codan.checkers",1346679081384
+deactivated,workbench,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"",1346679084397
+activated,workbench,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"",1346679086387
+closed,workbench,org.eclipse.ui.workbench,3.7.1.v20120104-1859,"",1346679086454
+started,bundle,org.eclipse.compare.core,3.5.200.I20110208-0800,"org.eclipse.compare.core",1346679087321
+started,bundle,org.eclipse.compare,3.5.202.R37x_v20111109-0800,"org.eclipse.compare",1346679087364
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache b/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache
new file mode 100644
index 0000000..593f470
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
new file mode 100644
index 0000000..593f470
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat
new file mode 100644
index 0000000..7af5cbd
Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
new file mode 100644
index 0000000..a4ee3cb
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
new file mode 100644
index 0000000..9e390f5
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
new file mode 100644
index 0000000..5ca0b77
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
new file mode 100644
index 0000000..d8563d0
--- /dev/null
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.metadata/version.ini b/.metadata/version.ini
new file mode 100644
index 0000000..c51ff74
--- /dev/null
+++ b/.metadata/version.ini
@@ -0,0 +1 @@
+org.eclipse.core.runtime=1
\ No newline at end of file
diff --git a/.project b/.project
new file mode 100644
index 0000000..4ca7b17
--- /dev/null
+++ b/.project
@@ -0,0 +1,70 @@
+
+
+ tinycobol
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+ ?name?
+
+
+
+ org.eclipse.cdt.make.core.append_environment
+ true
+
+
+ org.eclipse.cdt.make.core.buildArguments
+
+
+
+ org.eclipse.cdt.make.core.buildCommand
+ make
+
+
+ org.eclipse.cdt.make.core.buildLocation
+ ${workspace_loc:/tiny/Default}
+
+
+ org.eclipse.cdt.make.core.contents
+ org.eclipse.cdt.make.core.activeConfigSettings
+
+
+ org.eclipse.cdt.make.core.enableAutoBuild
+ false
+
+
+ org.eclipse.cdt.make.core.enableCleanBuild
+ true
+
+
+ org.eclipse.cdt.make.core.enableFullBuild
+ true
+
+
+ org.eclipse.cdt.make.core.stopOnError
+ true
+
+
+ org.eclipse.cdt.make.core.useDefaultBuildCmd
+ true
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+ org.eclipse.cdt.core.ccnature
+
+
diff --git a/.settings/org.eclipse.cdt.codan.core.prefs b/.settings/org.eclipse.cdt.codan.core.prefs
new file mode 100644
index 0000000..3a30df6
--- /dev/null
+++ b/.settings/org.eclipse.cdt.codan.core.prefs
@@ -0,0 +1,67 @@
+#Thu Nov 17 11:51:18 BRST 2011
+eclipse.preferences.version=1
+org.eclipse.cdt.codan.checkers.errnoreturn=Warning
+org.eclipse.cdt.codan.checkers.errnoreturn.params={implicit\=>false}
+org.eclipse.cdt.codan.checkers.errreturnvalue=Error
+org.eclipse.cdt.codan.checkers.errreturnvalue.params={}
+org.eclipse.cdt.codan.checkers.noreturn=Error
+org.eclipse.cdt.codan.checkers.noreturn.params={implicit\=>false}
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={}
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={}
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Info
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={no_break_comment\=>"no break",last_case_param\=>true,empty_case_param\=>false}
+org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
+org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={unknown\=>false,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={}
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={}
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={}
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={paramNot\=>false}
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={else\=>false,afterelse\=>false}
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={macro\=>true,exceptions\=>("@(\#)","$Id")}
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+useParentScope=false
diff --git a/ANNOUNCE b/ANNOUNCE
new file mode 100644
index 0000000..699417d
--- /dev/null
+++ b/ANNOUNCE
@@ -0,0 +1,280 @@
+TC-main:
+TinyCOBOL is an effort to create a free COBOL 85 compiler.
+
+It generates GNU assembler for the IA32 (i386) Linux, BeOS, FreeBSD,
+Win32 platforms. A executable binary can then be created using the GNU
+assembler and linker.
+
+The project is approaching the first beta release with many statements
+already implemented.
+
+
+0.62:
+This release contains mainly bugs fixes, and some enhancements.
+It includes updates to the main compiler and run-time.
+
+The pre-processor has been integrated back into the main compiler.
+Improvemnents to error detection, reporting and parser recovery.
+Support for dynamic loading of DLL's for the Win32 platform.
+
+
+0.61:
+This release contains mainly bugs fixes, and some enhancements.
+It includes updates to the main compiler and run-time.
+
+
+0.60:
+This release contains mainly bugs fixes, and some enhancements.
+It includes updates to the main compiler and run-time.
+
+Improvemnents have been made in the following areas: locking for
+relative files, better support of print files (write after and
+before advancing) and better compatibility with 85 Standard for
+some indexed file I/O operations.
+
+
+0.59:
+This release contains mainly bugs fixes, and some enhancements.
+It includes updates to the main compiler and run-time.
+
+Support for internationalization (en, pr_BR, it, fr) has been added.
+
+Improvemnents have been made in the following areas: multi-line
+comment entries in the identification division, run-time error
+reporting, and plenty of new intrinsics.
+
+Finally, there is now only one library, shared by default.
+
+
+0.58:
+This release contains mainly bugs fixes, and some enhancements.
+It includes updates to the main compiler, run-time, the regression
+and NIST test suites.
+
+Support for inline comments, DEBUGGING lines, declaratives (preliminary),
+intrinsic functions (preliminary), INSPECT CONVERTING, concatenation
+(preliminary), have been added to the compiler.
+
+The compiler front end and resource options have been enhanced
+to define the default compiler action (create executable or library).
+The compiler can also create an static/shared libraries, from COBOL sources,
+directly from the command line.
+
+And finally, embedded SQL can be used with TC, by using a vendor supplied
+SQL pre-processor and libraries.
+
+
+0.57:
+This release contains mainly bugs fixes, and some enhancements.
+It includes updates to the main compiler, run-time, the regression
+and NIST test suites.
+Support for the ADD/SUBTRACT CORRESPONDING, RENAMES, statements
+have been added to the compiler.
+
+The compiler front end and resource options have been enhanced to
+enable TC to create an executable directly using the command line.
+The compiler will now auto detect the TC auxiliary libraries required,
+and include them in the link step.
+
+
+0.56:
+This release contains mainly bugs fixes, and some enhancements.
+It includes updates to the main compiler, run-time, the regression
+test suite.
+
+Support for the CHAIN, GOBACK statements, BLANK WHEN ZERO,
+INITIAL (preliminary), SPECIAL-NAMES (preliminary) clauses,
+COMPUTATIONAL-X type, have been added to the compiler.
+
+The compiler front end has been enhanced to enable TC to create
+an executable directly using the command line.
+
+The command line options have been changed to more closely reflect
+the GCC options.
+
+Preliminary support for the Win32 (native, no emulation layer required)
+platform using the MinGW (Mingw32) tool chain.
+
+A set of utilities have been added to enable TC testing
+for COBOL standard compatibility using the NIST test suite.
+
+General notes:
+Bison is the default parser, Berkeley's YACC (byacc) version 1.9.3
+is now an option.
+The configure script will now handle multiple versions library DB and
+C compilers depending on the options selected.
+
+Important note:
+Effective with version 0.56, the command line options have been changed
+to more closely reflect the GCC options.
+
+The default action when no appropriate command line option is given,
+defaults to 'x', create an executable (preprocess, compile, assemble and link).
+
+Previous version defaulted to 'S', generate assembler code (preprocess, compile).
+
+
+0.55:
+This release contains mainly bugs fixes, and enhancements.
+It includes updates to the main compiler, run-time,
+the regression test suite.
+The grammar was modified to enable compilation with Bison.
+The MOVE run-time routines have been updated and improved.
+ScreenIO has been updated to handle screen status and function keys.
+Support for [SIGN IS] {LEADING/TRAILING} [SEPARATE] clauses,
+have been added to the compiler run-time.
+Preliminary work as started on the NIST test programs.
+
+Important note:
+Effective with version 0.55, to compile the TinyCOBOL compiler
+will require Berkeley's YACC (byacc) version 1.9.3 or Bison.
+Version 1.9.3 of YACC (byacc), only available on the snapshots web
+page, has been modified to handle huge grammars such as COBOL.
+Using previous versions of Berkeley's YACC on the TinyCOBOL grammar,
+will result in an abort on a table overflow error.
+
+
+0.54:
+This release contains mainly bugs fixes, and enhancements.
+It includes updates to the preprocessor, main compiler, RTS,
+the regression test suite, EVALUATE, GOTO, READ, WRITE, RETURN,
+DELETE, START, REWRITE statements.
+Support for multiple WHEN clauses in SEARCH statement,
+[SIGN IS] {LEADING/TRAILING} [SEPARATE] clauses,
+FLOAT-LONG (COMP-2) FLOAT-SHORT (COMP-1) floating point types,
+INSPECT...CONVERTING clause, have been added to the compiler.
+
+
+0.53:
+This release contains mainly bugs fixes, and enhancements.
+It includes updates to the preprocessor, math verbs,
+the regression test suite, gdb debug stabs,
+STRING/UNSTRING statements, ACCEPT from COMMAND-LINE and
+ENVIRONMENT-VARIABLE statements.
+Support for the dynamic CALL statement,
+ACCEPT DAY, DAY-OF-WEEK, ON EXCEPTION and ERASE clauses,
+ADD and SUBTRACT (CORRESPONDING option) statements,
+EXTERNAL clause in the SELECT statement, BINARY-CHAR,
+BINARY-SHORT, BINARY-LONG, BINARY-DOUBLE and
+COMP-1/COMP-2 (preliminary) floating point types,
+support for the Debian package format
+have been added to the compiler.
+
+
+0.52:
+This release contains bugs fixes, and enhancements,
+including updates to the preprocessor, math verbs,
+MOVE (CORRESPONDING option) statement, COMPUTE (exponent operator) statement,
+enhancements to the regression test suite.
+Support for the BLANK WHEN ZERO clause, SYNC clause, qualification,
+OCCURS...DEPENDING ON... clause (variable-sized tables),
+RECORD VARYING ... DEPENDING ON ... (variable-sized records) clause,
+multiple record defines for FD entries, sequence of source programs,
+have been added to the compiler.
+
+
+0.51:
+This release contains bugs fixes, and enhancements,
+including updates to the math verbs, the STRING statement,
+file IO READ/WRITE statements, DISPLAY/ACCEPT statements,
+SET statement, abbreviated conditional expressions.
+Reference modification, pointer types, EXTERNAL semantics (preliminary)
+have been added to the compiler.
+The new pre-processor will now execute by default.
+The Win32 (preliminary) platform, using the Cygwin emulation layer,
+is now supported.
+
+
+0.50:
+This release contains bugs fixes, and code enhancements,
+including updates to the math verbs, the EVALUATE statement,
+file OPEN/CLOSE statements, file LINE SEQUENTIAL IO.
+The CALL BY CONTENT, JUSTIFIED RIGHT, and REPORT SECTION (preliminary)
+statements has been added to the COBOL grammar.
+The DISPLAY/ACCEPT LINE/POSITION statements have been added, as an
+extension to the standard COBOL grammar.
+Sample programs with CGI, SQL, and GUI interfaces have been added
+to the source distribution.
+
+0.4:
+This release contains bugs fixes, and code enhancements,
+including updates to the GO TO statement, the screen I/O
+statements, SORT statements. A preprocessor has been added
+to handle fixed and free syntax, and all COPY statements.
+Support for external file name assignment in SELECT and
+FD statements has been added as an extension to the standard
+COBOL 85 grammar.
+
+
+0.3:
+This release contains bugs fixes, and major modifications.
+It includes an update to the IF/ELSE statements to include
+abbreviated conditional expressions. The addition of static variables,
+the EVALUATE statements, variable length (1, 2, 4, 8) binary fields,
+the screen I/O statements. The CALL BY ... RETURNING variable has been
+added, as an extension to the standard COBOL 85 grammar.
+
+
+0.2:
+This release contains bugs fixes, and code enhancements,
+including updates to the IF/ELSE relational, class, name,
+sign conditionals statements. The CALL BY VALUE has been
+added, as an extension to the standard COBOL grammar.
+
+
+0.1.5.5:
+This minor release contains some bugs fixes, and some
+code enhancements, including updates to the PERFORM
+statements. With this release all PERFORM statements
+are functional and conform to the COBOL 85 standard.
+
+
+0.1.5.3:
+In this release, along with some bug fixes, the
+INITIALIZE, CURRENCY, PERFORM WITH TEST BEFORE/AFTER
+option statements have been added to the COBOL
+grammar.
+
+
+0.1.5.0:
+This release contains some additions to the COBOL 85
+grammar and some bug fixes.
+
+
+0.1.0.1:
+bug fix release.
+
+
+20000507:
+An implemented SEARCH statement for tables, and more
+bug fixes.
+
+
+20000302:
+Better configuration/installing, a new ability to read
+environment variables using the ACCEPT verb, use of
+library DB version 2.xx+, implementation of START ...
+GREATER THAN or Relative files, an enhanced DISPLAY
+verb to enable to direct output to stdout/stderr, and
+many bug fixes.
+
+
+991210:
+Ability to use GDB for debugging, with COBOL source
+lines listing, breakpoints, and variable
+display/modifying, 32-bit binary storage and
+operations on variables with "USAGE IS COMP", and
+table access support using the SET statement.
+
+
+991103:
+The following features are implemented: ACCEPT from
+time/date, DISPLAY, and file input/output (READ,
+WRITE, REWRITE, START) for indexed, relative, line and
+line sequential files. The functions for STRING,
+UNSTRING, INSPECT, SET and ALTERNATE KEYS are
+currently in development.
+
+
+991028:
+Initial release.
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..0f08fff
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,46 @@
+List is in alphabetic order.
+
+Author:
+-------------------------------------------------------------------------------
+Rildo Pragana .
+
+Maintained-by:
+-------------------------------------------------------------------------------
+Andrew Cameron
+Bernard Giroud
+Ferran Pegueroles
+Jeff Smith
+Rildo Pragana
+
+Contributors: Contribution:
+-------------------------------------------------------------------------------
+Alain Lucari - Fixes for write with advancing.
+Alan Cox - Initial code to generate GNU assembler.
+Bernard Giroud - Declaratives, Intrinsic functions, CALL statements.
+David Douthitt - Produced libc6 RPM packages for releases.
+David Essex - Preprocessor, internationalization, core compiler.
+David Billsbrough - Sample spec file for RPM version 4 format.
+Ferran Pegueroles - Created Debian package release and man files,
+ Screen status and function keys for screenIO,
+ Intrinsic functions.
+Fred Mobach - Resident COBOL standard expert.
+Gerard Hollard - Qualification problem fix.
+Glen Colbert - Initial code for both command line front end and
+ regression test suite
+Hudson Reis - Portuguese version of man files.
+Jim Morcombe - External file MF compatibility option.
+Jim Noeth - Move routines in RTS (Run Time System).
+Jonathan Riddell - Docs: Introduction to COBOL and TinyCOBOL.
+Jose de Souza - Several bug fixes in compiler and RTL.
+Keiichi Takahashi - Created libc6 RPM packages.
+Keisuke Nishida - Bison patch and misc. fixes.
+Laura Tweedy - Initial lex code for preprocessor and cobf2f utility.
+Leonardo Epifani - Several RTS patches.
+Luciano D. C. Manzo - Initial spec file to create RPMs.
+Mariusz Stakowski - INSPECT TALLYING.
+Matt Verran - BeOS configuration.
+Paolo Bizzarri - Several RTS patches.
+Sean Bufford - Patch to fix indexed file index file I/O offset
+ calculation
+Stephen Connolly
+
diff --git a/BUGS b/BUGS
new file mode 100644
index 0000000..734bfb2
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,91 @@
+BUGS:
+
+Note: This list is NOT up of date.
+
+----------------------------------------------------------------------------
+
+From - Thu Mar 15 05:02:26 2001
+From: Mark Purtill
+Subject: [Tiny-cobol-users] Bug: Qualified array core dump
+Date: Wed, 14 Mar 2001 11:17:57 -0800 (PST)
+
+
+I'm running tinycobol-0.50 (from the RPM) on a RedHat 5.1
+system.
+The following program, when compiled, causes htcobol to
+crash.
+
+WORKING-STORAGE SECTION.
+
+01 BUG1.
+ 05 BUG2.
+ 10 COMMON PIC 999 VALUE 6.
+ 05 BUG3 OCCURS 28 TIMES.
+ 10 COMMON PIC 999.
+ 05 BUG4 PIC 999.
+ 05 BUG5 PIC 999.
+
+ PROCEDURE DIVISION.
+
+* This line works:
+ MOVE COMMON OF BUG2 TO BUG5.
+* This line dumps core, after giving this message:
+* *!ERROR!* 256 : line 24, symbol ): "" is not child of "" ***
+ MOVE COMMON OF BUG3(BUG5) TO BUG5.
+
+
+----------------------------------------------------------------------------
+
+error:
+
+In htcobgen.c yyparse(), seams to be writing a lot(230) of blanks lines
+for no apparent reason.
+
+Beginning compile process ...
+.... <-
+Lines compiled: 231
+
+cause: unknown.
+
+location: unknown.
+
+ printf("Beginning compile process ...\n");
+-> yyparse();
+ printf("Lines compiled: %4d\n",lineno);
+
+
+----------------------------------------------------------------------------
+
+error:
+
+ 01 TABEL-C.
+ 05 TAB-C1 OCCURS 10 TIMES INDEXED BY C1.
+ 10 TAB-C2 OCCURS 20 TIMES INDEXED BY C2.
+ 15 TAB-C3 OCCURS 300 TIMES INDEXED BY C3.
+ 25 TAB-C4 PIC 9(05).
+ 25 TAB-C5 PIC 9(05).
+
+* SET C1 TO 1.
+ MOVE 1 TO C1.
+
+cause:
+Implicit variables defined by INDEXED BY clause must be set by the
+'SET var [ TO | UP BY | DOWN BY ] integer' clause. It should not be
+set using MOVE, ADD, SUB verbs, thus should be flagged as an error.
+
+location: unknown.
+
+----------------------------------------------------------------------------
+
+error:
+
+ 01 W01-COMPUTE PIC 9(8).
+ 05 W05-HOUR PIC 9(2).
+ 05 W05-MIN PIC 9(2).
+ 05 W05-SEC PIC 9(2).
+
+cause:
+Caused by using level 01 variable with PIC clause. Should be syntax error.
+
+location: unknown.
+
diff --git a/CHANGES b/CHANGES
new file mode 100644
index 0000000..ad60df5
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,253 @@
+November 29, 1999 (Andrew)
+Added code to fileio.c to return the correct ANSI 74 Error codes
+for files that are accessed but not open etc.
+
+November 25, 1999 (Andrew)
+Change fileio.c for write advancing.
+Change htcobgen.c for write advancing.
+
+November 25, 1999 (Rildo)
+Modified again the copy...replace list of replacements, so that all
+replacements are appended only when switching the input file. (scan.l)
+
+November 23, 1999 (Andrew)
+Fixed up rewrite for relative files.
+Added code for write advancing.
+
+November 24, 1999 (Rildo)
+Modified YY_INPUT and added several functions to do the preprocessing online
+for the "copy" statement. The source is now yyin to be better flex compatible.
+
+November 23, 1999 (Rildo)
+Fixed install and lookup functions for non-ASCII literals (high/low values).
+Update "move" at the library to cope with quoted literals \0 and \xXX.
+
+November 22, 1999 (Andrew)
+Change htcobgen.c (gen_rewrite) to handle relative rewrites.
+Change fileio.c to handle rewrite.
+
+November 21, 1999 (Rildo)
+Changes in picture processing (P assumes V).
+Introduction of a variable decimal_comma in compile-time and run-time
+to swap '.' and ',' interpretation.
+
+November 20, 1999 (Rildo)
+Applied changes at the "main" suggested by Glen, regarding file names.
+Implemented "ALL literal" at the parser,scanner,codegen and library (mcmove.c),
+with just small changes at this last, function "move". Also, high-values,
+low-values, quotes.
+
+November 19, 1999 (Andrew)
+Added routine for "rewrite" to fileio.c. Cleaned up the code to remove
+compile warnings.
+
+November 18, 1999 (Rildo)
+Added several functions to manage multi-subscripted variables, including
+relative references.
+
+November 15, 1999 (Rildo)
+Merged with Andrew's changes.
+Changed lookup_var (htcobgen.c) to make sure a field is fully qualified.
+
+November 15, 1999 (Andrew)
+Added code to fileio.c to allow read and write to handle line sequential io.
+
+November 15, 1999 (Rildo)
+Added "varying" clause to "perform".
+Corrected my mistake on the syntax of "perform".
+Changed "perform_range" to be better generalized (with/without "thru"). Now
+inherited attributes hold what kind of perform to do.
+
+November 14, 1999 (Andrew)
+Finished off the first version of the sort routines. These routines handle
+duplicate keys. I have also added some of the code to the library for
+read next. All changes have been made to fileio.c.
+
+November 13, 1999 (Rildo)
+Changed "lookup_label" and added a forced-cloning option to "install".
+Update listing generator (htcobgen.c) for the cloned paragraphs,
+and also to accommodate the (compound) variable names.
+Added "perform var/literal times paragraph_range" to our syntax. Now we can see
+why we don't need to backtrack!
+Routines added to htcobgen.c: gen_push_int, gen_perform_times, merged with the
+previous semantics of perform.
+
+November 12, 1999 (Rildo)
+Added more states to the scanner for accounting to redefined variables and
+file variables (FD or SD).
+Modified (again) "install" (htcobgen.c) to avoid cloning when not desired.
+
+November 12, 1999. (v991111): (David Essex)
+Moved termios.h header to basicio.c file, to avoid any potential ECHO
+redefinition.
+Enhanced INSTALL instructions, and renamed Readme.txt file to README.
+Changed output of scanner(scan.l) very slightly to have \n at end.
+Changed Makefile so that htversion.h is created using directory name
+and current date, instead of Version.txt file.
+
+November 11, 1999 (v991111a): (Rildo)
+Added code (htcobgen.c) to take care of clones both for variables and
+paragraphs.
+Modified parsing to accept "var of parent of ...".
+Started implementing of "inspect".
+
+November 11, 1999. (v991111): (David Essex)
+Changed working storage fields parsing(htcobol.y), and added implicit
+variable index creation code(htcobgen.c), so that 'INDEXED BY index'
+clause will work.
+Added error counter(on yerror()) which is used by htcobgen.c to set
+the return code. This enables make to work properly.
+Added the ability to use a full name when calling the compiler. Now
+htcobol will try to open filename, then try filename.cob before aborting.
+
+
+November 06, 1999 (Rildo)
+Modified scan/parse to detect already defined variables (token VARIABLE). Now
+labels, literals and variables are separate entities.
+
+November 05, 1999 (Andrew)
+Modified the sort_release in fileio.c to handle a combination of Ascending
+and Descending sort keys.
+
+November 04, 1999 (Rildo)
+Modified hash() (htcobgen.c) to calculate the hashing with uppercased chars.
+Modified code for the lookup of reserved words, for not buffering and
+converting the string being tested (strcasecmp is used instead).
+Added states to scan.l to simplify the parsing of all commenting statements
+of the identification division. Now everything (except environment division
+decl) is ignored.
+The variable curr_division is used now in the parser to switch states of the
+lexer (parser feedback).
+
+November 04, 1999 (Rildo)
+Eliminated VALUES state (scan.l) and some general simplifying.
+Corrected a bug with LABELSTR recognizing (if use "-" should be followed by at
+least another char).
+
+November 03, 1999 (Rildo)
+All functions named XXX_from and XXX_into are similar with their suffix-less
+counterparts. Example cob_read_into == cob_read, cob_write_from == cob_write,
+and so on. In place of the record pointer, there will be a buffer pointer.
+
+November 02, 1999 (Rildo)
+Modified gen_cobwrite (htcobgen.c) so that for both "write" and "write from"
+the same "call cob_write" is output, changing only the arguments.
+Merged with last release of Andrew.
+
+November 02, 1999 (Andrew)
+Written the basic Sort Library (fileio.c)
+Provided test program t08 to test the sort library.
+Sort with Duplicates still needs to be completed.
+
+October 30, 1999 (Rildo)
+Moved file description generation to the end of data division, so we can
+use a variable as filename container. Only cob_open runtime was changed to
+accommodate such modification. Now there is a list (files_list) that accumulates
+all file variables.
+Eliminated old debug code and all o_deb references (htcobol.y, htcobgen.c),
+including all line_info() calls.
+Added stack frame cleaning (auto-magically) functions (htcobgen.c), and also
+push_eax and push_ebx to use instead of writing directly to o_src. This should
+make more error prone our code generation.
+
+October 30, 1999 (Andrew)
+Started sort routines (fileio.c)
+Modified htcobgen.c for sort commands. (?I think?)
+
+October 29, 1999 (Rildo)
+Eliminated struct var_fd and moved open_mode to struct file_desc.
+Now file functions receive a pointer to the record itself.
+Sequential files save the file handle into dbp (instead of a db pointer).
+All state information (only needed in indexed and relative files) are
+saved at the libdb structs now.
+
+October 28, 1999 (Rildo)
+Modified string recognizer in scan.l to allow 1-char strings.
+Eliminated call_list in htcobgen.c (used to gen externals).
+Corrected the syntax for filenames (now is in select statement, see t06).
+Added cob_read, cob_write for relative files.
+Fixed gen_write (htcobgen.c) for relative files.
+
+October 27, 1999. (v991027): (David Essex)
+Added fix for lower case input in lex scanner(scan.l).
+Added code for version number (Makefile htcobgen.c htversion.h).
+Moved basic I/O routines from general.c to basicio.c file.
+Added SP fix in gen_accept function (htcobgen.c).
+Added function definitions and removed includes in (htcoblib.h).
+Added fix for USAGE IS in lex scanner(scan.l).
+Changed input file name and Makefile in directory test.code/tdb01. For some
+reason, my version of GCC(2.7.2) refused to compile it with the file name main.c.
+
+
+October 26, 1999: (Rildo Pragana)
+Changed all file functions to "cob_", to avoid name clashes.
+Removed RUNNING-TERMINALS clause from both parser and scanner.
+Corrected wrong label at gen_not (htcobgen.c).
+Eliminated "short" expressions in "jmp short L%d" (htcobgen.c).
+
+October 24, 1999 (Rildo):
+Removed all debugging compilation, as this was for an old prolog-based debugger
+and the tracking of ip locations is hard to do now, because of .align
+instructions. Instead, we should use gdb with #line directives.
+Modified several miscalculated stack cleaning instructions (addl $n,%esp).
+Modified function calling: each parameter required is passed as two pointers,
+(1) the fld_desc of the parameter and (2) the parameter storage.
+Added file handling routines (yet unfinished): mc_open, mc_write, mc_close,
+save_status.
+Added a picture expand routine (mc_picexpand) in the library.
+
+October 23, 1999:
+Added ACCEPT function in RTL(basicio.c).
+Added fix to remove comma as decimal delimiter in lex scanner(scan.l).
+
+October 22, 1999:
+
+October 21, 1999:
+Changed run header info in (htcobgen.c).
+Added cobpp program utility in util directory. It will convert from
+fixed to/from free-form COBOL formats.
+Added new fix for program flow control at stop-run(htcobgen.c).
+Added Rildo Pragana's fix for program flow control(htcobgen.c mccntrl.s).
+Added fix for for period/comma in PIC and VALUE in lex scanner(scan.l).
+
+October 19, 1999:
+Removed .fill and other junk at end.
+Added id section. Removed prg-id as main label and replaced with main.
+Added Rildo Pragana's indexed file I/O source in test.code/t04 directory.
+
+October 18, 1999:
+Make some small changes in lex scanner(scan.l), while checking COPY code.
+
+
+October 13, 1999:
+Merged David Essex's and Andrew Cameron's versions, using Andrew Cameron
+October 12, 1999 release as a base.
+Added code(htcobgen.c) for return code. Program return code is stored in
+register %eax. Since COBOL-74 does not support the statement RETURN-CODE,
+the program return code is permanently set to zero.
+Added fix for for comment line (^"*".*$) in lex scanner(scan.l).
+
+October 12, 1999:
+Andrew Cameron releases his latest version.
+Added math functions to lib. Started on file functions.
+
+October 11, 1999:
+Andrew Cameron releases his latest version, based on Alan Cox's June 23, 1999
+version.
+Added new basic I/O functions in RTL. Removed ncurses as basic I/O.
+
+October 3, 1999:
+David Essex begins new version.
+Changed COBOL generation to look like GCC assembler generation(htcobgen.c).
+Enhanced debugging information for assembler in COBOL generation(htcobgen.c).
+Added fix for for PIC with VALUE in lex scanner(scan.l).
+Started work on process control.
+
+September 23, 1999:
+Alan Cox releases his latest version to David Essex.
+
+June 23, 1999:
+Alan Cox, releases his changes. It now generates GNU GAS assembler.
+
+June 11, 1999:
+Rildo Pragana, releases his COBOL compiler (for msdos) under the GPL.
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..a43ea21
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C) 19yy
+
+ This program 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 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/COPYING.LIB b/COPYING.LIB
new file mode 100644
index 0000000..161a3d1
--- /dev/null
+++ b/COPYING.LIB
@@ -0,0 +1,482 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ , 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644
index 0000000..577d685
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,14 @@
+
+ These files are part of the Tiny COBOL compiler.
+
+ Copyright (C) 2001, 2000 Rildo Pragana, Alan Cox, Andrew Cameron,
+ David Essex, Glen Colbert, Jim Noeth.
+ Copyright (C) 1999 Rildo Pragana, Alan Cox, Andrew Cameron, David Essex.
+ Copyright (C) 1991, 1993 Rildo Pragana.
+
+
+ The Tiny COBOL compiler is licensed under the GNU General Public License.
+ See COPYING for details.
+
+ The Tiny COBOL compiler run time library is licensed under the GNU Library
+ General Public License. See COPYING.LIB for details.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..5435263
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,8897 @@
+2005-08-03 21:53 rildo
+
+ * lib/pictures.c, test.code/00_FernandoWuthstrack/Makefile: Fixed
+ bug with picture greater than 128 bytes (length computation in
+ picCharLen).
+
+2005-08-01 16:22 rildo
+
+ * lib/fileio.c: Quick fix for rewrite after read_prev. There are
+ serious problems with file access libraries...
+
+2005-07-28 12:18 rildo
+
+ * compiler/Makefile.in, compiler/htcobemt.c, compiler/htcobgen.c,
+ utils/htcobviscomp.tcl: Bug fix with memory allocation for items
+ with level 01, when OCCURS clause is found.
+
+2005-07-26 14:30 rildo
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test.code/00_FernandoWuthstrack/external1.cob,
+ test.code/00_FernandoWuthstrack/external1sub.cob,
+ test.code/00_FernandoWuthstrack/tcl/teste.c: Fixed bug with EXERNAL
+ variables. Now we can share variables declared external, between
+ two or more run units.
+
+2005-07-26 11:55 rildo
+
+ * ChangeLog, test.code/00_FernandoWuthstrack/Makefile,
+ test.code/00_FernandoWuthstrack/external1.cob,
+ test.code/00_FernandoWuthstrack/external1sub.cob,
+ test.code/00_FernandoWuthstrack/tcl/ex1.cob,
+ test.code/t19/test19b.cob: Tests with EXTERNAL CLAUSE, to allow
+ sharing variables between run units.
+
+2005-07-25 21:30 rildo
+
+ * test.code/00_FernandoWuthstrack/tcl/ex1.cob: Small changes...
+
+2005-07-25 21:24 rildo
+
+ * test.code/00_FernandoWuthstrack/tcl/: Makefile, cobtools.h,
+ cobtools.tclc, ex1.cob, ex1.tcl, formA.tcl, mentry.cob, tclgui.cob,
+ tctcl.c: Changes in tctcl to simplify the interface. Added a simple
+ example to show how to interface to a GUI with full control from
+ the cobol program.
+
+2005-07-15 16:36 rildo
+
+ * lib/cobmove_e_.c: Solved problem with move edited-edited.
+
+2005-07-10 00:59 rildo
+
+ * lib/: scr_curses.c, screenio.c: Changes requested for "delete"
+ edition (pic 'X') and numeric input in screen section fields (to
+ display nonsignificative zeros).
+
+2005-07-06 23:04 rildo
+
+ * lib/: config.c, htrtconf, scr_curses.c, screenio.h: Fix decimal
+ point key selection. Other fix for input of numerical fields with a
+ separate picture in screen section.
+
+2005-07-05 23:14 rildo
+
+ * lib/: config.c, htrtconf, scr_curses.c, screenio.h: Added
+ KEY_AUTOCLEANALL configuration option, to enalbe/disable autoclean
+ when accepting alphanumeric (or non numeric in general) fields.
+
+2005-07-02 16:59 rildo
+
+ * lib/screenio.c: Added refresh() to ncurses display functions, so
+ the display is updated in real time.
+
+2005-07-01 12:05 rildo
+
+ * lib/scr_curses.c: Bug fix: when the first key is a signal change
+ ('+', or '-'), set the moved flag on, so it disables the auto-clean
+ feature.
+
+2005-07-01 11:52 rildo
+
+ * lib/screenio.c: Fixed bug with memory allocation (too small field
+ when we have a signal).
+
+2005-06-28 00:39 rildo
+
+ * compiler/htcobgen.c, lib/general.c,
+ test.code/00_FernandoWuthstrack/Makefile: Fixed bug with CANCEL
+ statement.
+
+2005-06-24 08:55 rildo
+
+ * test.code/00_FernandoWuthstrack/: Makefile, tcl/Makefile,
+ tcl/api.doc, tcl/cobtools.h, tcl/cobtools.tclc, tcl/cscode.tcl,
+ tcl/formA.tcl, tcl/formB.tcl, tcl/mentry.cob, tcl/mentry.tcl,
+ tcl/tclgui.cob, tcl/tclguisub.cob, tcl/tclguisuba.cob, tcl/tctcl.c,
+ tcl/tctcl.def, tcl/teste.c, tcl/teste.tcl: Added test code
+ directories, including tclc interface.
+
+2005-06-23 11:12 rildo
+
+ * lib/: scr_curses.c, screenio.c: Fixed more bugs found in screen
+ section when the iput picture is different from the destination
+ field's picture.
+
+2005-06-22 18:42 rildo
+
+ * lib/scr_curses.c: Better check of digits overflow in decimal
+ (integer part) input.
+
+2005-06-22 18:30 rildo
+
+ * lib/scr_curses.c: Fixed bug with accept decimal numbers when the
+ picture (integer part) have a number of digits different from the
+ accepted number.
+
+2005-06-22 10:30 rildo
+
+ * ChangeLog, lib/scr_curses.c, lib/screenio.c: Bug fix with accept
+ in screen section (type = 'D'), (1) fix for decimal numbers and (2)
+ refmods.
+
+2005-06-21 18:26 rildo
+
+ * compiler/htcobemt.c: Modified again accept of refmods to receive
+ the full field, but without the "auto-clean" feature (similar to a
+ regular accept).
+
+2005-06-20 19:42 rildo
+
+ * lib/screenio.c: Still changes to avoid iCharCnt stay with wrong
+ value, yet allocate the correct size for Scr field.
+
+2005-06-20 19:38 rildo
+
+ * lib/: pictures.c, screenio.c: Fixed a memory allocation bug in
+ ncurses display.
+
+2005-06-20 13:50 rildo
+
+ * lib/: scr_curses.c, screenio.c: Fixed segfault with accept
+ refmoded variable (pic '99/99/9999').
+
+2005-06-20 10:11 rildo
+
+ * utils/htcobviscomp.tcl: Updated htcobviscomp.tcl to the new
+ environment.
+
+2005-06-15 19:27 rildo
+
+ * compiler/htcobemt.c, lib/pictures.c, lib/screenio.c: Fixed bug
+ with screen section (display statement).
+
+2005-06-14 15:55 rildo
+
+ * compiler/: htcobemt.c, htcobgen.c: Changes related to the merge
+ of SF cvs and local project cvs,
+
+2005-06-14 15:19 rildo
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, lib/config.c,
+ lib/general.c, lib/htcoblib.h, lib/pictures.c, lib/scr_curses.c,
+ lib/screenio.c, lib/screenio.h: Merged changes from SourceForge
+ site.
+
+2005-06-13 23:49 dessex
+
+ * tconfig.mingw.sh, version.txt, cobrun/htcobrun.c,
+ cobrun/test.code/dyntest.cob, cobrun/test.code/subrots.cob,
+ compiler/htcobemt.c, compiler/htcobolrc.mingw: Added run-time
+ 'tcob_stop_run' call to end of 'cobrun' program. Added test run
+ script for 'cobrun.sh' shell script. Bug fix for MinGW function
+ calls.
+
+2005-06-13 04:14 dessex
+
+ * version.txt, compiler/htcobemt.c: Added run-time 'tcob_stop_run'
+ call to end of generated function 'main'.
+
+2005-06-13 03:07 dessex
+
+ * version.txt, compiler/htcobemt.c, test.code/t35/Makefile,
+ test.code/t35/test35.cob: Bug fix for 'e ' option.
+
+2005-06-13 02:07 dessex
+
+ * compiler/htcobemt.c, test.code/t35/test35.cob,
+ test.code/tdb01/tdb01a.cob: Change to program entry code (Part II).
+ Bug fix for 'M auto' option. Stack bug fix for 'EXIT PROGRAM' and
+ 'GOBACK' statements.
+
+2005-06-12 01:23 dessex
+
+ * Makefile.in, version.txt, cobrun/htcobrun.c,
+ cobrun/test.code/Makefile, cobrun/test.code/Makefile.mingw,
+ cobrun/test.code/subrots.cob, compiler/htcobemt.c,
+ compiler/htcobgen.c, compiler/htcobol.y, compiler/htcobolrc.in,
+ compiler/htglobals.c, compiler/htglobals.h, compiler/hthelp.h,
+ compiler/hthelp.h.in, info/htcobol.man, info/htcobol_en.man,
+ info/htcobol_man.html, info/htcobol_man_en.html, lib/basicio.c,
+ lib/general.c, lib/htcoblib.h: Changed program entry code to allow
+ more flexibility (Part I). Changed run-time to store
+ 'COMMAND-LINE' parameters. Changed 'STOP RUN' statement code
+ generation to conform to standard (clean-up and return to OS).
+ Updated cobrun program and test code samples.
+
+2005-06-09 17:59 dessex
+
+ * Makefile.in, cobrun/test.code/dyntest.cob, compiler/htcoboly.h,
+ test.code/t15/test15e.cob, test.code/t15/test15g.cob,
+ test.code/t15/test15i.cob, test.code/t15/test15k.cob,
+ test_suite/call_tests/ptest01.cob,
+ test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/ptest03.cob,
+ test_suite/call_tests/ptest04.cob,
+ test_suite/call_tests/ptest05.cob,
+ test_suite/compile_tests/ctest01a.cob,
+ test_suite/compile_tests/ctest01b.cob,
+ test_suite/compile_tests/ctest03.cob,
+ test_suite/compile_tests/ctest04.cob,
+ test_suite/compile_tests/ctest05.cob,
+ test_suite/compile_tests/ctest06.cob,
+ test_suite/format_tests/test06a.cob: Changed invalid 'STOP-RUN'
+ statements to 'STOP RUN'.
+
+2005-06-02 04:28 dessex
+
+ * Makefile.in, Makefile.mingw, configure, configure.in,
+ tconfig.mingw.sh, version.txt, cobrun/Makefile.in,
+ cobrun/Makefile.mingw, cobrun/Readme.txt, cobrun/htcobrun.c,
+ cobrun/htcobrun.sh, cobrun/test.code/Makefile,
+ cobrun/test.code/Makefile.mingw, cobrun/test.code/Readme.txt,
+ cobrun/test.code/dyntest.cob, cobrun/test.code/subrots.cob,
+ cobrun/test.code/tcobrun.sh: Added cobrun program and test code
+ samples. Updated the configure scripts and make files.
+
+2005-04-08 14:25 dessex
+
+ * cobpp/Readme.txt, compiler/htcobol.y: Bug fix for nested
+ inline-performs with enclosed IF/ELSE statement. Update Readme
+ file for cobpp directory.
+
+2005-01-13 05:14 dessex
+
+ * lib/fileio.c: Bug fix for zero size rec pointer array being
+ allocated when there is just one sort file. Thanks to Steven E.
+ Kalbach for reporting this bug.
+
+2005-01-12 02:35 dessex
+
+ * compiler/htcobemt.c: GCC 3.x fix external variables.
+
+2004-11-25 21:00 dessex
+
+ * ANNOUNCE, AUTHORS, ChangeLog, INSTALL.BeOS, INSTALL.Win32,
+ INSTALL.bin, Makefile.mingw, Readme.cygwin.txt, Readme.mingw32.txt,
+ tinycobol.lsm, version.txt, info/htcobol.man, info/htcobol_en.man,
+ info/htcobol_es.man, info/htcobol_fr.man, info/htcobol_it.man,
+ info/htcobol_man.html, info/htcobol_man_en.html,
+ info/htcobol_man_es.html, info/htcobol_man_fr.html,
+ info/htcobol_man_it.html, info/htcobol_man_pt_BR.html,
+ info/htcobol_pt_BR.man, info/isetup/Readme.isetup.txt,
+ info/isetup/tcobol.iss.in, lib/Makefile.mingw: Updates for the 0.62
+ release.
+
+2004-11-13 04:07 dessex
+
+ * configure, configure.in, htconfig.h.in, htconfig.mingw.h,
+ tconfig.mingw.sh, version.txt: Changed the configure scripts to get
+ the version number from an external file.
+
+2004-11-12 17:15 vilmar
+
+ * lockserver/lockserver.c: correct a bug in lockserver.c discovered
+ by Leonardo Epifani leonardoepifani@tin.it . Variable client_len
+ was not initialized when configured to a non mingw environment.
+
+2004-11-11 22:51 dessex
+
+ * Makefile.mingw, configure, configure.in, tconfig.mingw.sh,
+ compiler/Makefile.mingw: Make files fix and configure script update
+ for MinGW.
+
+2004-11-09 19:04 dessex
+
+ * Makefile.in, Makefile.mingw, configure, configure.in,
+ cobpp/cobpp.c, cobpp/cobpp.h, compiler/Makefile.in,
+ compiler/Makefile.mingw, compiler/htcoboly.h, compiler/htglobals.c,
+ compiler/htglobals.h, compiler/pp_parser.y, compiler/pp_scanner.l,
+ info/Makefile.in, info/isetup/tcobol.bat,
+ info/isetup/tcobol.iss.in, test.code/ReportGen/report.cob,
+ test_suite/cobol_test.pl: Merged pre-processor into main compiler.
+ Updated the test_suite script to use main compiler for
+ pre-processor tests. Updated the build and install files. Updated
+ the configure script version.
+
+2004-11-06 09:42 vilmar
+
+ * configure.in, compiler/htcobol.y: variable subscripted or indexed
+ not recognized as variable
+
+2004-11-04 20:16 vilmar
+
+ * configure.in, compiler/htcobol.y: bug in move statement. literal
+ was allowed as destination.
+
+2004-11-04 18:48 vilmar
+
+ * compiler/htcobol.y: bug in go to depending on, part I. variable
+ non numeric was accepted.
+
+2004-10-31 08:48 dessex
+
+ * configure, configure.in, compiler/htcobemt.c: Bug fix for static
+ variables.
+
+2004-10-29 04:13 dessex
+
+ * configure, configure.in, compiler/htcobgen.c, compiler/htcobol.y,
+ lib/htrtconf, test_suite/call_tests/stest02.cob,
+ test_suite/compile_tests/ctestws02.cob,
+ test_suite/format_tests/test05b.cob: Added error check to parser
+ for maximum elementary alphanumeric and numeric sizes. Added error
+ check to parser for undefined variables. Updated error check to
+ parser for MOVE statements. Updated RTL config file.
+
+2004-10-23 23:29 dessex
+
+ * configure, configure.in, lib/basicio.c, lib/htcoblib.h: Changed a
+ C++ style variable (C99) define into C, so that it would compile
+ with GCC 2.x. Updated the configure script version.
+
+2004-10-23 15:43 hudsonreis
+
+ * configure: Re-generating the configure script in linux
+ environment. The latest version was generated in a MSYS window and
+ the Win32 file system is different.
+
+2004-10-23 13:03 hudsonreis
+
+ * lib/basicio.c: Added some rules in tcob_accept_cmd_line() to
+ ACCEPT ... FROM COMMAND-LINE work like in MF compiler. If the user
+ add the "--enable-mfcomp" switch running the configure script,
+ ACCEPT ... FROM COMMAND-LINE won't get the first argument(usually
+ the program-name) of the command-line.
+
+2004-10-22 19:00 vilmar
+
+ * configure.in, configure, compiler/htcobgen.c,
+ test_suite/compile_tests/ctestp-add3.cob,
+ test_suite/compile_tests/ctestp-subtract3.cob, compiler/htcobol.y,
+ compiler/htcoboly.h: wrong variable qualification was accepted.
+ fix ctestp-add3.cob and ctestp-subtract3.cob
+
+2004-10-19 22:59 vilmar
+
+ * configure.in, compiler/htcobol.y: qualified variables were not
+ treated correctly
+
+2004-10-16 14:12 dessex
+
+ * configure, configure.in, compiler/scan.l: Preliminary scanner
+ changes to prepare for pre-processor re-integration into main
+ compiler.
+
+2004-10-08 01:31 dessex
+
+ * INSTALL, install.txt: Renamed the file INSTALL to install.txt due
+ to a Win32 conflict with make install.
+
+2004-10-03 23:15 dessex
+
+ * Makefile.mingw, configure, configure.in: Updated the configure
+ script version. MinGW make file bug fix make install.
+
+2004-10-03 21:31 dessex
+
+ * configure, configure.in, compiler/htglobals.c: Bug fix for MinGW.
+
+2004-10-02 16:55 vilmar
+
+ * lib/fileio.c: removing a bug in the tcob_write_adbv function. An
+ extra blank line was inserted when using after.
+
+2004-10-02 04:06 dessex
+
+ * configure, configure.in, htconfig.h.in, tconfig.mingw.sh,
+ compiler/htcobol.c, compiler/htglobals.c, compiler/htglobals.h:
+ Updated the configure script for MinGW. Updated the configure
+ script version and htconfig init file. Updated the compiler init
+ code, for MinGW, to search the directory where compiler resides.
+
+2004-09-27 02:10 dessex
+
+ * Readme.cygwin.txt, configure, configure.in, htconfig.0.h,
+ info/Makefile.in, lib/fileio.c: RTL bug fix for LINE-SEQUENTIAL
+ files sorts (part 2). Updated the configure script version. Make
+ file bug fix for man file install.
+
+2004-09-25 19:38 dessex
+
+ * configure, configure.in, tinycobol.lsm, cobpp/Makefile.in,
+ cobpp/Makefile.mingw, cobpp/cobpp.c, cobpp/parser.y,
+ cobpp/scanner.l, lib/fileio.c, test.code/Readme.txt,
+ test.code/tgui02/Makefile.mingw, test.code/tgui02/Readme.txt,
+ test.code/tgui02/subp01.cob, test.code/tgui02/wprog.h,
+ test.code/tgui02/wprog01.c, test.code/tgui02/wprog02.c,
+ test.code/tgui02/wprog03.cob, test.code/tgui02/wres04.rc: Updated
+ the configure script version. RTL bug fix for LINE-SEQUENTIAL
+ files sorts. Preliminary pre-processor changes to prepare for
+ re-integration into main compiler. Added MinGW GUI examples in
+ 'test.code/tgui02' directory.
+
+2004-09-21 23:24 dessex
+
+ * configure, configure.in, tconfig.mingw.sh,
+ cobpp/tcppversion.h.in, compiler/htcobemt.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/htversion.h.in, compiler/scan.l,
+ test_suite/compile_tests/ctest01a.cob,
+ test_suite/compile_tests/ctest01b.cob,
+ test_suite/compile_tests/ctest01c.cob,
+ test_suite/compile_tests/ctest01d.cob,
+ test_suite/compile_tests/ctest01e.cob,
+ test_suite/compile_tests/ctest04.cob,
+ test_suite/compile_tests/ctest05.cob,
+ test_suite/compile_tests/ctest06.cob,
+ test_suite/compile_tests/ctested01.cob,
+ test_suite/compile_tests/ctested02.cob,
+ test_suite/compile_tests/ctested03.cob,
+ test_suite/compile_tests/ctested04.cob,
+ test_suite/compile_tests/ctested05.cob,
+ test_suite/compile_tests/ctested06.cob,
+ test_suite/compile_tests/ctestfc01.cob,
+ test_suite/compile_tests/ctestfc02.cob,
+ test_suite/compile_tests/ctestp-accept1.cob,
+ test_suite/compile_tests/ctestp-accept2.cob,
+ test_suite/compile_tests/ctestp-add1.cob,
+ test_suite/compile_tests/ctestp-add2.cob,
+ test_suite/compile_tests/ctestp-add3.cob,
+ test_suite/compile_tests/ctestp-close1.cob,
+ test_suite/compile_tests/ctestp-compute1.cob,
+ test_suite/compile_tests/ctestp-continue1.cob,
+ test_suite/compile_tests/ctestp-delete1.cob,
+ test_suite/compile_tests/ctestp-divide1.cob,
+ test_suite/compile_tests/ctestp-divide2.cob,
+ test_suite/compile_tests/ctestp-divide3.cob,
+ test_suite/compile_tests/ctestp-divide4.cob,
+ test_suite/compile_tests/ctestp-divide5.cob,
+ test_suite/compile_tests/ctestp-goto1.cob,
+ test_suite/compile_tests/ctestp-initialize1.cob,
+ test_suite/compile_tests/ctestp-multiply1.cob,
+ test_suite/compile_tests/ctestp-multiply2.cob,
+ test_suite/compile_tests/ctestp-open1.cob,
+ test_suite/compile_tests/ctestp-read1.cob,
+ test_suite/compile_tests/ctestp-read2.cob,
+ test_suite/compile_tests/ctestp-read3.cob,
+ test_suite/compile_tests/ctestp-read4.cob,
+ test_suite/compile_tests/ctestp-rewrite1.cob,
+ test_suite/compile_tests/ctestp-rewrite2.cob,
+ test_suite/compile_tests/ctestp-search1.cob,
+ test_suite/compile_tests/ctestp-search2.cob,
+ test_suite/compile_tests/ctestp-set1.cob,
+ test_suite/compile_tests/ctestp-start1.cob,
+ test_suite/compile_tests/ctestp-string1.cob,
+ test_suite/compile_tests/ctestp-subtract1.cob,
+ test_suite/compile_tests/ctestp-subtract2.cob,
+ test_suite/compile_tests/ctestp-subtract3.cob,
+ test_suite/compile_tests/ctestp-unstring1.cob,
+ test_suite/compile_tests/ctestws01.cob,
+ test_suite/compile_tests/ctestws02.cob,
+ test_suite/compile_tests/ctestws03.cob,
+ test_suite/compile_tests/ctestws04.cob,
+ test_suite/compile_tests/ctestws05.cob,
+ test_suite/compile_tests/ctestws06.cob,
+ test_suite/compile_tests/ctestws07.cob,
+ test_suite/compile_tests/ctestws08.cob,
+ test_suite/compile_tests/ctestws09.cob,
+ test_suite/compile_tests/ctestws10.cob,
+ test_suite/compile_tests/ctestws11.cob,
+ test_suite/compile_tests/ctestws12.cob,
+ test_suite/compile_tests/sample.cob,
+ test_suite/format_tests/test01.cob,
+ test_suite/format_tests/test01c.cob,
+ test_suite/format_tests/test02a.cob,
+ test_suite/format_tests/test02b.cob,
+ test_suite/format_tests/test03a.cob,
+ test_suite/format_tests/test03b.cob,
+ test_suite/format_tests/test03c.cob,
+ test_suite/format_tests/test04.cob,
+ test_suite/format_tests/test05a.cob,
+ test_suite/format_tests/test08a.cob: Updated the TC version in the
+ configure script. Updated the configure script for MinGW. Added
+ configure script code to add host OS to the version info. Updated
+ PROGRAM-ID name scanner, parser code to check for valid characters
+ and allow name to be defined as literal. Changed 'test_suite'
+ programs to remove '-' character from program name.
+
+2004-09-21 04:05 dessex
+
+ * configure, configure.in, htconfig.mingw.h, tconfig.mingw.sh,
+ compiler/Makefile.mingw, compiler/htcobemt.c, compiler/htcobol.y,
+ compiler/htglobals.c, compiler/scan.l, lib/Makefile.mingw,
+ lib/htcoblib.h: Updated the TC version in the configure script.
+ Updated the configure script, config header and make files for
+ MinGW. Removed C++ style comments from source code.
+
+2004-09-14 02:52 dessex
+
+ * configure, configure.in, compiler/htcobol.y,
+ test.code/t05/test05d.cob: Updated the TC version in the configure
+ script. Code generation bug fix for the 'PERFORM ... VARYING INDEX
+ FROM INDEX ...' statement. Updated tests in 't05', to include test
+ for 'PERFORM ... VARYING identifier-1 FROM identifier-1 ...'.
+
+2004-09-13 02:29 dessex
+
+ * test.code/t33/: Makefile, Makefile.mingw, Readme.txt,
+ dyntest.cob, dyntest1.cob, subrot1.cob, subrotc.c, subrots.cob:
+ Improved and updated tests in 't33', including test for WINAPI
+ call-convention (Win32 only).
+
+2004-09-10 20:28 dessex
+
+ * Makefile.in, configure, configure.in, tconfig.mingw.sh,
+ compiler/htcobemt.c, lib/Makefile.mingw: Updated the configure
+ script (tconfig.mingw.sh) for MinGW. Code generation bug fix for
+ the dynamic CALL statement.
+
+2004-09-04 22:39 dessex
+
+ * tconfig.mingw.sh, cobpp/Makefile.mingw, compiler/Makefile.mingw,
+ compiler/htcobemt.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/reswords.c, lib/Makefile.mingw, lib/dyncall.c,
+ lib/htcoblib.h, test.code/t33/rt.sh: Updated dynamic call for
+ STDCALL (WINAPI) on MinGW (Part II). Updated install section of
+ make files for MinGW. Added 'CALL-LOADLIB [literal | indentifier]'
+ statement (extention) which loads specific libraries.
+
+2004-09-03 03:14 dessex
+
+ * configure, configure.in, htconfig.h.in, htconfig.mingw.h,
+ tconfig.mingw.sh, info/isetup/tcobol.iss.in, lib/Makefile.mingw,
+ lib/dlfcnwin32.h, lib/dyncall.c, lib/dyncall_ltdl.c,
+ lib/htcobolrt.rc.in, lib/ltdl.c, lib/ltdl.h: Updated dynamic call
+ for MinGW (Part I). Removed LTDL library code from RT.
+
+2004-08-23 21:08 hudsonreis
+
+ * Makefile.in: Adding the cobpp directory in subdirs2 variable.
+ Now, make cleanall clean the directory cobpp.
+
+2004-08-21 17:29 hudsonreis
+
+ * lib/Makefile.in: Little fix in Makefile.in adding the MKDIR
+ variable(MKDIR = mkdir -p).
+
+2004-08-21 03:17 dessex
+
+ * configure, configure.in, compiler/htcobemt.c,
+ compiler/htcobgen.c, compiler/htcobol.y, compiler/reswords.c,
+ test.code/t25/Makefile, test.code/t25/Makefile.mingw,
+ test.code/t25/rt.sh, test.code/t25/test25.cob,
+ test.code/t25/test25c.c: Updated CALL statement grammar and GAS
+ generation for STDCALL (WINAPI) call-convention. Updated t25 to
+ run tests for both static and shared libraries. Added to t25
+ optional test for STDCALL (WINAPI) call-convention (MinGW only).
+ Updated minor version number in configure script.
+
+2004-08-20 04:11 dessex
+
+ * compiler/htcobemt.c, compiler/htcobol.y, compiler/reswords.c,
+ test.code/t25/Makefile.mingw, test.code/t25/test25.cob,
+ test.code/t25/test25b.c, test.code/t25/test25c.c,
+ test_suite/cobol_test.pl: Updated CALL statement grammar with
+ call-convention options. Win32 GAS generate fix to ensure proper
+ DEF file and DLL's creation. Added make file in t25 for MinGW
+ platform.
+
+2004-07-02 10:24 hudsonreis
+
+ * test.code/tgui01/: Readme.txt, ReadmeNew.txt: Merged
+ ReadmeNew.txt into Readme.txt
+
+2004-03-14 15:40 ferranp
+
+ * compiler/htcobemt.c:
+ Change the order of initialization of field to get the correct
+ value of decimal point.
+
+ subbmited by Walter Garrote.
+
+2004-02-19 01:51 hudsonreis
+
+ * test.code/tgui01/: ReadmeNew.txt, testgui01.cob, testgui02.c,
+ testgui03.tcl, testgui03a.tcl, testgui04.cob, testgui06.cob: New
+ improvements in tgui01 example. A better TC-Tcl interface are
+ avaliable. Added a new Readme file.
+
+2003-12-07 19:26 dessex
+
+ * Makefile.in: Updated make files.
+
+2003-12-06 21:39 andrewcza
+
+ * lib/fileio.c: Enable O_SYNC on Sequential and Relative files to
+ allow better Multi User Support.
+
+2003-12-06 19:50 andrewcza
+
+ * lib/fileio.c: Fix Optional Statement on OPEN I-O and OPEN EXTEND
+
+2003-12-02 08:28 dessex
+
+ * tconfig.mingw.sh: Updated configure script for MinGW.
+
+2003-12-02 08:28 dessex
+
+ * compiler/htcobol.y: COBOL grammar fix for the CONTINUE statement.
+ Updated configure for MinGW.
+
+2003-12-02 03:05 dessex
+
+ * compiler/htcobol.y, lib/Makefile.in, lib/Makefile.mingw,
+ lib/config.h: Updated grammar with PROGRAM-ID ... INITIAL
+ statement. Updated RTL config for MinGW.
+
+2003-11-25 01:47 dessex
+
+ * cobpp/Makefile.0, compiler/Makefile.0, lib/Makefile.0,
+ test.code/Makefile.0, utils/Makefile.0, Makefile.0: Removed backup
+ make files.
+
+2003-11-24 17:06 dessex
+
+ * lib/: Makefile.in, Makefile.mingw: Added configure and code for
+ external RT configure file (part 4).
+
+2003-11-24 17:06 dessex
+
+ * htconfig.mingw.h: Added configure and code for external RT
+ configure file (part 5).
+
+2003-11-24 03:27 dessex
+
+ * configure, configure.in: Added configure and code for external RT
+ configure file (part 3).
+
+2003-11-24 01:38 dessex
+
+ * configure, configure.in, htconfig.h.in: Added configure and code
+ for external RT configure file (part 2).
+
+2003-11-24 01:38 dessex
+
+ * lib/: Makefile.in, config.c, config.h, htrtconf: Added configure
+ and code for external RT configure file.
+
+2003-11-23 12:31 hudsonreis
+
+ * ChangeLog, lib/Makefile.in: Minor modifications in
+ lib/Makefile.in and updated Changelog.
+
+2003-11-22 11:29 dessex
+
+ * compiler/htcobemt.c: Updated 'SET.. TO TRUE' set statement
+ option.
+
+2003-11-22 11:29 dessex
+
+ * configure.in: Minor update to configure.in file.
+
+2003-11-11 22:45 andrewcza
+
+ * README, configure, configure.in, htconfig.0.h, htconfig.h.in,
+ lib/fileio.c: Add an option to force writing the data to disk after
+ every write/delete/rewrite for indexed io. This will help in
+ multiuser environments but will run much slower. The --enable-sync
+ option turns on this feature.
+
+2003-11-03 08:12 dessex
+
+ * compiler/: htcobol.y, htglobals.c: Updated grammar with STOP
+ literal statement. Fixed GCC 3.x compiler error for MinGW
+ platform.
+
+2003-10-29 00:42 dessex
+
+ * utils/cobf2f/: cobf2f.c, cobf2f.h, scanner.l: Updated cobf2f
+ utility.
+
+2003-10-26 16:11 ferranp
+
+ * lib/: config.c, scr_curses.c, screenio.h: New options in runbtime
+ config file EDIT_CLEAR and EDIT_CLEAR_TOEND
+
+2003-10-22 16:31 dessex
+
+ * compiler/Makefile.in, compiler/htcobol.y, compiler/htcobolrc.in,
+ lib/Makefile.mingw: Updated RECORD CONTAINS ... clauses.
+
+2003-10-19 17:14 ferranp
+
+ * lib/: Makefile.in, config.c, config.h, scr_curses.c, screenio.h:
+ Preliminary configuration file for the runtime. By now it only
+ afects the key codes for the curses screen io.
+
+2003-10-15 00:38 hudsonreis
+
+ * STATUS: Updates in STATUS
+
+2003-10-14 16:50 whydoubt
+
+ * lib/basicio.c: Add true hundredths-of-a-second resolution in
+ ACCEPT --- FROM TIME.
+
+2003-10-11 17:22 hudsonreis
+
+ * INSTALL.Win32, README: Update in README and INSTALL.Win32 file
+
+2003-09-23 11:43 dessex
+
+ * compiler/htcobolrc.in, compiler/htcobolrc.mingw,
+ compiler/htglobals.c, compiler/htglobals.h, lib/Makefile.in:
+ Updated MinGW/Cygwin front end, so TC can build DLLs. Added
+ LD_FLAGS variable to the resource file and updated TC front end.
+
+2003-09-23 06:52 dessex
+
+ * configure, configure.in, tconfig.mingw.sh: Updated configure
+ script to release version to 0.61.3.
+
+2003-09-23 06:38 dessex
+
+ * compiler/htcobgen.c, compiler/htcobolrc.in,
+ compiler/htcobolrc.mingw, lib/Makefile.in, lib/Makefile.mingw,
+ lib/mcmath.c: Updated configure script to release version to
+ 0.61.3. Bug fix for 'DIVIDE ... REMAINDER'. Updated MinGW RTL
+ make file so it be can built as a DLL.
+
+2003-09-13 21:30 dessex
+
+ * compiler/htcobol.y, lib/Makefile.mingw: MinGW make file fix.
+ Updated special names clauses.
+
+2003-09-11 02:19 dessex
+
+ * ANNOUNCE, configure, configure.in, tinycobol.lsm: Update for 0.61
+ release (part 2).
+
+2003-09-11 02:19 dessex
+
+ * info/rpm/tinycobol-0.00.spec: Update for 0.61 release.
+
+2003-09-07 10:20 whydoubt
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, lib/basicio.c,
+ lib/strings.c, compiler/htcobol.y: Simplify ON SIZE ERROR
+ generating code.
+
+2003-09-07 04:08 whydoubt
+
+ * compiler/htcobgen.c, test_suite/nist/NC.rpt,
+ test_suite/nist/nist.rpt: Improved DIVIDE ... REMAINDER results by
+ evaluating REMAINDER reference after GIVING value has been
+ calculated.
+
+2003-09-07 03:25 whydoubt
+
+ * compiler/: htcobgen.c, htcobol.y: Continue bringing DIVIDE
+ statement in line with other math statements.
+
+2003-09-06 21:41 whydoubt
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Start making DIVIDE
+ work more like the other math functions.
+
+2003-09-06 21:12 whydoubt
+
+ * compiler/htcobgen.c: Make it clear in code and comments that
+ MATH_OPT_ON_SIZE_ERROR is used as a binary flag, rather than an
+ integer.
+
+2003-09-05 21:51 whydoubt
+
+ * compiler/htcobol.y: Make on_size_error_opt truly *optional* and
+ treat it as such in other rules.
+
+2003-09-05 14:58 whydoubt
+
+ * lib/mcmath.c: Simplify code for divide formats 4 and 5.
+
+2003-09-05 09:19 whydoubt
+
+ * lib/mcmath.c: Remove all traces of afp_t.
+
+2003-09-04 21:35 whydoubt
+
+ * lib/mcmath.c: Reduce afp2f code, and reduce usage of afp_t
+ structure.
+
+2003-09-03 20:33 whydoubt
+
+ * lib/mcmath.c: Eliminated a confusing global variable in math
+ functions.
+
+2003-09-03 18:33 whydoubt
+
+ * lib/mcmath.c: Simplify tcob_check_size_overflow function.
+
+2003-08-30 22:28 dessex
+
+ * configure, configure.in, htconfig.h.in, htconfig.mingw.h: MinGW
+ configure update.
+
+2003-08-29 19:15 dessex
+
+ * compiler/htcobol.y: Updated MERGE statement.
+
+2003-08-29 17:10 dessex
+
+ * lib/scr_curses.c, configure, configure.in, htconfig.0.h,
+ htconfig.h.in, htconfig.mingw.h: MinGW configure update.
+
+2003-08-28 02:39 dessex
+
+ * compiler/htcobol.y: Updated and cleaned parser. Standardized
+ optional clauses to use '_opt' SUFFIX. Corrected 'GOTO' statement
+ parser syntax.
+
+2003-08-27 22:43 dessex
+
+ * compiler/htcobol.y: Updated parser.
+
+2003-08-27 20:39 dessex
+
+ * ChangeLog, Makefile.mingw, configure, configure.in,
+ tconfig.mingw.sh: MinGW and Cygwin configure update.
+
+2003-08-26 21:54 andrewcza
+
+ * lib/fileio.c: Fixed BUG ID 567452 Problem when reading indexed
+ files
+
+2003-08-26 08:24 andrewcza
+
+ * lib/flckclient.c: Modify flckclient to return Not-Implemented for
+ the Username under MINGW32
+
+2003-08-25 23:35 andrewcza
+
+ * lib/flckclient.c, test.code/t36/test36l.cob: Update flckclient
+ and test36l to show the PID and Username who have a record locked.
+
+2003-08-25 23:10 dessex
+
+ * cobpp/test.code/r.sh, compiler/htcobol.y: Updated parser.
+
+2003-08-25 19:29 andrewcza
+
+ * compiler/htcobgen.c: FIX BUG ID 567382 Read Next For External
+ Indexed Files
+
+2003-08-25 13:59 whydoubt
+
+ * compiler/htglobals.c: Convert C++ comment to C.
+
+2003-08-19 23:44 whydoubt
+
+ * compiler/htcobol.y: Modify rule to correct behavior in some
+ versions of bison.
+
+2003-08-19 16:50 andrewcza
+
+ * lib/fileio.c, test.code/t08/Readme.txt: Fix Sort Using in
+ fileio.c
+
+2003-08-17 21:11 ferranp
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/rterrors.c,
+ lib/rterrors.h, lib/screenio.c: New options for display at
+ line/position with a variable.
+
+2003-08-17 03:06 whydoubt
+
+ * compiler/: htcobol.y, reswords.c: Improved REPORT section syntax
+ parsing.
+
+2003-08-15 22:37 dessex
+
+ * compiler/htcobgen.c: Updated RETURN-CODE picture to S9(6).
+
+2003-08-15 11:41 whydoubt
+
+ * compiler/htcobol.y: Improve ISO/IEC conformance of screen ACCEPT.
+
+2003-08-15 11:05 whydoubt
+
+ * test_suite/nist/: NC.rpt, nist.rpt: Update NIST results to
+ reflect improvements David Essex made to 'Edited' moves.
+
+2003-08-14 06:23 dessex
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Removed stack
+ referencing pointers from var_list non-teminal, INITIALIZE, SORT
+ statements code. Updated parser with INITIALIZE statement clauses.
+
+2003-08-13 15:04 hudsonreis
+
+ * STATUS: Update in STATUS
+
+2003-08-11 16:48 whydoubt
+
+ * compiler/htcobol.y: Change rule name for readability.
+
+2003-08-11 16:42 whydoubt
+
+ * compiler/htcobol.y: Correct minor LINAGE syntax issue.
+
+2003-08-11 08:41 dessex
+
+ * lib/: cobmove.c, cobmove_c_.c, cobmove_e_.c: Bug fix for
+ de-editing move functions in RTL.
+
+2003-08-11 03:17 dessex
+
+ * compiler/htcobol.y: Removed bug due to parser stack referencing
+ pointers from the 'INPUT/OUTPUT PROCEDURE' code.
+
+2003-08-10 20:09 andrewcza
+
+ * README: Update Readme
+
+2003-08-10 12:18 bgiroud
+
+ * info/tc.ebnf, info/tc.ps, utils/make_sd.sh, utils/xtr_rw,
+ utils/y2l: Added files for creating the TC syntax diagrams, and the
+ resulting files.
+
+2003-08-10 03:56 dessex
+
+ * lib/: Makefile.in, cobmove.c, cobmove_e_.c, htcoblib.h: Addition
+ of de-editing move functions to RTL.
+
+2003-08-09 14:56 whydoubt
+
+ * lib/cobmove_b_.c, test_suite/nist/NC.rpt,
+ test_suite/nist/nist.rpt: Add simple scaling for BINARY to BINARY
+ move.
+
+2003-08-09 11:18 whydoubt
+
+ * lib/cobmove_9_.c, test_suite/nist/NC.rpt,
+ test_suite/nist/nist.rpt: Fix some bugs and add 'P' scaling support
+ in tcob_move_9_x.
+
+2003-08-09 01:45 whydoubt
+
+ * lib/strings.c, test_suite/nist/NC.rpt, test_suite/nist/nist.rpt:
+ Corrected deficiencies in the library code for the INSPECT
+ statement.
+
+2003-08-07 20:47 andrewcza
+
+ * README: Update Readme file
+
+2003-08-07 19:56 dessex
+
+ * compiler/: htcobol.y, htglobals.c: Parser bug fix for the 'FILE
+ SECTION ... VALUE OF file-id' clause.
+
+2003-08-06 21:25 whydoubt
+
+ * lib/cobmove_9_.c: Added name to cobmove_9_.c to reflect
+ contributions made recently. Changed C++ style comments to C style
+ comments.
+
+2003-08-06 14:59 hudsonreis
+
+ * AUTHORS: Changes in style
+
+2003-08-06 14:47 dessex
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t16/Makefile, test.code/t16/test16a.cob: Bug fix for
+ 'GOTO DEPENDING' using indexed indentifier.
+
+2003-08-06 14:37 hudsonreis
+
+ * README: Updates in links of README file
+
+2003-08-06 08:59 whydoubt
+
+ * lib/cobmove_9_.c: Remove some -W warnings I had introduced in
+ changing tcob_move_9_* functions.
+
+2003-08-05 23:00 whydoubt
+
+ * lib/strings.c: Trivial code reduction in tcob_unstring.
+
+2003-08-05 20:50 whydoubt
+
+ * lib/cobmove_9_.c: Code simplifications in tcob_move_9_c.
+
+2003-08-05 05:03 dessex
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/reswords.c, test.code/ReportGen/Makefile,
+ test.code/t00/Makefile, test.code/t02/Makefile,
+ test.code/t02/test02.cob, test.code/t03/Makefile,
+ test.code/t08/Makefile, test.code/t08/test08.cob,
+ test.code/t10/Makefile, test.code/t13/Makefile,
+ test.code/t29/Makefile, test.code/tdb01/Makefile,
+ test.code/tdb02/Makefile, test.code/tdb03/Makefile,
+ test_suite/compile_tests/ctest01b.cob: Updated parser with MERGE
+ statement. Removed from strings in yyerror calls.
+
+2003-08-04 22:25 hudsonreis
+
+ * test.code/t36/: test36.cob, test36i.cob, test36l.cob: Fix in
+ AUTHOR clause in test36.cob, test36i.cob and test36l.cob
+
+2003-08-04 12:52 whydoubt
+
+ * lib/cobmove_9_.c: Simplified code for numeric DISPLAY to
+ COMPUTATIONAL move. Removed some MOVE ALL code that violated
+ standards.
+
+2003-08-04 10:14 whydoubt
+
+ * lib/: basicio.c, cobmove_9_.c, htcoblib.h, mcmath.c, pictures.c,
+ screenio.c: Change meaning of tcob_picCompLength to returning the
+ number of _stored_ digits.
+
+2003-08-04 07:34 dessex
+
+ * compiler/htcobol.y, compiler/reswords.c,
+ test.code/esql/esql.create.ecob, test.code/esql/esql.insert.ecob,
+ test.code/esql/esql.list.ecob, test.code/esql/esql.rollback.ecob,
+ test.code/esql/esql.table.ecob, test.code/esql/esql.trans.ecob,
+ test.code/t00/teste.cob, test.code/t01/test01a.cob,
+ test.code/t01/test01b.cob, test.code/t01/test01c.cob,
+ test.code/t01/test01d.cob, test.code/t01/test01e.cob,
+ test.code/t02/test02.cob, test.code/t02/test02a.cob,
+ test.code/t03/test03.cob, test.code/t05/test05a.cob,
+ test.code/t05/test05b.cob, test.code/t05/test05c.cob,
+ test.code/t05/test05d.cob, test.code/t05/test05e.cob,
+ test.code/t05/test05f.cob, test.code/t07/cobsub.cob,
+ test.code/t07/test07.cob, test.code/t08/test08.cob,
+ test.code/t15/test15e.cob, test.code/t15/test15g.cob,
+ test.code/t15/test15h.cob, test.code/t15/test15i.cob,
+ test.code/t15/test15j.cob, test.code/t15/test15k.cob,
+ test.code/t16/test16.cob, test.code/t17/test17.cob,
+ test.code/t20/test20a.cob, test.code/t20/test20a_at.cob,
+ test.code/t20/test20b.cob, test.code/t20/test20d.cob,
+ test.code/t21/test21.cob, test.code/t22/test22.cob,
+ test.code/t23/test23.cob, test.code/t23/test23a.cob,
+ test.code/t23/test23b.cob, test.code/t24/test24.cob,
+ test.code/t26/test26.cob, test.code/t28/test28.cob,
+ test.code/t29/test29m.cob, test.code/t30/test30a.cob,
+ test.code/t32/test32.cob, test.code/t32/test32a.cob,
+ test.code/t34/aaaa.cob, test.code/t34/bbbb.cob,
+ test.code/t35/test35.cob, test.code/tdb03/tdb03.cob,
+ test_suite/cobol_test.pl, test_suite/call_tests/ptest01.cob,
+ test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/ptest03.cob,
+ test_suite/call_tests/ptest04.cob,
+ test_suite/call_tests/ptest05.cob,
+ test_suite/call_tests/stest01.cob,
+ test_suite/call_tests/stest02.cob,
+ test_suite/call_tests/stest03.cob,
+ test_suite/call_tests/stest04.cob,
+ test_suite/compile_tests/ctest01a.cob,
+ test_suite/compile_tests/ctest01b.cob,
+ test_suite/compile_tests/ctest01c.cob,
+ test_suite/compile_tests/ctest01d.cob,
+ test_suite/compile_tests/ctest01e.cob,
+ test_suite/compile_tests/ctest04.cob,
+ test_suite/compile_tests/ctest05.cob,
+ test_suite/compile_tests/ctest06.cob,
+ test_suite/compile_tests/ctested01.cob,
+ test_suite/compile_tests/ctested02.cob,
+ test_suite/compile_tests/ctested03.cob,
+ test_suite/compile_tests/ctested04.cob,
+ test_suite/compile_tests/ctested05.cob,
+ test_suite/compile_tests/ctested06.cob,
+ test_suite/compile_tests/ctestp-accept1.cob,
+ test_suite/compile_tests/ctestp-accept2.cob,
+ test_suite/compile_tests/ctestp-add1.cob,
+ test_suite/compile_tests/ctestp-add2.cob,
+ test_suite/compile_tests/ctestp-add3.cob,
+ test_suite/compile_tests/ctestp-compute1.cob,
+ test_suite/compile_tests/ctestp-continue1.cob,
+ test_suite/compile_tests/ctestp-divide1.cob,
+ test_suite/compile_tests/ctestp-divide2.cob,
+ test_suite/compile_tests/ctestp-divide3.cob,
+ test_suite/compile_tests/ctestp-divide4.cob,
+ test_suite/compile_tests/ctestp-divide5.cob,
+ test_suite/compile_tests/ctestp-goto1.cob,
+ test_suite/compile_tests/ctestp-initialize1.cob,
+ test_suite/compile_tests/ctestp-multiply1.cob,
+ test_suite/compile_tests/ctestp-multiply2.cob,
+ test_suite/compile_tests/ctestp-search1.cob,
+ test_suite/compile_tests/ctestp-search2.cob,
+ test_suite/compile_tests/ctestp-set1.cob,
+ test_suite/compile_tests/ctestp-string1.cob,
+ test_suite/compile_tests/ctestp-subtract1.cob,
+ test_suite/compile_tests/ctestp-subtract2.cob,
+ test_suite/compile_tests/ctestp-subtract3.cob,
+ test_suite/compile_tests/ctestp-unstring1.cob,
+ test_suite/compile_tests/ctestws01.cob,
+ test_suite/compile_tests/ctestws02.cob,
+ test_suite/compile_tests/ctestws03.cob,
+ test_suite/compile_tests/ctestws04.cob,
+ test_suite/compile_tests/ctestws05.cob,
+ test_suite/compile_tests/ctestws06.cob,
+ test_suite/compile_tests/ctestws07.cob,
+ test_suite/compile_tests/ctestws08.cob,
+ test_suite/compile_tests/ctestws09.cob,
+ test_suite/compile_tests/ctestws10.cob,
+ test_suite/compile_tests/ctestws11.cob,
+ test_suite/compile_tests/ctestws12.cob,
+ test_suite/compile_tests/sample.cob,
+ test_suite/condition_tests/cond01.cob,
+ test_suite/condition_tests/cond03.cob,
+ test_suite/format_tests/test01.cob,
+ test_suite/format_tests/test01a.cob,
+ test_suite/format_tests/test01b.cob,
+ test_suite/format_tests/test01c.cob,
+ test_suite/format_tests/test02a.cob,
+ test_suite/format_tests/test02b.cob,
+ test_suite/format_tests/test03a.cob,
+ test_suite/format_tests/test03b.cob,
+ test_suite/format_tests/test03c.cob,
+ test_suite/format_tests/test03d.cob,
+ test_suite/format_tests/test04.cob,
+ test_suite/format_tests/test05a.cob,
+ test_suite/format_tests/test05b.cob,
+ test_suite/format_tests/test06a.cob,
+ test_suite/format_tests/test08a.cob,
+ test_suite/perform_tests/perf01.cob,
+ test_suite/perform_tests/perf02.cob,
+ test_suite/perform_tests/perf03.cob,
+ test_suite/perform_tests/perf04.cob,
+ test_suite/perform_tests/perf05.cob,
+ test_suite/search_tests/test20a.cob: Updated parser 'INPUT-OUTPUT
+ SECTION' to conform to standard.
+
+2003-08-02 22:27 whydoubt
+
+ * lib/cobmove_9_.c: Simpler and faster library code for numeric to
+ numeric move.
+
+2003-08-01 21:35 dessex
+
+ * compiler/: htcobol.y, reswords.c: File description entry parser
+ update.
+
+2003-07-31 14:22 whydoubt
+
+ * compiler/htcobol.y: Paramaterize a common compiler error message.
+
+2003-07-31 13:25 whydoubt
+
+ * compiler/htcobol.y: Marginal simplification of CLOSE options
+ grammar.
+
+2003-07-31 03:04 dessex
+
+ * compiler/: htcobol.y, reswords.c: Updated parser with CLOSE
+ statement clauses UNIT REEL REWIND.
+
+2003-07-30 03:50 whydoubt
+
+ * lib/cobmove_x_.c, test_suite/nist/NC.rpt,
+ test_suite/nist/nist.rpt: Make caWork length in tcob_move_x_9
+ dynamic.
+
+2003-07-29 18:44 andrewcza
+
+ * lib/fileio.c, lockserver/lockserver.c: Fix the Problem where the
+ second Ignore lock did not work.
+
+2003-07-29 02:54 whydoubt
+
+ * lib/cobmove_x_.c: Several simplifications in tcob_move_x_9.
+
+2003-07-29 02:54 whydoubt
+
+ * lib/cobmove_x_.c: I meant memcpy, not memset.
+
+2003-07-29 02:50 whydoubt
+
+ * lib/cobmove_x_.c: Remove unused pointer in tcob_move_x_9.
+
+2003-07-28 18:51 whydoubt
+
+ * lib/cobmove_9_.c: In moving numeric to numeric, test for
+ signedness of variables only once. Handle additional cases in
+ moving numeric to numeric.
+
+2003-07-28 16:27 whydoubt
+
+ * compiler/htcobol.y: Fixed a small syntax bug that was causing
+ many warnings in the NIST test suite.
+
+2003-07-28 16:07 whydoubt
+
+ * compiler/htcobgen.c, test_suite/nist/NC.rpt,
+ test_suite/nist/nist.rpt: PICTURE was being improperly overwritten
+ when INDEXED BY was specified.
+
+2003-07-27 22:09 dessex
+
+ * lib/mcmath.c: Bug fix [777992] for numeric test for group items.
+
+2003-07-27 22:09 dessex
+
+ * configure: Configure script update.
+
+2003-07-27 15:13 dessex
+
+ * compiler/htcobol.y: Update to parsee relating to CONTINUE and
+ NEXT SENTENCE statements.
+
+2003-07-27 12:02 hudsonreis
+
+ * test.code/t17/test17.cob: Some bugfixes in test17.cob
+
+2003-07-26 19:16 dessex
+
+ * compiler/htcobol.y: Major update to parser to reduce shift/reduce
+ conflicts.
+
+2003-07-26 18:41 dessex
+
+ * lockserver/: Makefile.0.mingw, Makefile.in, Makefile.mingw: Minor
+ lockserver update.
+
+2003-07-26 14:09 andrewcza
+
+ * lib/fileio.c: Fix a problem discovered by David with Ingore Lock
+
+2003-07-26 13:39 andrewcza
+
+ * lib/fileio.c, lib/flckclient.c, test.code/t36/test36i.cob,
+ test.code/t36/test36l.cob: Change File Status IO Codes
+
+2003-07-26 12:03 andrewcza
+
+ * lib/flckclient.c, lockserver/lockserver.c: Make More changes so
+ that Locking with Indexed IO now also works with Mingw
+
+2003-07-26 10:36 dessex
+
+ * AUTHORS, configure.in: Configure.in duplicate option fix.
+
+2003-07-26 10:36 dessex
+
+ * compiler/htcobolrc.in, test.code/t00/Makefile,
+ test.code/t01/Makefile, test.code/t04/Makefile,
+ test.code/t04/test04.cob, test.code/t04/test04i.cob,
+ test.code/t04/test04r.cob, test.code/t05/Makefile,
+ test.code/t05/test05a.cob, test.code/t05/test05b.cob,
+ test.code/t05/test05c.cob, test.code/t05/test05d.cob,
+ test.code/t05/test05e.cob, test.code/t05/test05f.cob,
+ test.code/t06/Makefile, test.code/t06/index01.cob,
+ test.code/t06/test06.cob, test.code/t06/test06i.cob,
+ test.code/t06/test06r.cob, test.code/t06/test06s.cob,
+ test.code/t06/test06v.cob, test.code/t07/Makefile,
+ test.code/t07/cobsub.cob, test.code/t07/test07.cob,
+ test.code/t08/Makefile, test.code/t08/test08.cob,
+ test.code/t08/test08g.cob, test.code/t08/test08u.cob,
+ test.code/t08/test08ug.cob, test.code/t09/Makefile,
+ test.code/t09/upro.cob, test.code/t10/Makefile,
+ test.code/t10/test10.cob, test.code/t11/Makefile,
+ test.code/t11/test11.cob, test.code/t12/Makefile,
+ test.code/t12/test12.cob, test.code/t12/test12i.cob,
+ test.code/t12/test12ls.cob, test.code/t12/test12r.cob,
+ test.code/t12/test12s.cob, test.code/t13/Makefile,
+ test.code/t13/include1.cpy, test.code/t13/include2.cpy,
+ test.code/t13/include3.cpy, test.code/t13/test13.cob,
+ test.code/t14/Makefile, test.code/t14/test14c.cob,
+ test.code/t15/Makefile, test.code/t16/Makefile,
+ test.code/t16/test16.cob, test.code/t17/Makefile,
+ test.code/t17/test17.cob, test.code/t18/Makefile,
+ test.code/t18/test18.cob, test.code/t18/test18i.cob,
+ test.code/t18/test18r.cob, test.code/t19/Makefile,
+ test.code/t19/test19.cob, test.code/t19/test19a.cob,
+ test.code/t19/test19b.cob, test.code/t20/Makefile,
+ test.code/t20/test20e.cob, test.code/t21/Makefile,
+ test.code/t22/Makefile, test.code/t22/test22.cob,
+ test.code/t23/Makefile, test.code/t23/test23.cob,
+ test.code/t23/test23b.cob, test.code/t24/Makefile,
+ test.code/t24/test24.cob, test.code/t25/Makefile,
+ test.code/t26/Makefile, test.code/t26/test26.cob,
+ test.code/t27/Makefile, test.code/t27/test27.cob,
+ test.code/t28/Makefile, test.code/t28/test28.cob,
+ test.code/t28/test28a.cob, test.code/t29/Makefile,
+ test.code/t29/test29m.cob, test.code/t30/Makefile,
+ test.code/t30/test30a.cob, test.code/t31/Makefile,
+ test.code/t31/test31.cob, test.code/t32/Makefile,
+ test.code/t33/Makefile, test.code/t34/Makefile,
+ test.code/t34/aaaa.cob, test.code/t34/bbbb.cob,
+ test.code/t35/Makefile, test.code/t35/test35.cob,
+ test.code/t36/Makefile, test.code/t36/test36.cob,
+ test.code/t36/test36i.cob, test.code/t36/test36l.cob,
+ test.code/tdb01/tdb01a.cob, test.code/tdb02/tdb02.cob,
+ test.code/tdb03/tdb03.cob,
+ test_suite/compile_tests/ctestp-goto1.cob: Updated sample test
+ code. Configure.in duplicate option fix.
+
+2003-07-26 00:14 andrewcza
+
+ * lib/flckclient.c: Fix an error in flckclient to do with mingw32
+
+2003-07-25 23:33 andrewcza
+
+ * lib/Makefile.mingw, lib/flckclient.c, lib/flckclient.h,
+ lockserver/lockserver.c: Finish off Locking code for Mingw. Now
+ ready for testing
+
+2003-07-25 15:55 andrewcza
+
+ * configure, lib/flckclient.c, lib/flckclient.h,
+ lockserver/Makefile.in, lockserver/Makefile.mingw,
+ lockserver/lockserver.c, lockserver/syslog.h: Start to change the
+ Locking code to include support for Mingw32
+
+2003-07-25 14:35 whydoubt
+
+ * lib/strings.c: Comment INSPECT REPLACING code and replace
+ offset_substr with memcmp where appropriate.
+
+2003-07-25 12:39 whydoubt
+
+ * configure.in: Clean up some configure messages.
+
+2003-07-24 01:03 dessex
+
+ * lib/: basicio.c, cobmove.c, cobmove_9_.c, cobmove_b_.c,
+ cobmove_c_.c, intrinsic.c: Several RTS patches from Paolo Bizzarri.
+
+2003-07-23 17:52 whydoubt
+
+ * lib/general.c: Tweak code for removing trailing whitespace in
+ tcob_chain.
+
+2003-07-23 17:45 whydoubt
+
+ * lib/general.c: Correct which string to search in for trailing
+ whitespace.
+
+2003-07-23 17:40 whydoubt
+
+ * lib/general.c: Reducing whitespace-removal code in tcob_cancel.
+
+2003-07-23 16:46 dessex
+
+ * lib/: Makefile.in, fileio.c, flckclient.c, flckclient.h,
+ htcoblib.h: Separated file lock client code into separate file.
+
+2003-07-22 18:22 ferranp
+
+ * lib/general.c: Correct cancel statement. Now it works with the
+ routine name in a variable.
+
+2003-07-20 22:09 dessex
+
+ * lib/htcoblib.h, lockserver/Makefile, lockserver/Makefile.0:
+ Configuration for lock server.
+
+2003-07-20 22:09 dessex
+
+ * Makefile.in, configure.in, htconfig.h.in, htconfig.mingw.h:
+ Configuration for lock server (part 2).
+
+2003-07-20 20:43 andrewcza
+
+ * lib/fileio.c, test.code/t36/Makefile, test.code/t36/test36l.cob:
+ Add new test example and remove warnings from compile when
+ USE_LOCKSERVER is not defined.
+
+2003-07-20 11:57 dessex
+
+ * lib/fileio.c, lib/htcoblib.h, lockserver/lockserver.c: Bug fix
+ for 'WRITE ...ADVANCING' part 1. Minor modifications to lock
+ server.
+
+2003-07-18 23:59 hudsonreis
+
+ * INSTALL, INSTALL.BeOS, INSTALL.bin: changes about resource files
+ option
+
+2003-07-18 21:56 andrewcza
+
+ * STATUS: Update Status to show READ .. WITH IGNORE LOCK NOW
+ IMPLEMENTED
+
+2003-07-18 21:50 andrewcza
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/fileio.c,
+ test.code/t36/test36i.cob: Implement Compiler and Library code for
+ READ .. WITH IGNORE LOCK
+
+2003-07-18 00:10 dessex
+
+ * utils/cobf2f/: cobf2f.c, cobf2f.h: Minor update to cobf2f
+ utility.
+
+2003-07-15 13:49 whydoubt
+
+ * lib/strings.c: Reworked the INSPECT REPLACING TRAILING code.
+
+2003-07-15 12:15 whydoubt
+
+ * lib/strings.c: In comparand structure, changed the component name
+ 'stop' to 'state'. Also made the default state 'go' instead of
+ 'wait'.
+
+2003-07-15 11:54 whydoubt
+
+ * lib/strings.c: Make (struct comparand *)->stop comparisons
+ explicit. More work on cleaning up INSPECT REPLACING library code.
+
+2003-07-15 11:07 whydoubt
+
+ * lib/strings.c: Correct signed/unsigned variable comparison.
+
+2003-07-15 09:07 whydoubt
+
+ * lib/fileio.c: Fixed a memory leak and a buffer overflow in
+ reworking LINE SEQUENTIAL writing.
+
+2003-07-13 17:14 bgiroud
+
+ * compiler/hthelp.h.in, info/htcobol_en.man, info/htcobol_fr.man,
+ info/htcobol_man_fr.html: Added option -t in french documentation.
+
+2003-07-12 11:38 dessex
+
+ * compiler/htcobol.y, compiler/reswords.c, test.code/t12/Makefile:
+ Added "WITH IGNORE LOCK" phrase to the read statement.
+
+2003-07-11 22:05 andrewcza
+
+ * lib/fileio.c: Added Code to make the DELETE Statement release a
+ Locked Record if it gets deleted.
+
+2003-07-11 21:56 andrewcza
+
+ * test.code/t36/test36i.cob: Add Simple Indexed IO Lock Sample
+
+2003-07-11 21:34 andrewcza
+
+ * README, STATUS, lib/fileio.c, lib/htcoblib.h,
+ lockserver/lockserver.c, test.code/t36/Makefile: Make final changed
+ for Beta Version of Record Locking on Indexed IO. Now We need
+ People to test.
+
+2003-07-10 22:54 andrewcza
+
+ * lib/fileio.c, lockserver/INSTALL, lockserver/LICENSE,
+ lockserver/Makefile, lockserver/PROTOCOL, lockserver/README,
+ lockserver/TODO, lockserver/VERSION, lockserver/hosts,
+ lockserver/lockserver.c: Write more code to support record Locking
+ on READ and REWRITE
+
+2003-07-04 00:03 andrewcza
+
+ * compiler/htcobol.y, lib/fileio.c, lib/htcoblib.h,
+ test.code/t12/test12.cob, test.code/t12/test12i.cob: Wrote more
+ code for Record Locking.
+
+2003-07-03 21:58 andrewcza
+
+ * lib/: fileio.c, htcoblib.h: Continue to Add code to implement
+ record locking.
+
+2003-07-02 17:38 dessex
+
+ * compiler/: htcobol.y, reswords.c: Updated report parser grammar.
+
+2003-07-02 07:53 dessex
+
+ * compiler/htcobol.y: Updated and improved declaratives parser
+ grammar.
+
+2003-07-01 22:46 andrewcza
+
+ * lib/: fileio.c, htcoblib.h: Write more routines towards the
+ implemention of record locking on ISAM files.
+
+2003-07-01 12:07 hudsonreis
+
+ * info/: htcobol_it.man, htcobol_man_it.html: Update htcobol
+ manpages(italian language)
+
+2003-06-28 16:47 andrewcza
+
+ * lib/: fileio.c, htcoblib.h: Start Adding routines to call
+ Lockserver for Record Locking.
+
+2003-06-28 15:17 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c,
+ test_suite/cobol_test.pl: Correct problems initializing variables.
+
+2003-06-28 06:51 reidrac
+
+ * info/: htcobol_es.man, htcobol_man_es.html: added the -t switch
+
+2003-06-28 00:30 hudsonreis
+
+ * info/: htcobol.man, htcobol_en.man, htcobol_man.html,
+ htcobol_man_en.html, htcobol_man_pt_BR.html, htcobol_pt_BR.man:
+ Adding -t switch in htcobol manpage(english and portuguese
+ language)
+
+2003-06-27 23:09 andrewcza
+
+ * lib/fileio.c: Added the Cobol 85 File Status Codes.
+
+2003-06-25 20:03 ferranp
+
+ * compiler/: htcobemt.c, htcobgen.c: Changes initializing fields.
+ Code cleanup, do not initialize values in linkage section.
+ Initialize all numeric fields to 0 and text fields to spaces.
+
+2003-06-21 07:09 dessex
+
+ * lib/fileio.c: File IO bug fixes.
+
+2003-06-19 03:36 dessex
+
+ * AUTHORS, htconfig.mingw.h, tconfig.mingw.sh: Updated MinGW setup
+ script. Updated scanner and parser tokens. (Part 2)
+
+2003-06-19 03:36 dessex
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h, reswords.c: Updated
+ MinGW setup script. Updated scanner and parser tokens.
+
+2003-06-17 14:57 whydoubt
+
+ * lib/cobmove.c: Paolo Bizzarri: It is intended to clarify the
+ meaning of a particular state in the function tcob_move_edited. In
+ the original code it was expressed as a int value. Now is an enum,
+ with possibly significant symbolic names. Jeff Smith: Modified the
+ symbolic names slightly.
+
+2003-06-17 04:30 dessex
+
+ * compiler/: htcobemt.c, htcobgen.c, htcobol.y, htcoboly.h,
+ htglobals.c, htglobals.h, reswords.c, scan.l: Updated scanner and
+ parser with new tokens. Enhanced error reporting to print error
+ token.
+
+2003-06-08 00:19 dessex
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/reswords.c, compiler/reswords.h,
+ lib/fileio.c, test.code/t02/Makefile, test.code/t03/Makefile,
+ test.code/t33/Makefile: Updated parser with standardized tokens.
+ Removed 'SEVERITY_ERROR' define conflict on MinGW platform.
+
+2003-05-30 14:10 whydoubt
+
+ * lib/strings.c, test_suite/nist/NC.rpt, test_suite/nist/nist.rpt:
+ Fixed some bugs in INSPECT TALLYING library code. Cleaned up a
+ couple of near-by memory leaks.
+
+2003-05-19 10:23 hudsonreis
+
+ * info/: htcobol_it.man, htcobol_man_it.html: Put in CVS update of
+ italian manfiles(Thanks Mario)
+
+2003-05-17 01:24 dessex
+
+ * configure, configure.in, htconfig.h.in: Added MF compatibility
+ options (part 2).
+
+2003-05-17 01:24 dessex
+
+ * lib/fileio.c, test.code/t19/Makefile, test.code/t19/test19b.cob:
+ Added MF compatibility configure option and some MF compatibility
+ features - external file IO.
+
+2003-05-16 23:19 hudsonreis
+
+ * info/: htcobol.man, htcobol_man.html: Updating htcobol.man and
+ htcobol_man.html about the modification of cobopt word to htcobolrc
+ word.
+
+2003-05-16 15:47 whydoubt
+
+ * compiler/htcobol.y: Improve parsing of SORT statement.
+
+2003-05-16 15:47 whydoubt
+
+ * test_suite/nist/: IX.rpt, SM.rpt, nist.rpt: Get NIST reports up
+ to date.
+
+2003-05-16 14:33 whydoubt
+
+ * compiler/htcobol.y: Improve parsing of SORT statement.
+
+2003-05-16 13:42 whydoubt
+
+ * test_suite/nist/make_pop_linux.txt: Added SORT filename cards.
+
+2003-05-16 13:34 whydoubt
+
+ * test_suite/nist/Makefile_trail.h: Clean up for RTE files in NIST
+ testing.
+
+2003-05-15 15:45 whydoubt
+
+ * test_suite/nist/: nist_IX.rpt, nist_IX_prev.rpt, nist_NC.rpt,
+ nist_NC_prev.rpt: Putting some old reports in the attic.
+
+2003-05-15 15:10 whydoubt
+
+ * test_suite/nist/: NC.rpt, nist.rpt: Get NC report up to date.
+
+2003-05-15 14:41 whydoubt
+
+ * lib/: fileio.c, htcoblib.h, strings.c: Eliminated some C++
+ comments, eliminated movebytes, cleaned up SORT code.
+
+2003-05-15 14:10 whydoubt
+
+ * compiler/htglobals.c: Keeping C++-style comments out of the
+ compiler code.
+
+2003-05-15 11:10 reidrac
+
+ * info/htcobol_es.man: little fix
+
+2003-05-15 11:04 reidrac
+
+ * info/htcobol_es.man: clarified the htcobolrc part
+
+2003-05-11 02:50 dessex
+
+ * test.code/: Readme.txt, t15/Makefile, t15/test15k.cob,
+ t15/test15l.c, t32/Makefile, t32/test32a.cob, t36/test36.cob: Added
+ COBOL source samples in the 'test.code' directory.
+
+2003-05-08 19:44 dessex
+
+ * Makefile.in, Makefile.mingw, configure, configure.in,
+ htconfig.h.in, htconfig.mingw.h, tconfig.mingw.sh: Simplified
+ configure for command line help language option (part 2).
+
+2003-05-08 19:27 dessex
+
+ * cobpp/tcpphelp.h, cobpp/tcpphelp.h.in, compiler/hthelp.h,
+ compiler/hthelp.h.in, test.code/Readme.txt,
+ test_suite/cobol_test.pl: Simplified configure for command line
+ help language option.
+
+2003-05-07 03:02 dessex
+
+ * lib/fileio.c, test.code/t15/Makefile, test.code/tdb01/Makefile,
+ test.code/tdb01/tdb01.c: Win32 binary flag fix for BDB. Small setup
+ fix for BDB in tdb01.
+
+2003-05-05 01:49 bgiroud
+
+ * compiler/htcobgen.c, test_suite/test.baseline: Corrected filler
+ SCREEN checking symptom. Recovered test_suite level.
+
+2003-05-04 14:32 ferranp
+
+ * compiler/htcobol.y, lib/htcoblib.h, lib/strings.c: New option for
+ inspect, INSPECT .... REPLACING TRAILING ....
+
+2003-05-01 03:05 hudsonreis
+
+ * info/: htcobol_en.man, htcobol_man_en.html: Updated english
+ manfiles
+
+2003-04-29 16:22 dessex
+
+ * info/isetup/: image3e.bmp, image3e1.bmp, license.txt,
+ tcobol.iss.in: Fix for Inno setup script. Set binary flag for
+ bitmap
+
+2003-04-29 05:30 dessex
+
+ * Makefile.mingw, tconfig.mingw.sh: MinGW config scritp update
+
+2003-04-29 04:33 dessex
+
+ * info/isetup/Readme.isetup.txt, info/isetup/image3e.bmp,
+ info/isetup/tcobol.bat, info/isetup/tcobol.iss.in,
+ lib/Makefile.mingw, test_suite/nist/Makefile,
+ test_suite/nist/Makefile_head.h: MinGW update and addtion of Inno
+ setup script
+
+2003-04-28 13:30 reidrac
+
+ * info/htcobol_es.man: cobopt deprecated
+
+2003-04-27 16:20 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobol.y, compiler/reswords.c,
+ compiler/reswords.h, info/htcobol_fr.man, info/htcobol_man_fr.html:
+ Added dialect field for reserved words. Changed cobopt into
+ htcobolrc in documentation.
+
+2003-04-26 12:44 hudsonreis
+
+ * compiler/htcobolrc.mingw, lib/Makefile.mingw: Updating the files
+ to mingw TC install
+
+2003-04-26 11:03 hudsonreis
+
+ * compiler/cobopt: removed cobopt file
+
+2003-04-26 01:06 hudsonreis
+
+ * info/: htcobol_man_pt_BR.html, htcobol_pt_BR.man: Updating the
+ brazilian manfiles(changing the word "cobopt" to "htcobolrc" in
+ htcobol_pt_BR.man and htcobol_man_pt_BR.html)
+
+2003-04-26 00:53 hudsonreis
+
+ * configure: updating configure script(regenerated with autoconf)
+
+2003-04-14 17:51 whydoubt
+
+ * compiler/htcobol.y: Removed token special_name_class_literal.
+
+2003-04-13 14:31 bgiroud
+
+ * configure.in, cobpp/tcpphelp.h.in, compiler/hthelp.h.in,
+ compiler/reswords.c, info/htcobf2f_es.man,
+ info/htcobf2f_man_es.html, info/htcobol_es.man,
+ info/htcobol_man_es.html, info/htcobolpp_es.man,
+ info/htcobolpp_man_es.html: Addition of "es" translation (Thanks to
+ Juan). Ordering of reserved words to allow further qualification
+ for doc.
+
+2003-04-12 12:32 hudsonreis
+
+ * test.code/tdb03/tdb03.cob: some bugfixes in tdb03.cob
+
+2003-04-11 10:35 bgiroud
+
+ * compiler/: htcobemt.c, htcobgen.c, htcobol.c, htcobol.y,
+ htcoboly.h, reswords.c, scan.l: Added checks on value types and
+ length against picture. Added syntax of CLASS phrase.
+
+2003-04-09 19:21 ferranp
+
+ * compiler/htcobgen.c: Initialize a field to avoid crashes.
+
+2003-04-08 15:09 ferranp
+
+ * compiler/htcobemt.c: Some bugfixes that make the compiler seg
+ failt.
+
+2003-04-07 03:14 bgiroud
+
+ * compiler/: htcobemt.c, htcobgen.c, htcobol.y, htcoboly.h,
+ htglobals.c: Correction of several little bugs mentionned by Hudson
+ Reis.
+
+2003-04-06 09:28 whydoubt
+
+ * lib/: cobmove.c, general.c, rterrors.h: C++ -> C comments and
+ corrected some comments.
+
+2003-04-04 19:47 whydoubt
+
+ * lib/: htcoblib.h, mcmath.c: Converting C++-style comments to
+ C-style comments in mcmath.
+
+2003-04-04 19:00 whydoubt
+
+ * lib/: basicio.c, cobmove_f_.c, fileio.c, scr_curses.c,
+ screenio.c, strings.c: Lots of warnings when -W flag is used have
+ been cleaned up. Implemented library code for 4-digit years in
+ ACCEPT statement.
+
+2003-04-04 18:57 whydoubt
+
+ * test_suite/nist/: NC.idx, make_pop_linux.txt: Minor nist test
+ suite updates.
+
+2003-04-03 13:18 ferranp
+
+ * cobpp/scanner.l: Some bug fixes to aboid segmentation faults.
+
+2003-04-03 12:23 ferranp
+
+ * cobpp/cobpp.h, cobpp/scanner.l, compiler/htcobemt.c,
+ compiler/htglobals.c, compiler/reswords.c, compiler/scan.l,
+ lib/dyncall.c, lib/general.c, lib/screenio.c: Some bug fixes to
+ avoid segmentation faults.
+
+2003-04-02 18:40 whydoubt
+
+ * compiler/: Makefile.in, htcobemt.c, htcobgen.c, htglobals.c,
+ htglobals.h, scan.l: Added -pedantic to the flags for compiling the
+ compiler, and fixed most resulting warnings.
+
+2003-04-02 15:51 whydoubt
+
+ * mwindows.h, compiler/htcobgen.c, compiler/htcobol.c,
+ compiler/htcoboly.h, compiler/htglobals.c, compiler/htglobals.h,
+ compiler/hthelp.h.in, compiler/reswords.c: More changing C++-style
+ comments to C-style comments in the compiler.
+
+2003-04-02 14:36 whydoubt
+
+ * lib/htcoblib.h, compiler/htcobemt.c: Converting C++-style
+ comments to C-style comments, and cleaning up some of contents of
+ the comments in the process.
+
+2003-04-02 13:04 whydoubt
+
+ * compiler/htcobemt.c: Cleaned up code generation ambiguity in
+ proc_trail.
+
+2003-04-02 12:20 whydoubt
+
+ * compiler/htcobol.y: ADD CORRESPONDING requires 'TO'.
+
+2003-03-25 04:21 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ lib/fileio.c: Reset flag eof_hit also at tcob_start (thanks to
+ Alain Lucari). Suppressed call of data_trail from end if data
+ division (in case refmods in screen section).
+
+2003-03-23 14:59 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/reswords.c, lib/dyncall.c,
+ lib/general.c, lib/htcoblib.h, lib/rterrors.c, lib/rterrors.h,
+ lib/scr_curses.c, lib/screenio.c: New options UPPER , LOWER and
+ SIZE on screen fields. Correct a segmentation faults in som cases
+ involving call and cancel.
+
+2003-03-20 19:11 ferranp
+
+ * compiler/htcobemt.c: Modification to detect variables in the
+ linkage section while compiling.
+
+2003-03-09 18:50 ferranp
+
+ * lib/scr_curses.c: Now the left and right keys at the end of a
+ field finish an accept auto.
+
+2003-03-05 12:30 whydoubt
+
+ * lib/cobmove.c: Fix non-elementary moves to meet standards.
+
+2003-03-05 00:25 whydoubt
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Additional updates
+ to the chronological form of the ACCEPT statement.
+
+2003-03-04 17:44 whydoubt
+
+ * compiler/htcobgen.c, lib/basicio.c, lib/htcoblib.h: Consolidating
+ code for chronological form of ACCEPT.
+
+2003-03-04 16:20 whydoubt
+
+ * compiler/htcobol.y: Parse the ALPHABET phrase better.
+
+2003-02-28 09:25 bgiroud
+
+ * configure.in, cobpp/parser.y, compiler/htcobol.y, lib/fileio.c:
+ Check-in changes from David Essex for skipping locking on MingW32.
+ Cleaned-up definitions in files .y for Bison 1.75.
+
+2003-02-25 02:36 whydoubt
+
+ * cobpp/.cvsignore, compiler/.cvsignore, info/.cvsignore,
+ lib/.cvsignore, test.code/.cvsignore,
+ test.code/copybooks/.cvsignore, .cvsignore, utils/.cvsignore,
+ utils/cobf2f/.cvsignore: Adding .cvsignore entries into the
+ repository.
+
+2003-02-25 02:28 whydoubt
+
+ * info/: Compiler-Overview.txt, VarStructure.Info.txt:
+ Documentation updates.
+
+2003-02-23 20:20 whydoubt
+
+ * compiler/htcobol.y: Improve EVALUATE without END-EVALUATE case.
+
+2003-02-23 01:03 whydoubt
+
+ * compiler/htcobol.y: Improving parse of file and sort descriptor
+ sections.
+
+2003-02-22 15:24 whydoubt
+
+ * compiler/htcobgen.c: Fix occasional segfault in compiler when
+ creating a log file.
+
+2003-02-22 14:44 whydoubt
+
+ * compiler/hthelp.h.in: Update compiler command-line help to
+ compile without errors.
+
+2003-02-21 13:49 whydoubt
+
+ * compiler/: htcobol.y, reswords.c: Keyword 'ARE' is only valid if
+ the proceeding word is in plural form.
+
+2003-02-18 16:53 whydoubt
+
+ * compiler/htcobol.y: Fix a parse error when 'ON' is missing from
+ an OCCURS DEPENDING clause.
+
+2003-02-18 13:24 whydoubt
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ lib/htcoblib.h: Improving inheritance of group attributes to
+ subcomponents.
+
+2003-02-16 19:07 whydoubt
+
+ * compiler/: htcobgen.c, htcoboly.h: Fix a problem with the
+ compiler sometimes allocating too much memory while generating code
+ for initializing groups with the OCCURS clause.
+
+2003-02-15 12:59 whydoubt
+
+ * lib/: general.c, mcmath.c, rterrors.c: Fixes and improvements to
+ the run-time error reporting system.
+
+2003-02-15 12:42 whydoubt
+
+ * compiler/htcobgen.c: Fixed compiler shortcoming that led to
+ values in group fields not being properly initialized (e.g. field
+ MOVE29A in NIST test NC104).
+
+2003-02-13 02:55 whydoubt
+
+ * lib/pictures.c: Fixed some logic errors in counting the numeric
+ characters in a numeric edited picture.
+
+2003-02-07 12:25 bgiroud
+
+ * config.guess, config.sub, configure, configure.in, tinycobol.lsm:
+ Last configure changes from Matt Verran for R0.60.
+
+2003-02-02 18:17 bgiroud
+
+ * ANNOUNCE: Forgotten the principal for R0_60 !
+
+2003-02-02 15:05 bgiroud
+
+ * AUTHORS, ChangeLog, STATUS, configure.in, tinycobol.lsm,
+ compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htglobals.c, info/rpm/tinycobol-0.00.spec, lib/fileio.c,
+ lib/general.c: Preparation of 0.60 release.
+
+2003-01-23 02:27 bgiroud
+
+ * INSTALL.BeOS, configure, configure.in, htconfig.h.in,
+ compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htglobals.c, lib/fileio.c, lib/general.c, lib/htcoblib.h:
+ Corrected write advancing, thanks to Alain Leucari's code. Changed
+ structure of files (needs a V4) to support access to File Status
+ from the RTL. Added Matt Verran's contributions to better support
+ BeOS.
+
+2003-01-07 03:18 bgiroud
+
+ * compiler/: htcobemt.c, htcobgen.c, htcobol.y, htcoboly.h,
+ htglobals.c, htglobals.h: Corrected the handling of Invalid Key
+ clause for write and rewrite.
+
+2002-12-19 00:52 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/reswords.c, lib/fileio.c: Added UNLOCK statement.
+
+2002-12-18 23:50 rpragana
+
+ * test.code/t36/: Makefile, test36.cob: Still some files missing...
+
+2002-12-18 13:01 rpragana
+
+ * lib/fileio.c: Oops! No t36 commited. Small bug fix in
+ lib/fileio.c/lock_record().
+
+2002-12-17 14:24 rpragana
+
+ * ChangeLog, compiler/htcobemt.c, compiler/htcobgen.c,
+ compiler/htcoboly.h, lib/fileio.c, lib/htcoblib.h: Added test.code
+ (t36) for record locks. Modified implementation for allowing
+ multiple reads with/without locks in the same process. Return code
+ for already locked files is 99 (temporary error code).
+
+2002-12-17 10:23 rpragana
+
+ * ChangeLog, compiler/htcobemt.c, compiler/htcobgen.c,
+ compiler/htcobol.y, compiler/htcoboly.h, lib/htcoblib.h,
+ test.code/t01/Makefile, test.code/tdb03/tdb03.cob: Start WITH LOCK
+ clause implementation (READ verb).
+
+2002-11-05 04:04 bgiroud
+
+ * configure, configure.in, compiler/htcobemt.c,
+ compiler/htcobgen.c, compiler/htcoboly.h, compiler/htglobals.c,
+ compiler/htglobals.h: Integrated first lot of support for BeOS in
+ configuration.
+
+2002-10-30 17:02 bgiroud
+
+ * configure, lib/fileio.c, test_suite/test.baseline,
+ test_suite/sortio_tests/srtio05.cob,
+ test_suite/sortio_tests/srtio06.cob,
+ test_suite/sortio_tests/srtio07.cob,
+ test_suite/sortio_tests/srtio08.cob,
+ test_suite/sortio_tests/srtio09.cob,
+ test_suite/sortio_tests/srtio10.cob,
+ test_suite/sortio_tests/test.script: Sort with line sequential
+ files now should work. Added a few other tests.
+
+2002-10-29 04:09 bgiroud
+
+ * configure.in, tinycobol.lsm, test_suite/Makefile,
+ test_suite/cobol_test.pl, test_suite/test.baseline,
+ test_suite/sortio_tests/srtio01.cob,
+ test_suite/sortio_tests/srtio02.cob,
+ test_suite/sortio_tests/srtio03.cob,
+ test_suite/sortio_tests/srtio04.cob,
+ test_suite/sortio_tests/test.script: Added sortio tests.
+
+2002-10-23 15:15 whydoubt
+
+ * cobpp/tcpphelp.h.in: Fixing escaped newlines in Italian help
+ messages.
+
+2002-10-20 05:16 bgiroud
+
+ * ANNOUNCE, ChangeLog, INSTALL, configure, configure.in,
+ tinycobol.lsm, info/rpm/tinycobol-0.00.spec, lib/Makefile.in,
+ lib/basicio.c: Updates for release 0.59.
+
+2002-10-16 11:27 whydoubt
+
+ * Makefile.0, Makefile.in: Clean up two new generated files during
+ distclean.
+
+2002-10-15 03:12 bgiroud
+
+ * cobpp/tcpphelp.h, compiler/hthelp.h: Removed two generated help
+ files.
+
+2002-10-13 16:47 bgiroud
+
+ * ChangeLog, cobpp/tcpphelp.h, cobpp/tcpphelp.h.in,
+ compiler/hthelp.h, compiler/hthelp.h.in,
+ info/htcobolpp_man_fr.html: Added missing files from David Essex
+ concerning internationalization.
+
+2002-10-13 02:03 whydoubt
+
+ * INSTALL, Makefile.0, Makefile.in, info/debian/rules,
+ test.code/Makefile.0, test.code/Makefile.in, utils/Makefile.0,
+ utils/Makefile.in: Adding standard make target 'distclean'.
+
+2002-10-11 10:49 bgiroud
+
+ * configure, configure.in, cobpp/cobpp.c, cobpp/cobpp.h,
+ compiler/htglobals.c, compiler/htglobals.h, info/Makefile.in,
+ lib/basicio.c, lib/cobmove_b_.c: Incorporated David Essex changes
+ for intl. of man files. Corrected the way
+ tcob_accept_{date,time,day} would fill a char field from a BININT
+ one.
+
+2002-10-04 10:41 bgiroud
+
+ * compiler/htcobgen.c, info/htcobf2f_man_fr.html,
+ info/htcobol_man_fr.html, lib/basicio.c, lib/cobmove.c,
+ lib/cobmove_9_.c, lib/cobmove_b_.c, lib/cobmove_c_.c,
+ lib/cobmove_f_.c, lib/cobmove_x_.c, lib/htcoblib.h,
+ lib/intrinsic.c, lib/mcmath.c, lib/pictures.c, lib/screenio.c,
+ lib/strings.c: tcob_ prefix changes phase III.
+
+2002-09-27 11:04 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, lib/cobmove.c,
+ lib/cobmove_9_.c, lib/cobmove_b_.c, lib/cobmove_c_.c,
+ lib/cobmove_x_.c, lib/fileio.c, lib/htcoblib.h, lib/intrinsic.c,
+ lib/mcmath.c, lib/scr_curses.c, lib/screenio.c, lib/screenio.h,
+ lib/strings.c, test.code/Readme.txt, test.code/t00/Makefile,
+ test.code/t17/Makefile, test.code/t17/Readme.txt,
+ test.code/t23/Makefile, test.code/t26/Makefile: Changing RTS names
+ phase II.
+
+2002-09-27 03:22 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcobolrc.in, compiler/htcobolrc.mingw, lib/basicio.c,
+ lib/cobmove.c, lib/cobmove_9_.c, lib/cobmove_b_.c,
+ lib/cobmove_c_.c, lib/cobmove_f_.c, lib/cobmove_x_.c, lib/fileio.c,
+ lib/general.c, lib/htcoblib.h, lib/intrinsic.c, lib/mcmath.c,
+ lib/rterrors.c, lib/scr_curses.c, lib/screenio.c, lib/strings.c,
+ test_suite/nist/NC.idx: Changed or added prefix "tcob_" phase I.
+
+2002-09-16 05:00 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ lib/fileio.c, test.code/t08/Readme.txt: Corrected several bugs in
+ sort, and added prefix tcob_ for sort entry points.
+
+2002-09-10 03:59 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/basicio.c,
+ lib/htcoblib.h, test.code/t08/test08u.cob: Added the correct
+ handling of implied numeric move in accept_* routines. Also
+ renamed the modified routines with a prefix of tcob_.
+
+2002-09-09 05:23 bgiroud
+
+ * Makefile.in, cobpp/Makefile.in, cobpp/Makefile.mingw,
+ compiler/Makefile.in, compiler/Makefile.mingw, compiler/htcobemt.c,
+ compiler/htcobgen.c, info/Makefile.in, lib/Makefile.in,
+ lib/Makefile.mingw, test.code/Makefile.in: Added devel tag in
+ Makefiles. Made SORT-RETUN defined. Gives an error if assigned
+ name in SELECT is not defined.
+
+2002-08-27 11:21 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobol.y, compiler/htglobals.c,
+ lib/Makefile.in, lib/Makefile.mingw, lib/dyncall.c,
+ lib/intrinsic.c, test.code/t02/test02.cob, test.code/t33/Makefile,
+ test_suite/cobol_test.pl: Unify the 2 libraries of the runtime in
+ one. By default create the runtime system as a shared object.
+ Some bug fixes.
+
+2002-08-12 14:28 bgiroud
+
+ * TODO, compiler/htcobemt.c, compiler/htcobgen.c,
+ compiler/htcobol.y, compiler/htcoboly.h, info/htcobf2f_fr.man,
+ info/htcobol_fr.man, info/htcobolpp_fr.man,
+ test_suite/cobol_test.pl, test_suite/nist/IX.rpt,
+ test_suite/nist/SM.rpt, test_suite/nist/nist.rpt: Added french
+ translation. Updated cobol_test.pl for dynamic libs.
+
+2002-06-26 13:13 ferranp
+
+ * compiler/htcobol.y, lib/dyncall.c, lib/general.c, lib/htcoblib.h,
+ lib/rterrors.h: Preliminary cancel statement. Unify the way dyncall
+ works with dl and ltdl Some imprivements for NIST test suite.
+
+2002-06-26 08:10 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ lib/screenio.c: Correct determination of size for fields without
+ picture. Correct parsing of nested progrmas (NIST IC test suite).
+ A little bug on screen.
+
+2002-06-25 23:13 dessex
+
+ * info/: htcobf2f_it.man, htcobf2f_man_it.html, htcobol_it.man,
+ htcobol_man_it.html, htcobolpp_it.man, htcobolpp_man_it.html: Added
+ Italian versions MAN and HTML docs.
+
+2002-06-24 12:08 ferranp
+
+ * compiler/htcobol.y, lib/basicio.c, lib/dyncall.c, lib/general.c,
+ lib/intrinsic.c, lib/rterrors.c, lib/rterrors.h, lib/screenio.c:
+ Changes on parser. Improvements on runtime error reporting.
+
+2002-06-21 06:36 ferranp
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/general.c,
+ lib/screenio.c: Some bug fixes. Clearer accept syntax. Now not
+ requires curses to be linked with any cobol program.
+
+2002-06-19 14:09 ferranp
+
+ * compiler/: htcobemt.c, htcobol.y, htcoboly.h: A bug introduced on
+ one of the last modifications afecting the returninig of routines.
+
+2002-06-19 12:03 ferranp
+
+ * lib/: general.c, htcoblib.h, intrinsic.c, scr_curses.c: NUMVAL-C
+ instrinsic function. (cobol 85 intrinsic functions complented).
+ Bug on the screen section accept (reported by Iker Etxebarria).
+ Restore the currency symbol when returning from a call.
+
+2002-06-17 22:29 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Flag as error level 78 variables.
+
+2002-06-16 17:59 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcoboly.h,
+ compiler/reswords.c, lib/fileio.c, lib/general.c, lib/htcoblib.h,
+ lib/intrinsic.c, lib/rterrors.h: Fase 1 of the cancel statement.
+ NUMVAL intrinsic function.
+
+2002-06-16 03:32 dessex
+
+ * compiler/htcobol.y: Bug fix for ACCEPT/DISPLAY grammar in parser.
+
+2002-06-14 13:10 ferranp
+
+ * compiler/htcobol.y: Fix a bug that makes all the accepts via
+ curses.
+
+2002-06-13 04:17 dessex
+
+ * cobpp/: parser.y, scanner.l: Updated pre-processor to allow
+ multi-line comment entries for AUTHOR, INSTALLATION, DATE-WRITTEN,
+ DATE-COMPILED, SECURITY statements.
+
+2002-06-12 18:46 dessex
+
+ * compiler/htcobol.y, test_suite/nist/Readme.txt: Minor bug in main
+ parser.
+
+2002-06-12 13:35 ferranp
+
+ * compiler/htcobol.y: An bug produced for deleting by error lines
+ from previous version.
+
+2002-06-12 06:12 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/reswords.c, lib/htcoblib.h,
+ lib/scr_curses.c, lib/screenio.c: Modification of the
+ accept/display on the parser to be closer to standards. Boback on
+ a rutine generates exit program, else stop run. A bug fix for SET.
+
+2002-06-10 21:39 dessex
+
+ * info/: htcobf2f_en.man, htcobf2f_man_en.html,
+ htcobf2f_man_pt_BR.html, htcobf2f_pt_BR.man, htcobol.man,
+ htcobol_en.man, htcobol_man.html, htcobol_man_en.html,
+ htcobol_man_pt_BR.html, htcobol_pt_BR.man, htcobolpp_en.man,
+ htcobolpp_man_en.html, htcobolpp_man_pt_BR.html,
+ htcobolpp_pt_BR.man, rpm/tinycobol-0.00.spec: Updated man and HTML
+ docs for htcobol.
+
+2002-06-05 05:34 dessex
+
+ * Readme.mingw32.txt, STATUS, htconfig.mingw.h,
+ info/rpm/tinycobol-0.00.spec, lib/Makefile.mingw, lib/scr_curses.c,
+ test.code/copybooks/Makefile.in: Minor make file fixes. Update to
+ scr_curses for pdcurses.
+
+2002-06-04 04:07 dessex
+
+ * ANNOUNCE, AUTHORS, ChangeLog, Makefile.0, configure,
+ configure.in, htconfig.0.h, htconfig.mingw.h, tinycobol.lsm,
+ cobpp/Makefile.0, compiler/Makefile.0, compiler/htcobolrc.mingw,
+ compiler/htglobals.c, lib/Makefile.0, lib/Makefile.mingw,
+ lib/htcoblib.h, test.code/Makefile.0, utils/Makefile.0: Updates for
+ 0.58 release.
+
+2002-06-03 16:19 ferranp
+
+ * lib/Makefile.in: Corrections on the symlinks for installing as
+ shared libs.
+
+2002-06-03 15:18 ferranp
+
+ * compiler/htglobals.c: Bug that causes a seg fault with lib names
+ in the resource file like '$.so'
+
+2002-06-03 03:04 dessex
+
+ * configure, configure.in, compiler/htcobolrc.in,
+ compiler/htglobals.c, compiler/htglobals.h, info/htcobol.man,
+ info/htcobol_man.html: Updated TC front end to pass linker options
+ (Part III). Minor update to configure script to add the static
+ libraries utilities to the TC resource file. Updated man and HTML
+ docs for htcobol.
+
+2002-06-02 22:36 dessex
+
+ * compiler/: htcobolrc.in, htglobals.c, htglobals.h: Updated TC
+ front end to handle shared libraries (Part II).
+
+2002-06-02 13:44 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobol.y, lib/dyncall.c: Some
+ bugxs intreoduced when verifying paragraph and section names. Some
+ bugs on dynamic calls.
+
+2002-05-30 15:04 dessex
+
+ * cobpp/parser.y, cobpp/scanner.l, compiler/htcobol.c,
+ compiler/htcobolrc.in, compiler/htcoboly.h, compiler/htglobals.c,
+ compiler/htglobals.h, test.code/config/COB.rules.in: More
+ pre-processor fixes and updates relating to REPLACE (Part I).
+ Updated TC front end to handle shared/static libraries (Part I).
+
+2002-05-22 17:38 whydoubt
+
+ * lib/mcmath.c: Fixed a bug in 'DIVIDE f1 INTO f2 GIVING f3
+ REMAINDER f4' where f3 is a numeric-edited non-integer.
+
+2002-05-22 14:53 ferranp
+
+ * lib/Makefile.in: Update Makefile for creating and installig
+ (optional) shared libraries:
+
+2002-05-22 12:26 ferranp
+
+ * lib/: scr_curses.c, screenio.c, screenio.h: Minor bugs on
+ screenio.
+
+2002-05-19 09:45 ferranp
+
+ * compiler/htcobol.y, compiler/reswords.c, lib/htcoblib.h,
+ lib/scr_curses.c, lib/screenio.c, lib/screenio.h,
+ test.code/t23/test23b.cob: Improvements and cleanup on screenio.
+ end-accept clause.
+
+2002-05-18 11:46 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobol.y,
+ compiler/htcobolrc.mingw, compiler/htglobals.c, lib/Makefile.mingw,
+ lib/dyncall_ltdl.c, lib/screenio.c: Portability issues for mingw32
+ including dynamic calls. Validate and print invalid paragraphs and
+ sections on compiler.
+
+2002-05-17 15:55 whydoubt
+
+ * test_suite/nist/nc_extr.pl: Update nist/nc_extr.pl to simplify
+ and correct some problems working with the first and last modules,
+ CM and ST respectively.
+
+2002-05-17 14:42 whydoubt
+
+ * test_suite/nist/Makefile_trail.h: Generate full nist.rpt report
+ from correct module reports.
+
+2002-05-17 09:39 ferranp
+
+ * compiler/htcobemt.c: WHEN-COMPILED intrinsic function.
+
+2002-05-17 08:49 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/htglobals.c, compiler/htglobals.h,
+ compiler/reswords.c, compiler/reswords.h, lib/intrinsic.c: Fixes on
+ intrinsic functions. Option -m to compile as a module.
+
+2002-05-15 06:06 dessex
+
+ * configure, configure.in: More updates to the configure script for
+ DB version 4.
+
+2002-05-15 04:56 dessex
+
+ * configure, configure.in, htconfig.h.in, lib/htcoblib.h,
+ test_suite/cobol_test.pl: Updated configure script for DB version
+ 4. Updated test_suite Perl script to determine the DB library name
+ from the resource file(htcobolrc).
+
+2002-05-14 17:52 whydoubt
+
+ * lib/strings.c: Small fix to INSPECT (TALLYING and REPLACING) that
+ was causing AFTER to not work as specified.
+
+2002-05-14 12:16 whydoubt
+
+ * lib/strings.c: Implemented INSPECT CONVERTING
+
+2002-05-13 02:22 bgiroud
+
+ * test_suite/nist/: Makefile_SM, SM.idx: Added SM support in nist
+ test_suite directory.
+
+2002-05-12 19:03 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ lib/intrinsic.c, test.code/t35/test35.cob: More instrinsic
+ functions. some bug fixed.
+
+2002-05-09 17:52 whydoubt
+
+ * lib/screenio.c: Fixing a kludge in display_curses that was
+ causing memory after a 'group' to be trampled when the group was
+ displayed.
+
+2002-05-05 16:43 ferranp
+
+ * lib/screenio.c: Correct problems displaying edited fields with
+ blank when zero. Bug reported by Harold Norris.
+
+2002-05-05 15:51 ferranp
+
+ * compiler/htcobgen.c: Correct a bug on last commit.
+
+2002-05-05 13:46 ferranp
+
+ * compiler/htcobgen.c, lib/intrinsic.c, lib/screenio.c,
+ test.code/t35/test35.cob: Intrinsic functions, bug fixes and
+ updated test35.
+
+2002-05-03 23:54 dessex
+
+ * test_suite/nist/nc_extr.pl: Update to the NIST test suite
+ extract.
+
+2002-05-03 08:29 ferranp
+
+ * compiler/htcobemt.c, lib/intrinsic.c: More intrinsic functions.
+
+2002-05-03 06:40 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/reswords.c, test_suite/Makefile,
+ test_suite/test.baseline, test_suite/nist/IX.idx,
+ test_suite/nist/IX.rpt, test_suite/nist/IX_prev.rpt,
+ test_suite/nist/Makefile_head.h, test_suite/nist/Makefile_trail.h,
+ test_suite/nist/NC.rpt, test_suite/nist/NC_prev.rpt,
+ test_suite/nist/SM.rpt, test_suite/nist/make_pop_linux.txt,
+ test_suite/nist/nc_extr.pl, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_IX.rpt, test_suite/nist/nist_NC.rpt,
+ test_suite/nist/xtr_rpt.sh: Further enhancements to support IX
+ module. Added module SM. Changed names of .rpt files (suppressed
+ nist_ prefix).
+
+2002-04-30 04:30 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c,
+ test.code/t35/test35.cob: Some bugs on intrinsic functions and
+ generating temp fields.
+
+2002-04-29 09:22 ferranp
+
+ * lib/cobmove_x_.c: A bug fix for a seg fault on move.
+
+2002-04-29 08:56 ferranp
+
+ * compiler/htcobol.y, compiler/scan.l, lib/dyncall.c,
+ lib/screenio.c: Bug fixes. Remove code for copys from compiler.
+
+2002-04-28 19:16 dessex
+
+ * cobpp/: scanner.l, test.code/ft1.cob, test.code/t1.cob:
+ Pre-processor update relating to SQL pre-processor.
+
+2002-04-28 18:36 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, lib/intrinsic.c,
+ test.code/t35/test35.cob: More intrinsic functions. Some bug fixes.
+
+2002-04-28 15:51 ferranp
+
+ * lib/intrinsic.c, test.code/Readme.txt, test.code/t35/Makefile,
+ test.code/t35/test35.cob: New Intrinsic functions. Added examples
+ for instinsic functions in test.code.
+
+2002-04-28 11:39 ferranp
+
+ * compiler/htcobol.y, lib/intrinsic.c: Bugs on intrinsic function
+ current-date (instrinsics without params)
+
+2002-04-26 13:34 dessex
+
+ * ChangeLog, configure, configure.in, cobpp/cobpp.c, cobpp/cobpp.h,
+ cobpp/parser.y, cobpp/scanner.l: Updated ChangeLog. Updated
+ configure script to handle dynamic loading. Updated configure
+ script dynamic loading RTS default. More pre-processor updates.
+
+2002-04-24 19:19 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcoboly.h,
+ compiler/reswords.c, lib/intrinsic.c, lib/rterrors.c:
+ Implementation of some intrinsic functions.
+
+2002-04-22 19:59 andrewcza
+
+ * lib/fileio.c, test_suite/test.baseline,
+ test_suite/seqio_tests/seqio02.cob,
+ test_suite/seqio_tests/seqio05.cob: Begin making changes so that
+ File Status in fileio.c will return Cobol 85 Status codes and not
+ Cobol 74.
+
+2002-04-21 16:07 ferranp
+
+ * compiler/htcobemt.c, compiler/htcoboly.h, compiler/reswords.c,
+ compiler/reswords.h, compiler/scan.l, lib/Makefile.in,
+ lib/cobmove_f_.c, lib/intrinsic.c, lib/mcmath.c, lib/rterrors.c,
+ lib/scr_curses.c: Add skeleton for intrinsec functions.Added
+ example function ABS. Correct a bug on move float fields and a bug
+ on screen io.
+
+2002-04-16 22:39 andrewcza
+
+ * compiler/htcobgen.c: Fix a problem with Relative IO for Write
+ From.
+
+2002-04-16 20:17 dessex
+
+ * lib/: dyncall.c, dyncall_ltdl.c: Merged dynamic loading code in
+ RTS.
+
+2002-04-16 18:11 dessex
+
+ * configure, configure.in, htconfig.0.h, compiler/htcobemt.c,
+ compiler/htcobolrc.in, lib/Makefile.in, lib/dyncall.c,
+ lib/htcoblib.h: Updated configure script to handle dynamic loading.
+ Merged dynamic loading code in RTS.
+
+2002-04-16 13:14 ferranp
+
+ * lib/dyncall_ltdl.c: ome cleanup on dyncall_ltdl.
+
+2002-04-15 16:14 ferranp
+
+ * compiler/htcobolrc.mingw: [no log message]
+
+2002-04-15 16:14 ferranp
+
+ * cobpp/Makefile.mingw, lib/scr_curses.c, lib/screenio.c: Some
+ issues on mingw32 port. Colors work again with pdcurses. Bugs on
+ display ADVANCING/NO ADVANCING and on DISPLAY reported by Harold
+ Norris.
+
+2002-04-11 05:57 dessex
+
+ * ChangeLog, configure, configure.in, htconfig.h.in,
+ cobpp/test.code/ft1.cob, compiler/htcobol.y, lib/Makefile.in,
+ lib/Makefile.mingw, lib/dyncall.c, lib/dyncall_ltdl.c,
+ lib/scr_curses.c, test.code/t33/Makefile, test.code/t33/Readme.txt,
+ test.code/t33/rt.sh: Minor fix to htcobol.y. Updated configure
+ script to handle dynamic loading (using the ltdl library or RTS
+ default). Minor fix to screenio to handle old versions of the
+ ncurses libraries.
+
+2002-04-10 19:39 ferranp
+
+ * lib/: cobmove_x_.c, screenio.c: Correct move right justified
+ fields (strip trailing spaces from source field). Now accept just
+ right works as expected.
+
+2002-04-10 03:19 bgiroud
+
+ * compiler/htcobemt.c, test_suite/Makefile,
+ test_suite/nist/Makefile_head.h, test_suite/nist/Makefile_nc,
+ test_suite/nist/nc.idx, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_IX.rpt, test_suite/nist/nist_IX_prev.rpt,
+ test_suite/nist/nist_prev.rpt: Corrected test for NOT INVALID KEY.
+ Further automate test suite.
+
+2002-04-08 02:59 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/pictures.c, test_suite/nist/NC.idx,
+ test_suite/nist/make_pop_linux.txt, test_suite/nist/nc.idx,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_IX.rpt,
+ test_suite/nist/nist_NC.rpt, test_suite/nist/nist_NC_prev.rpt:
+ Further improvements for the handling of declaratives. Added cast
+ of int for va_args in pictures.
+
+2002-04-07 18:25 ferranp
+
+ * configure, configure.in, compiler/htcobemt.c: The configure
+ script didn't give the correct defalut lib to linker. Correct the
+ stabs lines when using copybooks.
+
+2002-04-07 16:02 ferranp
+
+ * lib/: Makefile.in, dyncall.c, ltdl.c: Dynamic call now uses ltdl
+ routines.
+
+2002-04-05 01:02 andrewcza
+
+ * compiler/htcobgen.c, lib/fileio.c, test.code/config/COB.rules.in:
+ Correct a problem with WRITE FROM
+
+2002-04-02 18:51 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, lib/Makefile.in,
+ lib/Makefile.mingw, lib/htcoblib.h, lib/scr_curses.c,
+ lib/screenio.c, lib/screenio.h: Separate all the functions related
+ to curses on a file. Correct a bug displaying GROUP fileds in
+ curses. BLANK SCREEN now uses colors.
+
+2002-04-01 19:06 andrewcza
+
+ * lib/fileio.c: Fixed a bug in Rewrite for Sequential IO
+
+2002-04-01 04:53 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, test_suite/Makefile,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_IX.rpt,
+ test_suite/nist/nist_NC.rpt, test_suite/nist/nist_NC_prev.rpt:
+ Corrected the behavior of one format of DIVIDE statement. Corrected
+ the generation of READ when used sequentially.
+
+2002-03-30 23:12 dessex
+
+ * ChangeLog, INSTALL, STATUS, configure, configure.in,
+ cobpp/Makefile.in, cobpp/cobpp.c, cobpp/cobpp.h, cobpp/parser.y,
+ cobpp/scanner.l, cobpp/test.code/ft1.cob, cobpp/test.code/ft2.cob,
+ cobpp/test.code/r.sh, cobpp/test.code/t2.cob,
+ cobpp/test.code/t3.cob, test_suite/nist/Makefile: Updated
+ pre-processor and added code to handle tabs, inline comments,
+ concatination. Updated ChangeLog and configure script files.
+
+2002-03-29 14:23 whydoubt
+
+ * STATUS, lib/strings.c: Out-of-bounds bug fix to STRING statement.
+
+2002-03-27 04:22 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test_suite/nist/IX.idx,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_IX.rpt,
+ test_suite/nist/nist_NC.rpt: Phase I of declaratives semantics.
+
+2002-03-24 13:53 ferranp
+
+ * lib/screenio.c: Correct bugs on screenio.
+
+2002-03-23 16:23 whydoubt
+
+ * lib/strings.c: Corrected small bug in STRING statement.
+
+2002-03-22 05:26 bgiroud
+
+ * compiler/htcobol.y, test_suite/nist/Makefile_trail.h,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_IX.rpt,
+ test_suite/nist/nist_IX_prev.rpt, test_suite/nist/nist_NC.rpt,
+ test_suite/nist/nist_prev.rpt: End of declaratives syntax (I hope).
+ Small correction for search.
+
+2002-03-21 19:37 andrewcza
+
+ * STATUS, TODO, test.code/Readme.txt, test.code/esql/Readme: Update
+ some Status files to reflect the availability of Embedded SQL.
+
+2002-03-21 16:19 bgiroud
+
+ * compiler/htcobol.y, test_suite/nist/nist_IX.rpt: Phase II of
+ declaratives: grammar is OK. The tests behind i/o statements are
+ still to be implemented.
+
+2002-03-19 03:33 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/reswords.c,
+ lib/mcmath.c, test_suite/nist/IX.idx, test_suite/nist/Makefile_IX,
+ test_suite/nist/Makefile_NC, test_suite/nist/Makefile_head.h,
+ test_suite/nist/Makefile_trail.h, test_suite/nist/NC.idx,
+ test_suite/nist/Readme.txt, test_suite/nist/make_pop_linux.txt,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_IX.rpt,
+ test_suite/nist/nist_IX_prev.rpt, test_suite/nist/nist_NC.rpt,
+ test_suite/nist/nist_NC_prev.rpt, test_suite/nist/nist_prev.rpt,
+ test_suite/nist/xtr_rpt.sh: Phase I of declaratives. Enhancements
+ for the NIST test suite. Correction of level-88 bug.
+
+2002-03-15 13:01 andrewcza
+
+ * test.code/esql/: esql.list.ecob, esql.trans.ecob: Update examples
+ to demonstrate BASED ON and HOST VARIABLES.
+
+2002-03-13 19:50 ferranp
+
+ * lib/screenio.c: Correct bug of accept line/position.
+
+2002-03-12 23:01 andrewcza
+
+ * test.code/esql/: Build, Makefile.rollback, Makefile.trans,
+ esql.list.ecob, esql.rollback.ecob, esql.trans.ecob: Added More
+ examples using Transactions and Rollback
+
+2002-03-12 22:05 andrewcza
+
+ * test.code/esql/: Makefile.create, Makefile.insert, Makefile.list,
+ Makefile.table, Readme: Update test code for Firebird Release 1.0
+
+2002-03-08 18:51 dessex
+
+ * compiler/: htcobol.y, htcobolrc.in, htglobals.c, htglobals.h:
+ Minor update to better document the grammar. More updates to main
+ compiler user options.
+
+2002-03-08 17:50 bgiroud
+
+ * compiler/htcobemt.c, lib/fileio.c, lib/htcoblib.h,
+ test_suite/nist/make_pop_linux.txt: Corrected spurious lines in
+ line sequential writes, INVALID KEY tests and various parameters in
+ NIST test suite.
+
+2002-03-08 02:04 dessex
+
+ * compiler/htcobemt.c, info/htcobol.man, info/htcobol_man.html,
+ info/htcobolpp.man, info/htcobolpp_man.html: Updated htcobolpp
+ reference MAN and HTML files. Changed code generation label from
+ 'tiny_cobol_compiled' to 'tinycobol_compiled'.
+
+2002-03-07 15:57 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/screenio.c: Screen section enhacementsw
+ and new features. Print all the DEBUG_COMPILER info on the source
+ file Some comments on the compiler.
+
+2002-03-06 09:08 dessex
+
+ * AUTHORS, configure, configure.in, cobpp/AUTHORS, cobpp/cobpp.c,
+ cobpp/cobpp.h, cobpp/scanner.l, cobpp/test.code/ft1.cob,
+ cobpp/test.code/r.sh, cobpp/test.code/t1.cob,
+ compiler/htcobolrc.in, compiler/htglobals.c, compiler/htglobals.h:
+ Added preliminary code to support the 'D' type lines, include
+ source debugging line option.
+
+2002-03-05 23:31 andrewcza
+
+ * test.code/esql/: Build, Makefile.list, esql.create.ecob,
+ esql.list.ecob: Added a example of a ESQL Program using EXEC SQL
+ FETCH
+
+2002-03-05 01:13 dessex
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htglobals.c: Updated
+ ChangeLog file. More updates to main compiler user options.
+
+2002-03-04 22:00 andrewcza
+
+ * test.code/esql/: Build, Makefile.create, Makefile.insert,
+ Makefile.table, Readme, esql.create.ecob, esql.insert.ecob,
+ esql.table.ecob, fixit: Added example files for Firebird ESQL
+ Support.
+
+2002-03-04 20:48 ferranp
+
+ * lib/: dyncall.c, rterrors.c, screenio.c: New error reporting,
+ code cleanup.
+
+2002-03-04 20:21 ferranp
+
+ * lib/: dyncall.c, screenio.c: Some enhacements and code cleanup.
+
+2002-03-03 12:40 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcoboly.h,
+ compiler/htglobals.c, lib/cobmove_b_.c, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_prev.rpt: Corrected signed binary to unsigned
+ display or binary move. Suppressed compile erreors with #ifdef
+ FIXME directives.
+
+2002-03-02 05:34 dessex
+
+ * ChangeLog, configure, configure.in, compiler/Makefile.mingw,
+ compiler/htcobgen.c, compiler/htcobolrc.in, compiler/htglobals.c,
+ compiler/htglobals.h, info/Makefile.in,
+ info/rpm/tinycobol-0.00.spec, info/rpm/tinycobol.rpm4.spec: Updated
+ ChangeLog file. More updates to main compiler user options.
+
+2002-03-01 10:19 whydoubt
+
+ * lib/cobmove.c, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_prev.rpt: Significant changes to move_edited.
+ Should perform much more like is specified in standards.
+
+2002-02-27 20:17 ferranp
+
+ * compiler/: htcobol.y, htglobals.c: More error reporting on the
+ parser. By default dissable the option of all calls dynamic.
+
+2002-02-26 14:37 whydoubt
+
+ * lib/screenio.c: Simplified several loops. Introduced addch_set()
+ function, for accomplishing addch multiple times on the same
+ character.
+
+2002-02-26 13:45 ferranp
+
+ * cobpp/scanner.l, compiler/htcobol.y, compiler/scan.l,
+ lib/dyncall.c: Error to preprocesoor that gives bad line numbers.
+ Debug files/lines on scanner. New errors reported. On dynamic
+ calls, search for a file named .so.
+
+2002-02-25 15:00 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htglobals.c, compiler/htglobals.h, lib/screenio.c: Support
+ for non standard display at 9999/accept at 9999. A new compiler
+ option to treat all call statements on the program as dynamic
+ calls.
+
+2002-02-25 05:32 dessex
+
+ * ANNOUNCE, ChangeLog, Makefile.in, configure, configure.in,
+ htconfig.0.h, htconfig.h.in, htconfig.mingw.h, tinycobol.lsm,
+ cobpp/cobpp.c, compiler/Makefile.in, compiler/htcobol.c,
+ compiler/htcobolrc.in, compiler/htglobals.c, compiler/htglobals.h,
+ test.code/Readme.txt, test.code/makrc: Updated ChangeLog file.
+ Added resource script to set the environment variables file. More
+ updates to main compiler user options. Updates for 0.57 release.
+
+2002-02-23 07:31 bgiroud
+
+ * compiler/: htcobemt.c, htcobgen.c, htcoboly.h, reswords.c,
+ scan.l: Preliminary support of COMP-X and COMP-5.
+
+2002-02-21 17:24 whydoubt
+
+ * lib/pictures.c: Making picCreate and picAppend check that they do
+ not run past the end of the buffer they are passed.
+
+2002-02-21 08:37 ferranp
+
+ * compiler/: htcobgen.c, htcobol.y, reswords.c: Bug that make a
+ segmentation fault when initialize a field on a redefinition.
+ Using the cancel statement report only a warning.
+
+2002-02-20 16:58 ferranp
+
+ * cobpp/scanner.l, lib/screenio.c: Bug on precompiler for copy
+ replacing on fixed format files. Accept from inkey (to get
+ keyboard status with curses)
+
+2002-02-18 14:21 ferranp
+
+ * lib/htcoblib.h, lib/screenio.c, lib/screenio.h,
+ test.code/copybooks/screen.cpy: Changes on screenio to make it
+ easier to accept edited fields
+
+2002-02-17 23:04 whydoubt
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_prev.rpt: Allowing sign clause in group item
+ to be inherited by subordinate items. Moved some handling of usage
+ out of htcobol.y (parser) into htcobgen.c.
+
+2002-02-17 04:55 dessex
+
+ * ChangeLog, Makefile.in, configure, configure.in,
+ compiler/Makefile.in, compiler/cobopt, compiler/htcobolrc.in,
+ compiler/htglobals.c, compiler/htglobals.h,
+ test_suite/cobol_test.pl: Updates to main compiler user options
+ defaults. Updated ChangeLog file. Added htcobolrc.in and updated
+ configure to generate user options defaults resource file. The
+ generated file htcobolrc replaces cobopt file as the user options
+ defaults resource file. Updated test_suite Perl script to use
+ TCOB_OPTIONS_PATH environment variable to set the resource file
+ location.
+
+2002-02-15 16:40 whydoubt
+
+ * compiler/: htcobol.y, htcoboly.h, reswords.c: Aligning the method
+ used for getting the USAGE type.
+
+2002-02-15 12:43 whydoubt
+
+ * compiler/htcobol.y: Reformatting and reorganizing a few rules.
+
+2002-02-15 10:43 bgiroud
+
+ * compiler/htcobol.y, compiler/scan.l, lib/mcmath.c,
+ test_suite/test.baseline, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_prev.rpt: Now accepts underscores in variable
+ names, doesn't choke anymore on GLOBAL clause, and a little
+ enhancement in arith precision.
+
+2002-02-15 07:53 dessex
+
+ * compiler/: cobopt, htcobol.y, htglobals.c, htglobals.h: More
+ updates to main compiler user options.
+
+2002-02-13 20:26 ferranp
+
+ * lib/screenio.c: Map cobol colors from standard to curses colors.
+
+2002-02-13 20:03 ferranp
+
+ * lib/screenio.c: More screen updates and cleanup.
+
+2002-02-12 00:30 whydoubt
+
+ * lib/cobmove_c_.c: Continuing move to 'pic' interface.
+
+2002-02-10 19:16 whydoubt
+
+ * lib/screenio.c: Simplifying/improving performance of
+ free_scr_fields().
+
+2002-02-10 15:04 ferranp
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/reswords.c, lib/screenio.c, lib/screenio.h: Preliminary
+ support for cusror clause on special names, as shown on COBOL 2001
+ Draft.
+
+2002-02-10 13:45 bgiroud
+
+ * compiler/htcobgen.c, test_suite/nist/nc.idx,
+ test_suite/nist/nist.rpt: Added support for subtract corresponding.
+
+2002-02-09 13:42 dessex
+
+ * compiler/cobopt, compiler/htglobals.c, compiler/htglobals.h,
+ lib/basicio.c: Minor bug fix for ACCEPT (stdin) statement. More
+ updates to main compiler front end options.
+
+2002-02-09 00:35 whydoubt
+
+ * compiler/: htcobemt.c, htcobgen.c: Fixed a problem in the
+ compiler with accepting to a indexed variable.
+
+2002-02-08 16:37 ferranp
+
+ * lib/: screenio.c, screenio.h: Unify all the curses display/accept
+ to one. To make it easier to maintain.
+
+2002-02-08 01:43 whydoubt
+
+ * compiler/htcobol.y: Fixed a break in the field_description rule
+ when opt_def_name is NULL.
+
+2002-02-07 14:33 ferranp
+
+ * configure, configure.in, info/Makefile.in, lib/Makefile.in,
+ lib/screenio.c, lib/screenio.h: Bug that make the accept of screen
+ item crash. Begin screeio reorganization. Configuration and
+ makefiles for easy creation of debian packages.
+
+2002-02-06 10:25 whydoubt
+
+ * lib/screenio.c: Fix to SCREEN processing.
+
+2002-02-06 05:39 dessex
+
+ * compiler/: cobopt, htcobol.y, htglobals.c, htglobals.h:
+ Preliminary update to main compiler to auto detect required link
+ libraries.
+
+2002-02-05 17:21 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/reswords.c, lib/mcmath.c,
+ test_suite/compile_tests/ctestp-subtract3.cob,
+ test_suite/nist/nc.idx, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_prev.rpt, test_suite/nist/xtr_rpt.sh: Added
+ support for subtract corresponding. Preliminary work for RENAMES.
+ Applied the fix for qualified variables provided by Gerard Hollard.
+
+2002-02-05 05:33 dessex
+
+ * ChangeLog, Readme.cygwin.txt, Readme.mingw32.txt,
+ compiler/Makefile.0, compiler/cobopt, compiler/htcobol.c,
+ compiler/htglobals.c, compiler/htglobals.h: Changed Cygwin version
+ to use the GNU GetOpt function. Updated ChangeLog file.
+
+2002-02-05 00:58 whydoubt
+
+ * compiler/htcobgen.c: Fix for pic_save_char, when PIC contains
+ characters 0x80-0xFF.
+
+2002-02-03 01:35 whydoubt
+
+ * lib/: cobmove_c_.c, mcmath.c, screenio.c: Removing some
+ now-unnecessary COMP-3 code.
+
+2002-02-02 15:40 whydoubt
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Cleaned some
+ compiler code for PIC strings, and a problem with 'P' scaling.
+
+2002-02-01 23:35 whydoubt
+
+ * compiler/htcobgen.c, lib/cobmove_9_.c, lib/cobmove_c_.c,
+ lib/mcmath.c: Continuing improvements to COMP-3 datatype: making
+ certain SIGN IS ... SEPARATE does not affect length.
+
+2002-02-01 04:09 bgiroud
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/cobmove.c, lib/htcoblib.h,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_prev.rpt: Full
+ support for ADD CORRESPONDING ... ON SIZE ERROR.
+
+2002-02-01 00:52 whydoubt
+
+ * compiler/htcobemt.c, compiler/htcobgen.c, lib/basicio.c,
+ lib/cobmove.c, lib/cobmove_b_.c, lib/cobmove_f_.c,
+ lib/cobmove_x_.c, lib/fileio.c, lib/general.c, lib/htcoblib.h,
+ lib/mcmath.c, lib/screenio.c, lib/strings.c: Switching method for
+ specifying datatype in most locations from '9','X',... to
+ DTYPE_DISPLAY,DTYPE_ALPHANUMERIC,...
+
+2002-01-31 10:13 whydoubt
+
+ * lib/: basicio.c, cobmove.c, screenio.c: Fixes in display and
+ display_curses for decimal point placement and decimal point is
+ comma.
+
+2002-01-30 01:47 whydoubt
+
+ * compiler/htcobemt.c, info/VarStructure.Info.txt, lib/basicio.c,
+ lib/cobmove.c, lib/cobmove_9_.c, lib/cobmove_b_.c,
+ lib/cobmove_f_.c, lib/cobmove_x_.c, lib/general.c, lib/htcoblib.h,
+ lib/mcmath.c, lib/pictures.c, lib/screenio.c, lib/strings.c,
+ test.code/t07/test07.cob, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_prev.rpt: New pic* interface: picElemVal,
+ picElemLen, picCreate, picAppend, picReqLen. Fixes and
+ factorization of code in and relating to move_edited.
+ DECIMAL-POINT IS COMMA fix.
+
+2002-01-29 09:12 dessex
+
+ * ANNOUNCE, AUTHORS, INSTALL, configure, configure.in,
+ cobpp/AUTHORS, cobpp/COPYRIGHT, compiler/htcobgen.c,
+ info/rpm/tinycobol-0.00.spec, info/rpm/tinycobol.rpm4.spec: Updates
+ for 0.56 release. More bug fixes for ADVANCING clauses in WRITE
+ statement.
+
+2002-01-28 00:57 dessex
+
+ * ANNOUNCE, ChangeLog, STATUS, mwindows.h, cobpp/cobpp.h,
+ cobpp/scanner.l, compiler/htcobol.c, compiler/htglobals.h,
+ lib/fileio.c: More Win32 (Mingw32) updates. More bug fixes for
+ ADVANCING clauses in WRITE statement. Updates for 0.56 release.
+
+2002-01-27 04:39 dessex
+
+ * cobpp/cobpp.c, cobpp/cobpp.h, cobpp/scanner.l,
+ cobpp/test.code/Makefile, cobpp/test.code/ft3.cob,
+ cobpp/test.code/r.sh, compiler/htcobgen.c, compiler/htcobol.c,
+ compiler/htcobol.y, compiler/htcoboly.h, compiler/htglobals.c,
+ compiler/htglobals.h, lib/fileio.c, test.code/config/COB.rules.in:
+ Update to accept a max of 1024 * 4 byte for include paths. More
+ bug fixes for ADVANCING clauses in WRITE statement.
+
+2002-01-25 11:08 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.c, compiler/htglobals.c,
+ compiler/htglobals.h, test.code/config/COB.build.tmpl.in,
+ test.code/config/COB.build.tmpl.t.in: More compiler options
+ updates. preliminary bug fix for ADVANCING clauses in WRITE
+ statement.
+
+2002-01-25 03:21 dessex
+
+ * ChangeLog, configure, configure.in, mwindows.h, tinycobol.lsm,
+ compiler/Makefile.in, compiler/htcobol.y, compiler/htglobals.c,
+ compiler/htglobals.h, compiler/reswords.c, info/Makefile.in: More
+ compiler options updates. Updated ChangeLog file. Separated WRITE
+ and RELEASE statements.
+
+2002-01-24 03:12 dessex
+
+ * mwindows.h, cobpp/cobpp.c, compiler/htglobals.c,
+ compiler/htglobals.h, lib/mcmath.c: Minor Win32 (Mingw32) update.
+
+2002-01-24 02:28 whydoubt
+
+ * lib/general.c, lib/htcoblib.h, lib/mcmath.c,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_prev.rpt: Fixing
+ ROUNDED problems and related issues in the math routines.
+
+2002-01-24 01:30 whydoubt
+
+ * test_suite/nist/: Makefile, Makefile_nc: Changing Makefiles in
+ NIST test suite directory to accommodate changes in compiler
+ options.
+
+2002-01-23 08:51 dessex
+
+ * info/: Makefile.in, htcobf2f.man, htcobol.man, htcobol_man.html,
+ htcobolpp.man, htcobolpp_man.html: Updated htcobol and htcobf2f MAN
+ files. Added a MAN and HTML file for htcobolpp.
+
+2002-01-23 05:50 dessex
+
+ * ChangeLog, compiler/cobopt, compiler/htcobol.c,
+ compiler/htcoboly.h, compiler/htglobals.c, compiler/htglobals.h,
+ info/htcobf2f_man.html, info/htcobol_man.html,
+ test.code/config/COB.rules.in, test_suite/cobol_test.pl: Main
+ compiler options update. Updated ChangeLog file. Updated man
+ files in HTML format.
+
+2002-01-21 02:28 whydoubt
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/strings.c,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_prev.rpt: Updated
+ STRING statement: Fixed segmentation fault, POINTER IN, and
+ DELIMITED BY.
+
+2002-01-19 00:37 whydoubt
+
+ * compiler/htcobol.y, lib/strings.c, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_prev.rpt: Fixed UNSTRING statement. Fixed a
+ few rules where ON is optional. Fixed problem when NOT ON OVERFLOW
+ present, but ON OVERFLOW not present.
+
+2002-01-15 17:55 whydoubt
+
+ * lib/: dyncall.c, fileio.c, general.c, htcoblib.h, mcmath.c,
+ rterrors.c, screenio.c, strings.c: Tightened up several loops and
+ removed some redundant code in the run-time library.
+
+2002-01-14 16:10 whydoubt
+
+ * compiler/htcobemt.c, lib/basicio.c, lib/cobmove.c,
+ lib/cobmove_x_.c, lib/dyncall.c, lib/mcmath.c, lib/rterrors.c,
+ lib/screenio.c, lib/strings.c: Tightening the scope and changing
+ names for several global variables in the runtime library.
+
+2002-01-14 00:03 dessex
+
+ * ChangeLog, compiler/Makefile.mingw, lib/strings.c,
+ test_suite/cobol_test.pl: Added gcc-2.96 patch update.
+
+2002-01-13 16:42 bgiroud
+
+ * compiler/htcobemt.c, test_suite/nist/nist.rpt,
+ test_suite/nist/nist_prev.rpt: Yet another index correction.
+
+2002-01-11 10:26 bgiroud
+
+ * compiler/Makefile.in, compiler/htcobemt.c, compiler/htcobgen.c,
+ compiler/htcoboly.h, compiler/htglobals.h,
+ test_suite/nist/nist_prev.rpt: Split htcobgen.c; all asm dependent
+ code goes into htcobemt.c.
+
+2002-01-10 21:14 dessex
+
+ * lib/Makefile.in, lib/basicio.c, test_suite/nist/Readme.txt,
+ test_suite/nist/nc_exec85.pl, test_suite/nist/nc_extr.pl,
+ test_suite/nist/nc_report.pl, test_suite/nist/xtr_rpt.sh: Minor
+ update to NIST test suite.
+
+2002-01-09 02:19 whydoubt
+
+ * lib/cobmove_9_.c, test_suite/nist/nist.rpt: Corrected accounting
+ for separate_sign in cob_move_9_b.
+
+2002-01-08 15:49 whydoubt
+
+ * compiler/htcobgen.c, test_suite/nist/nist.rpt: Changed default
+ value of decimals from -1 to 0 (NC135A now passes).
+
+2002-01-08 13:29 ferranp
+
+ * lib/general.c, lib/rterrors.c, lib/screenio.c,
+ test.code/Makefile.in, test.code/Readme.txt,
+ test.code/t34/Makefile, test.code/t34/aaaa.cob,
+ test.code/t34/bbbb.cob: Support for colors without color_set
+ (pdcurses/win32) Some support for chain on mingw32. Added CHAIN
+ examples.
+
+2002-01-08 09:49 whydoubt
+
+ * compiler/htcobgen.c, test_suite/nist/nist.rpt: Fixed a problem
+ with some negative literals in the compiler. Fixed a problem with
+ the BLANK WHEN ZERO code in the compiler, that had been causing
+ pseudo-random segmentation faults in the NIST suite.
+
+2002-01-07 04:21 dessex
+
+ * htconfig.h.in, htconfig.mingw.h, cobpp/Makefile.mingw,
+ compiler/Makefile.mingw, lib/Makefile.mingw, lib/htcoblib.h,
+ lib/rterrors.c, lib/strings.c: More Win32 (Mingw32) updates.
+ Removed min() function conflict found in Win32 (Mingw32).
+
+2002-01-05 08:57 dessex
+
+ * ChangeLog, INSTALL, INSTALL.Win32, INSTALL.bin, README,
+ Readme.mingw32.txt, STATUS, configure, configure.in, htconfig.h.in,
+ mwindows.h, cobpp/Makefile.0, cobpp/Makefile.in,
+ compiler/Makefile.0, compiler/Makefile.in, compiler/htcobol.c,
+ lib/Makefile.0, lib/Makefile.in, lib/general.c, lib/ltdl.c,
+ lib/ltdl.h, test.code/maktc.bat, test.code/config/COB.rules.in,
+ test.code/t04/Makefile, test_suite/cobol_test.pl,
+ test_suite/nist/Readme.txt: # More Win32 (Mingw32) updates. #
+ Added preliminary version of generic dynamic load code. # Updated
+ to ChangeLog and some documentation files.
+
+2002-01-01 16:48 whydoubt
+
+ * lib/: basicio.c, cobmove.c, dyncall.c, fileio.c, mcmath.c,
+ screenio.c, strings.c: Tightening the scope for several functions
+ in the library.
+
+2001-12-28 13:36 bgiroud
+
+ * compiler/htcobgen.c, compiler/scan.l, test_suite/test.baseline,
+ test_suite/nist/nist.rpt: More index corrections.
+
+2001-12-23 17:42 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, test_suite/nist/nc.idx,
+ test_suite/nist/nist.rpt, test_suite/search_tests/test20a.cob: More
+ corrections for indexes.
+
+2001-12-20 16:19 whydoubt
+
+ * lib/: basicio.c, screenio.c: Removed a couple of unnecesary case
+ checks on PIC strings. Compiler already makes certain they are
+ uppercase.
+
+2001-12-19 11:51 whydoubt
+
+ * lib/mcmath.c: Refining signedness changes to compare function.
+
+2001-12-19 04:12 bgiroud
+
+ * compiler/htcobgen.c, lib/htcoblib.h, lib/mcmath.c,
+ test_suite/nist/Makefile_nc, test_suite/nist/nc.idx,
+ test_suite/nist/nist.rpt: Further corrections for the NIST
+ programs.
+
+2001-12-19 02:38 whydoubt
+
+ * lib/: basicio.c, general.c, htcoblib.h, mcmath.c: Removed old
+ accept_env_var1 and accept_cmd_line1 functions. Refined pic
+ strings for generics.
+
+2001-12-17 16:31 ferranp
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/reswords.c, lib/general.c: Fixes for bugs from the
+ previous commit. Preliminary CHAIN statement.
+
+2001-12-15 10:08 ferranp
+
+ * lib/: rterrors.c, rterrors.h: New module on library to handle
+ runtime errors.
+
+2001-12-15 10:03 ferranp
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/reswords.c,
+ lib/Makefile.in, lib/screenio.c, lib/screenio.h: Some bugfixes and
+ cleanup. Preparing CHAIN statement.
+
+2001-12-14 05:07 bgiroud
+
+ * compiler/htcobgen.c, lib/mcmath.c, test_suite/nist/nist.rpt:
+ Modified generic pic string to always have a counted byte for the
+ sign.
+
+2001-12-14 03:41 bgiroud
+
+ * compiler/htcobgen.c, test_suite/nist.rpt,
+ test_suite/nist_prev.rpt, test_suite/nist/nc.idx,
+ test_suite/nist/nist.rpt, test_suite/nist/nist_prev.rpt,
+ test_suite/nist/xtr_rpt.sh: Another correction for NIST pgms
+ (getting indexed data in perform count). Further improvements in
+ NIST report tool.
+
+2001-12-13 23:22 whydoubt
+
+ * lib/strings.c: Cleaned up some pointer math in
+ cob_inspect_replacing and cob_inspect_tallying.
+
+2001-12-12 20:15 whydoubt
+
+ * lib/basicio.c: Documentation for accept_cmd_line and
+ accept_env_var.
+
+2001-12-12 18:30 whydoubt
+
+ * lib/pictures.c: Hopefully improved mc_picexpand's code.
+
+2001-12-12 17:57 whydoubt
+
+ * lib/: basicio.c, cobmove_9_.c, general.c, htcoblib.h, mcmath.c,
+ screenio.c: Corrected a subtle flaw in the logic of picCompLength.
+
+2001-12-12 15:50 whydoubt
+
+ * lib/: cobmove.c, cobmove_9_.c, cobmove_b_.c, cobmove_c_.c,
+ cobmove_f_.c, cobmove_x_.c, general.c, htcoblib.h, mcmath.c: Made
+ the cobmove functions more internally consistent. Improved the
+ handling of signedness and type conversions in the library.
+
+2001-12-12 00:58 dessex
+
+ * INSTALL.Win32, mwindows.h, compiler/htcoboly.h,
+ compiler/htglobals.c, lib/basicio.c, lib/general.c, lib/htcoblib.h,
+ lib/screenio.c, lib/strings.c: Update to Run-Time, main compiler
+ and PP code for Win32 support.
+
+2001-12-11 03:44 dessex
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htglobals.c: Updated
+ ChangeLog file. Update to main compiler code for Win32 support.
+ Both PP and compiler will now compile and run suing Mingw32.
+
+2001-12-10 14:29 dessex
+
+ * cobpp/tcppversion.h.in: Updated pre-processor with version file.
+
+2001-12-08 14:50 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ lib/mcmath.c, lib/screenio.c, test_suite/test.baseline,
+ test_suite/nist/Makefile, test_suite/nist/Makefile_nc,
+ test_suite/nist/Readme.txt, test_suite/nist/nc.idx,
+ test_suite/nist/nc_extr.pl, test_suite/nist/nist.rpt,
+ test_suite/nist/xtr_rpt.sh: Added tools to test NIST programs.
+ Modified usage of INDEX and long subscripts.
+
+2001-12-08 09:06 dessex
+
+ * cobpp/Makefile.0, compiler/Makefile.0, compiler/Makefile.in,
+ compiler/htcobgen.c, compiler/htcobol.c, compiler/htcoboly.h,
+ compiler/reswords.c, compiler/reswords.h, compiler/scan.l: Compiler
+ directory files update.
+
+2001-12-06 03:52 dessex
+
+ * test_suite/nist/: Makefile, mak.sh, nc_exec85.pl, nc_extr.pl:
+ Update to NIST test suite.
+
+2001-12-05 20:43 dessex
+
+ * mwindows.h, cobpp/cobpp.c, cobpp/test.code/Makefile: Update to
+ pre-processor code for Win32.
+
+2001-12-05 04:59 dessex
+
+ * compiler/: htcobgen.c, htglobals.c: Fix for renamed defines from
+ PGM_COMPILER to TCOB_PGM_COMPILER.
+
+2001-12-05 04:23 dessex
+
+ * Makefile.in, configure, configure.in, mwindows.h,
+ cobpp/Makefile.in, cobpp/cobpp.c, cobpp/cobpp.h,
+ cobpp/createver.sh, cobpp/scanner.l, compiler/createver.sh,
+ compiler/htglobals.c, compiler/htversion.h.in: Added some
+ preliminary native Win32 support for Mingw32. Updated
+ pre-processor code.
+
+2001-12-05 04:04 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/basicio.c, lib/cobmove.c, lib/htcoblib.h,
+ lib/mcmath.c, test_suite/nist.rpt, test_suite/nist_prev.rpt: Added
+ support for BLANK WHEN ZERO in compiler. Added GOBACK statement.
+ Corrected detection of pure numeric labels.
+
+2001-12-04 23:50 dessex
+
+ * configure, configure.in, compiler/htcoboly.h,
+ test.code/copybooks/Makefile.in, test_suite/nist/Makefile,
+ test_suite/nist/Readme.txt, test_suite/nist/make_pop_linux.txt,
+ test_suite/nist/nc_exec85.pl, test_suite/nist/nc_extr.pl: Set Bison
+ and -g compile option as defaults in configure script. Added
+ preliminary version of NIST test suite.
+
+2001-11-30 17:04 ferranp
+
+ * compiler/htcobgen.c, test.code/copybooks/screen.cpy: Permit
+ variable line/column/colors to be any kind of field. Some error
+ messages. Add screen.cpy to copybooks.
+
+2001-11-27 22:53 rpragana
+
+ * compiler/htcobol.y: Changed again REDEFINES to allow any order of
+ the clauses.
+
+2001-11-27 22:06 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Change in parser to allow (again)
+ REDEFINES to work.
+
+2001-11-26 19:23 whydoubt
+
+ * lib/mcmath.c: Improve behavior of fldtod and dtofld when dealing
+ with variables that have a separate sign and/or leading sign.
+
+2001-11-26 17:52 whydoubt
+
+ * lib/cobmove_9_.c: Changes to cob_move_9_* functions to correct a
+ bug when converting from a number where SIGN IS TRAILING SEPARATE.
+
+2001-11-26 16:10 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/basicio.c,
+ lib/cobmove_9_.c, lib/cobmove_b_.c, lib/cobmove_f_.c, lib/fileio.c,
+ lib/strings.c, test_suite/nist.rpt: Phase II of INITIAL. Clean-up
+ to avoid warnings with -O2.
+
+2001-11-23 04:40 bgiroud
+
+ * compiler/htcobol.y: Oops! Forgotten to remove trace.
+
+2001-11-23 04:33 bgiroud
+
+ * compiler/: htcobgen.c, htcobol.y: Increased max number of char in
+ picture (standard says 50).
+
+2001-11-21 03:57 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/fileio.c, lib/htcoblib.h,
+ test_suite/call_tests/ptest05.cob,
+ test_suite/call_tests/stest04.cob,
+ test_suite/call_tests/test.script: Phase I of INITIAL code.
+ Corrected PICTURE \n sequence bug in scan.l.
+
+2001-11-20 15:33 whydoubt
+
+ * lib/: cobmove_9_.c, cobmove_c_.c, mcmath.c: Should now always
+ produce and store correct COMP-3 data. Allow to read correct
+ COMP-3 data, as well as most incorrect COMP-3 data (formerly)
+ occasionally produced by TC.
+
+2001-11-19 17:19 ferranp
+
+ * cobpp/cobpp.c, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htglobals.c, compiler/scan.l, lib/screenio.c: Finish
+ screen section new features. Permit hexadecimal literals withe
+ x'..' (lowecase x). Add computational-x as computational (Not
+ standard but permited on some compilers). Permit path from
+ copifiles both with '\' or '/' as dir separator.
+
+2001-11-18 18:49 whydoubt
+
+ * lib/cobmove_c_.c: Removed inconsistent implementation of SIGN
+ SEPARATE with USAGE COMP-3.
+
+2001-11-16 06:44 bgiroud
+
+ * compiler/htcobgen.c: Removed WARNING issued when doing initial
+ values in REDEFINE'd groups.
+
+2001-11-15 14:59 ferranp
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/htcoblib.h, lib/screenio.c, lib/screenio.h,
+ test.code/t23/test23b.cob: Variable Line/Column on screen section
+ (Phase II) Variable colors and new clause 'color' on screen
+ section. Modifies test23b to show the new features.
+
+2001-11-14 04:07 bgiroud
+
+ * configure, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/general.c: Phase II of switches (SW1 to
+ SW9 only for the time beeing).
+
+2001-11-12 00:58 dessex
+
+ * compiler/htcobol.y: Updated FD entry with 'RECORD CONTAINS n
+ CHARACTERS' clause.
+
+2001-11-09 14:45 dessex
+
+ * configure, configure.in: Removed -O2 compile option from
+ configure script.
+
+2001-11-09 00:30 dessex
+
+ * cobpp/: scanner.l, test.code/Makefile, test.code/r.sh: Fixed
+ format continuation and (single and double) quote PP update.
+
+2001-11-06 17:52 dessex
+
+ * configure, configure.in: Configure option 'debug' bug fix.
+
+2001-11-05 16:05 ferranp
+
+ * test.code/t23/test23b.cob: An example file for variable
+ line/column on screen section.
+
+2001-11-05 15:54 ferranp
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test.code/t23/Makefile: Changes to support
+ variable line/column on screen section.
+
+2001-11-05 04:35 dessex
+
+ * cobpp/: parser.y, scanner.l, test.code/Makefile,
+ test.code/ft3.cob, test.code/r.sh, test.code/t3.cob: Updated PP
+ with REPLACE statement fix.
+
+2001-11-04 17:08 bgiroud
+
+ * cobpp/scanner.l, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l,
+ test_suite/call_tests/ptest04.cob: Phase II of switches. Correction
+ of the OFF keyword disappearing.
+
+2001-11-03 03:34 dessex
+
+ * configure, configure.in: Bug fix in configure script.
+
+2001-11-03 02:25 dessex
+
+ * configure, configure.in, lib/Makefile.in: Updated configure
+ script to handle multiple versions library DB and compilers.
+
+2001-10-31 10:15 dessex
+
+ * configure, configure.in, htconfig.0.h, htconfig.h.in,
+ lib/htcoblib.h: Added debug move-rts configure script option.
+
+2001-10-29 14:25 bgiroud
+
+ * compiler/htcobol.y, compiler/scan.l, lib/htcoblib.h,
+ test_suite/nist.rpt: Phase I of switches and alphabet.
+
+2001-10-29 14:19 dessex
+
+ * lib/screenio.c, utils/cobf2f/cobf2f.c, utils/cobf2f/cobf2f.h,
+ utils/cobf2f/scanner.l: Updated COPYRIGHT information for PP.
+ Updated screenio.c includes for Cygwin.
+
+2001-10-28 23:51 dessex
+
+ * ANNOUNCE, BUGS, COPYRIGHT, ChangeLog, TODO, configure,
+ configure.in, htconfig.0.h, tinycobol.lsm, cobpp/COPYRIGHT,
+ cobpp/cobpp.c, cobpp/cobpp.h, cobpp/parser.y, cobpp/scanner.l,
+ compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/htconfig.0.h, compiler/htglobals.c, compiler/htglobals.h,
+ compiler/scan.l, info/rpm/tinycobol-0.00.spec,
+ info/rpm/tinycobol.rpm4.spec, lib/basicio.c, lib/cobmove.c,
+ lib/cobmove_9_.c, lib/cobmove_b_.c, lib/cobmove_c_.c,
+ lib/cobmove_f_.c, lib/cobmove_x_.c, lib/dyncall.c, lib/fileio.c,
+ lib/general.c, lib/htcoblib.h, lib/mcmath.c, lib/pictures.c,
+ lib/screenio.c, lib/screenio.h, lib/strings.c,
+ test.code/Readme.txt, test.code/t23/test23a.cob: Updated COPYRIGHT
+ information. Updated ChangeLog and other changes relating to new
+ release. Updated the default htconfig.h file. Changed screen
+ status to CRT as per COBOL 200x draft.
+
+2001-10-26 04:56 bgiroud
+
+ * compiler/htcobol.y, compiler/scan.l, lib/cobmove_9_.c,
+ lib/mcmath.c, test_suite/nist.rpt: Further corrections to move and
+ math routines for NIST programs.
+
+2001-10-26 00:50 dessex
+
+ * AUTHORS, configure, configure.in, htconfig.h.in, lib/htcoblib.h,
+ lib/screenio.c, test.code/t00/teste.cob: Updated configure script
+ to handle multiple versions library DB.
+
+2001-10-24 03:16 bgiroud
+
+ * compiler/htcobgen.c, lib/cobmove_f_.c, lib/htcoblib.h,
+ lib/mcmath.c, test_suite/nist.rpt, test_suite/test.baseline:
+ Corrected behavior of multiple MULTIPLY ... BY. Added first NIST
+ report.
+
+2001-10-23 23:18 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/scan.l,
+ lib/screenio.c, lib/screenio.h, test.code/t23/Makefile,
+ test.code/t23/test23a.cob: Updated screen status and function keys
+ for screenIO. Patch submitted by Ferran Pegueroles.
+
+2001-10-23 18:29 dessex
+
+ * lib/: cobmove_9_.c, cobmove_b_.c, cobmove_c_.c, cobmove_f_.c:
+ More bug fixes in new MOVE Run-Time routines.
+
+2001-10-22 06:09 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/cobmove.c, lib/cobmove_9_.c, lib/cobmove_b_.c,
+ lib/cobmove_f_.c, lib/cobmove_x_.c, lib/htcoblib.h, lib/mcmath.c:
+ Several changes to better support P's in picture. Renamed
+ implied_zeros for pscale to better indicate the purpose.
+
+2001-10-21 12:25 dessex
+
+ * ChangeLog, lib/basicio.c, lib/cobmove.c, lib/cobmove_9_.c,
+ lib/cobmove_b_.c, lib/screenio.c: Bug fixes in new MOVE Run-Time
+ routines.
+
+2001-10-15 03:27 dessex
+
+ * compiler/htcobgen.c, compiler/htcoboly.h, info/Makefile.in,
+ lib/basicio.c, lib/cobmove_9_.c, lib/cobmove_b_.c,
+ lib/cobmove_c_.c, lib/cobmove_f_.c, lib/cobmove_x_.c,
+ lib/htcoblib.h, lib/mcmath.c, lib/screenio.c: Changed Run-Time Math
+ routines to truncate on an overflow condition when '[NOT] ON SIZE
+ ERROR' is not specified.
+
+2001-10-11 05:15 dessex
+
+ * lib/mcmath.c, test_suite/test.baseline,
+ test_suite/compile_tests/ctest01c.cob,
+ test_suite/compile_tests/test.script: Bug fix in math Run-Time.
+ Minor update in test_suite.
+
+2001-10-05 05:43 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ lib/cobmove.c, lib/cobmove_9_.c, lib/cobmove_x_.c, lib/htcoblib.h,
+ lib/mcmath.c: Corrected several bugs in the new cob_move_...
+ routines. Added one byte in the fld_desc struct to fully support
+ 'P' in pictures.
+
+2001-10-04 01:31 dessex
+
+ * ChangeLog, compiler/htcobol.y: Updated DEBUGGING MODE clause to
+ turn on stabs generation. Updated ChangeLog file.
+
+2001-10-02 01:03 jmnoeth
+
+ * lib/htcoblib.h: Changed the definitions for the cobmove routines
+ to reflect the broken out source code. Jim Noeth
+
+2001-10-02 01:03 jmnoeth
+
+ * lib/Makefile.in: Changed to reflect the changes made for the
+ cobmove routines.
+
+ Jim Noeth
+
+2001-10-02 00:51 jmnoeth
+
+ * lib/cobmove_c_.c: Split out from the oringinal cobmove.c. This
+ routine handles moves where the source field is of type packed
+ decimal.
+
+ Jim Noeth
+
+2001-10-02 00:51 jmnoeth
+
+ * lib/cobmove_9_.c: Split out from the origininal cobmove.c, this
+ source handles all moves where the source field is of type display.
+
+ Jim Noeth
+
+2001-10-02 00:51 jmnoeth
+
+ * lib/cobmove_x_.c: Split out from cobmove.c, this routine handles
+ moves where the source field is of type alphanumeric.
+
+ Jim Noeth
+
+2001-10-02 00:51 jmnoeth
+
+ * lib/cobmove_f_.c: Split out from cobmove.c, this routine handles
+ moves where the source field is of type floating point.
+
+ Jim Noeth
+
+2001-10-02 00:51 jmnoeth
+
+ * lib/cobmove.c: Changed to split out the various source field
+ types into source files of the format cobmove_?_.c, where ? is '9',
+ 'b', 'c', 'f', 'x' for display, binary, packed decimal, floating
+ point and character.
+
+ Also added logic to handle leading and trailing signs.
+
+2001-10-02 00:51 jmnoeth
+
+ * lib/cobmove_b_.c: Split out from the original cobmove routine,
+ this source code handles moves where the source field is of type
+ binary (comp).
+
+ Jim Noeth
+
+2001-09-21 08:42 dessex
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h, scan.l: Bug fix for
+ variables error detect. Updated grammar to handle multi-line
+ IDENTIFICATION division clauses. Updated grammar to properly
+ handle the SOURCE/OBJECT COMPUTER clauses.
+
+2001-09-21 02:51 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/mcmath.c: Replaced the OSE subroutines calls
+ by jumps to allow GO TO in them. Also, the rounding is now done
+ before the overflow checking.
+
+2001-09-17 17:30 dessex
+
+ * compiler/: htcobgen.c, htcobol.y, scan.l: Bug fix for file
+ variables error detect.
+
+2001-08-18 04:54 knishida
+
+ * compiler/htcobgen.c: Use push_immed where appropriate.
+
+2001-08-18 04:48 knishida
+
+ * info/Makefile.in: Don't ask overwriting.
+
+2001-08-18 04:32 knishida
+
+ * compiler/htcobgen.c: Remove unnecessary declarations.
+
+2001-08-17 21:07 knishida
+
+ * compiler/htglobals.c: Initialize global variables.
+
+2001-08-17 05:38 knishida
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h, htglobals.c,
+ htglobals.h, scan.l: Put original source file names and lines in
+ debugging stabs. The compiler no longer holds temporary
+ preprocessed files after compilation.
+
+2001-08-17 03:10 knishida
+
+ * compiler/: htcoboly.h, htglobals.c, scan.l: Allocate the copy
+ file stack dynamically. Remove global variable
+ include_full_filename.
+
+2001-08-14 19:57 knishida
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Fixed a
+ reduce/reduce conflict in READ statement.
+
+2001-08-11 21:09 dessex
+
+ * ChangeLog, configure, configure.in, cobpp/Makefile.0,
+ compiler/Makefile.0, compiler/htcobgen.c: Updated reference
+ listings to handle long qualified variable names. Added default
+ Makefile for cobpp directory. Updated ChangeLog.
+
+2001-08-11 17:44 knishida
+
+ * compiler/htcobgen.c: (spe_sy_x, spe_sy_9): Removed. Use
+ spe_sym_XX instead. (gen_init_str): Use gen_move for
+ initialization.
+
+2001-08-11 15:12 knishida
+
+ * compiler/: htcobgen.c, htcoboly.h: (gen_init_str): Take only
+ three arguments. (memref, memrefat, memrefd): Take only one
+ argument. (MEMREF, MEMREFAT, MEMREFD): Removed. (memref2):
+ Removed. Use memref.
+
+2001-08-10 19:25 dessex
+
+ * INSTALL, configure, configure.in, cobpp/Makefile.in,
+ cobpp/test.code/Makefile, compiler/Makefile.in, compiler/htcobol.y,
+ test.code/ReportGen/report.cob, test.code/t06/index01.cob,
+ test.code/t09/move-test.cob, test.code/t09/subscripts.cob,
+ test.code/t09/upro.cob, test.code/t09/var+perform.cob,
+ test.code/tdb02/tdb02.cob, test.code/tdb03/tdb03.cob,
+ test.code/tgui01/testgui01.cob, test.code/tgui01/testgui04.cob:
+ Updated configure script and Makefile.in files to handle Bison.
+ Removed REMARKS from test.code programs.
+
+2001-08-08 15:30 knishida
+
+ * compiler/htglobals.c: New function init_env. Clean up
+ environment variables initialization.
+
+2001-08-08 14:29 knishida
+
+ * compiler/htglobals.c: Remove turn_off_list_mode,
+ turn_on_list_mode, turn_off_xref, and turn_on_xref. Set global
+ variables directly.
+
+2001-08-08 14:21 knishida
+
+ * compiler/: htglobals.c, htglobals.h: Define global variables in
+ htglobals.c, not in htglobals.h. Include htcoboly.h in
+ htglobals.c. Remove unnecessary external declarations.
+
+2001-08-08 14:17 knishida
+
+ * compiler/htcoboly.h: Put `extern' in declarations.
+
+2001-08-06 16:41 knishida
+
+ * cobpp/parser.y, compiler/htcobol.y: Allow compilation with using
+ Bison.
+
+2001-08-06 16:31 knishida
+
+ * compiler/scan.l: Count "# ..." lines as real lines.
+
+2001-07-24 08:19 dessex
+
+ * configure, configure.in, compiler/htcobol.y: Configure script
+ update, to handle yacc193. Updated grammar to handle DISPLAY ...
+ LINE/COLUMN clause.
+
+2001-07-23 17:33 bgiroud
+
+ * lib/fileio.c: Forgotten the trace.
+
+2001-07-23 17:15 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/fileio.c,
+ lib/mcmath.c, test_suite/seqio_tests/seqio07.cob,
+ test_suite/seqio_tests/seqio08.cob: Corrected a few bugs regarding
+ moves and compares. Added 2 programs for SELECT OPTIONAL clause.
+
+2001-07-22 09:16 dessex
+
+ * compiler/: htcobol.y, scan.l: Updated DISPLAY ... ERASE clause.
+
+2001-07-22 07:08 dessex
+
+ * compiler/: htcobol.y, htcoboly.h, htglobals.c, scan.l: Updated
+ preprocessor spawn exit status to ensure job abort on error.
+ Updated scanner parser for SD entry and SORT ... INPUT/OUTPUT
+ clauses. Changed scanner parser for OPEN mode clauses, to use
+ seperate tokens.
+
+2001-07-21 19:18 dessex
+
+ * compiler/htcobol.y, test.code/t09/test09.cob,
+ test.code/t14/test14a.cob, test.code/t14/test14b.cob,
+ test.code/t14/test14c.cob, test.code/t14/test14d.cob,
+ test.code/t15/test15.cob, test.code/t15/test15a.cob,
+ test.code/t15/test15e.cob, test.code/t15/test15i.cob,
+ test.code/t15/test15j.cob, test.code/t20/Makefile,
+ test.code/tdb01/tdb01.c, test.code/tdb01/tdb01a.cob: Removed milti
+ line statements for ID, in test programs. Bug fix for line number
+ error reporting.
+
+2001-07-21 08:27 dessex
+
+ * compiler/htcobgen.c, compiler/htcoboly.h, test.code/t06/Makefile,
+ test.code/t07/Makefile, test.code/t12/Makefile,
+ test.code/t18/Makefile: Changed xrefrence listing to use qsort
+ function.
+
+2001-07-20 14:08 rpragana
+
+ * ChangeLog, lib/mcmath.c: Temporary work-around for
+ cob_check_numeric, as refmoded variables have a NULL picture.
+ (Refmods should come with a valid picture.)
+
+2001-07-20 08:13 dessex
+
+ * cobpp/scanner.l, compiler/htcobgen.c: Added sort to cross
+ refrence listing. Changed PP listing line multiplier to 1.
+
+2001-07-19 08:32 dessex
+
+ * compiler/htcobgen.c, compiler/htcoboly.h, compiler/scan.l,
+ utils/cobf2f/cobf2f.h: Added variable cross refrence listing
+ report.
+
+2001-07-18 20:57 knishida
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Allow ROUNDED
+ option in ADD/SUBTRACT CORR ... statements.
+
+2001-07-18 20:41 whydoubt
+
+ * lib/: basicio.c, screenio.c: Some small additions to fix a couple
+ breaks caused by the recent changes to the fld_desc structure.
+
+2001-07-18 20:32 knishida
+
+ * compiler/htcobol.y: Set HTG_RETURN_CODE in the default case in
+ yyerror.
+
+2001-07-17 00:35 dessex
+
+ * compiler/htcobol.y: Updated parser error print routines.
+
+2001-07-16 19:13 knishida
+
+ * lib/screenio.c: Remove unused variables _iDefAttr_ and _iDefPair_
+ from cob_accept_screen().
+
+2001-07-16 19:05 knishida
+
+ * compiler/scan.l: Removed unnecessary variable `is'.
+
+2001-07-16 01:51 dessex
+
+ * Makefile.in, configure, configure.in, info/Makefile.in,
+ info/rpm/tinycobol-0.00.spec, info/rpm/tinycobol.rpm4.spec: Added
+ RPM4 spec file, and man install makefiles.
+
+2001-07-16 00:34 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/cobmove.c, lib/fileio.c, lib/htcoblib.h,
+ lib/mcmath.c, test_suite/cobol_test.pl, test_suite/test.baseline,
+ test_suite/perform_tests/perf04.cob,
+ test_suite/seqio_tests/test.script: Added support for OPTIONAL
+ files. Corrected get_index when negative. Updated test suite.
+
+2001-07-15 17:34 dessex
+
+ * AUTHORS, configure, configure.in, htconfig.h.in, cobpp/cobpp.c,
+ cobpp/parser.y, cobpp/test.code/r.sh, compiler/htcobgen.c,
+ compiler/htcobol.y, compiler/scan.l: Updated FD entry with 'BLOCK
+ contains' and 'DATA record' clauses. Added more debug options to
+ the configure script.
+
+2001-07-13 10:12 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Adjusted field length for
+ SEPARATE SIGN.
+
+2001-07-12 00:31 dessex
+
+ * ANNOUNCE, AUTHORS, INSTALL.Win32, Readme.cygwin.txt, STATUS,
+ configure, configure.in, tinycobol.dsc, tinycobol.lsm: Version 0.54
+ update.
+
+2001-07-12 00:31 dessex
+
+ * compiler/htcobgen.c: Release 0.54 update.
+
+2001-07-10 23:26 dessex
+
+ * info/: debian/README.Debian, debian/changelog, debian/copyright,
+ debian/rules, rpm/tinycobol-0.00.spec: Release 0.54 update.
+
+2001-07-09 01:42 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/mcmath.c: Updated READ statement with full
+ '[NOT] AT END' clauses. Removed RETURN statements and NEXT,
+ PREVIOUS clauses from READ statement. Added full RETURN statement
+ syntax to grammar. Removed duplicate 'binFldSize' function from
+ run-time.
+
+2001-07-06 17:35 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test_suite/perform_tests/perf04.cob,
+ test_suite/perform_tests/test.script: Added check of loop counter
+ for PERFORM gname TIMES.
+
+2001-07-04 01:51 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcoboly.h, compiler/scan.l,
+ lib/fileio.c: Corrected spurious FS error in cob_write_adv.
+ Cleaned up a bit init code. Added first draft of table of
+ intrinsics.
+
+2001-07-04 00:12 rpragana
+
+ * ChangeLog, lib/mcmath.c: Fixed bug with the new struct fld_desc
+ members.
+
+2001-07-03 11:42 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/htcoblib.h: Added syntax for [SIGN IS]
+ {LEADING/TRAILING} [SEPARATE] in variable definition.
+
+2001-07-03 05:07 knishida
+
+ * test_suite/search_tests/test20a.cob: New test for multiple WHEN
+ clauses.
+
+2001-06-29 04:15 knishida
+
+ * compiler/htcobol.y: Allow CONTINUE in search_when_statement.
+
+2001-06-28 11:08 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test.code/ReportGen/report.cob,
+ test.code/t25/test25.cob, test.code/t25/test25a.cob: Removed bug
+ with GO TO inside EVALUATE statement. (Thanks David Essex for
+ pointing a solution)
+
+2001-06-28 00:38 whydoubt
+
+ * lib/screenio.c: Correct a small bug in accept_curses in
+ lib/screenio.c.
+
+2001-06-28 00:26 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Fixes for field_description
+ parsing and redefines. (Thanks Keisuke Nishida for reporting that)
+
+2001-06-27 22:25 knishida
+
+ * compiler/htcobol.y: Allow multiple statements in
+ search_opt_at_end.
+
+2001-06-27 19:53 knishida
+
+ * lib/dyncall.c: (cob_resolve_subr): Remove unnecessary spaces from
+ subroutine name.
+
+2001-06-27 18:29 knishida
+
+ * compiler/htcobol.y: Recover from errors by `.' at
+ `procedure_decl', not at `statement'.
+
+2001-06-27 17:23 knishida
+
+ * compiler/htcobol.y: Allow multiple WHEN clauses in SEARCH.
+
+2001-06-27 00:41 knishida
+
+ * compiler/htcobol.y: [no log message]
+
+2001-06-27 00:17 knishida
+
+ * compiler/htcobol.y: Bug fix again.. Accept SUBSCVAR in
+ redefines_clause.
+
+2001-06-27 00:13 knishida
+
+ * test_suite/format_tests/test06a.cob: Test for redefines of occurs
+ tables.
+
+2001-06-26 23:43 knishida
+
+ * compiler/htcobol.y: Use unqualified_var instead of variable in
+ redefines_clause.
+
+2001-06-26 23:19 knishida
+
+ * compiler/htcobol.y: Support [NOT] INVALID KEY clauses correctly
+ in READ statements.
+
+2001-06-26 22:31 knishida
+
+ * compiler/htcobol.y: Allow conditional statements (i.e., CONTINUE,
+ etc.) in WHEN cases.
+
+2001-06-26 22:08 knishida
+
+ * compiler/htcobol.y: Use `variable' instead of `VARIABLE' in
+ redefines_clause.
+
+2001-06-26 21:04 knishida
+
+ * compiler/htcobol.y: Exit/stop-run statements clean up.
+
+2001-06-26 20:59 knishida
+
+ * compiler/htcobol.y: Go to statement clean up.
+
+2001-06-26 20:00 knishida
+
+ * compiler/htcobol.y: Delete/start statements clean up.
+
+2001-06-26 19:52 knishida
+
+ * compiler/htcobol.y: Rewrite statement clean up.
+
+2001-06-26 19:40 knishida
+
+ * compiler/htcobol.y: Write statement clean up.
+
+2001-06-26 19:36 knishida
+
+ * compiler/htcobol.y: Read statement clean up.
+
+2001-06-26 19:17 knishida
+
+ * compiler/htcobol.y: Move statement clean up.
+
+2001-06-26 19:14 knishida
+
+ * compiler/htcobol.y: Compute/add/subtract statements clean up.
+
+2001-06-26 19:03 knishida
+
+ * compiler/htcobol.y: Multiply statement clean up.
+
+2001-06-26 18:57 knishida
+
+ * compiler/htcobol.y: Devide statement clean up. New function
+ `assert_numeric_sy'.
+
+2001-06-26 18:36 knishida
+
+ * compiler/htcobol.y: Accept statement clean up.
+
+2001-06-26 18:14 knishida
+
+ * compiler/htcobol.y: Display statement clean up.
+
+2001-06-26 18:01 knishida
+
+ * compiler/htcobol.y: Close statement clean up.
+
+2001-06-26 17:58 knishida
+
+ * compiler/htcobol.y: Open statement clean up.
+
+2001-06-26 16:47 dessex
+
+ * cobpp/cobpp.c, cobpp/scanner.l, compiler/htcobgen.c,
+ compiler/htcobol.y, compiler/htglobals.c, compiler/htglobals.h,
+ compiler/scan.l, test.code/t07/Makefile, test.code/t29/Makefile,
+ test.code/t33/Makefile, test_suite/compile_tests/ctest03.cob: Added
+ modified version of Keisuke Nishida's line directives patch.
+ Updated regression test for minimum division/statement
+ requirements.
+
+2001-06-26 14:40 knishida
+
+ * compiler/: scan.l, htcobol.y, htcoboly.h: Break up the old
+ CONNECTIVE token into several distinct tokens.
+
+2001-06-25 23:30 rpragana
+
+ * compiler/: htcobol.y, htcoboly.h: Removed reduce/reduce conflict
+ and updates of function prototypes in htcoboly.h.
+
+2001-06-25 16:51 knishida
+
+ * compiler/htcobgen.c: Simplify push_selection_subject_copy.
+
+2001-06-25 16:41 knishida
+
+ * compiler/htcobgen.c: Integrated subject_stack_size into
+ push_selection_subject_copy.
+
+2001-06-24 11:38 bgiroud
+
+ * compiler/htcobgen.c: Corrected a bug in value_to_eax introduced
+ by cleanup warnings.
+
+2001-06-22 05:26 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/cobmove.c,
+ lib/mcmath.c, test_suite/cobol_test.pl, test_suite/test.baseline,
+ test_suite/condition_tests/cond01.cob,
+ test_suite/format_tests/test05a.cob: Added a routine to do
+ comparison of strings when all flag used. Suppressed special
+ all_literals. Cleaned-up the test suite.
+
+2001-06-21 15:52 knishida
+
+ * compiler/htcobol.y: Clarified INVALID KEY sentences.
+
+2001-06-21 14:49 knishida
+
+ * compiler/htcobol.y: KEY is optional in read_clauses.
+
+2001-06-21 14:49 knishida
+
+ * compiler/htcobol.y: Allows multiple read clauses.
+
+2001-06-21 14:35 knishida
+
+ * compiler/htcobol.y: Use `opt_at' in read_clauses.
+
+2001-06-21 08:32 knishida
+
+ * compiler/htglobals.c: Use remove() instead of system("rm ...").
+
+2001-06-21 05:15 knishida
+
+ * cobpp/scanner.l: New macros DEBUG_RTN and DEBUG_RTN_NL. Replaced
+ regular calls to debug_rtn by them.
+
+2001-06-21 01:45 dessex
+
+ * compiler/htglobals.h, test_suite/compile_tests/ctestws06.cob,
+ test_suite/compile_tests/test.script: Removed compiler warning from
+ htglobals.c. Added compile test to regression test suite for
+ floating point types.
+
+2001-06-21 00:00 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcoboly.h,
+ compiler/htglobals.h: Removed all warnings when compiling htcobol.
+
+2001-06-20 23:10 dessex
+
+ * cobpp/Makefile.in, cobpp/cobpp.c, cobpp/cobpp.h, cobpp/scanner.l,
+ compiler/Makefile.in, compiler/htglobals.c: Removed most of '-Wall'
+ flag warnings. Removed '-Wall' flag from Makefiles for scanner and
+ parser generated code.
+
+2001-06-20 21:11 andrewcza
+
+ * lib/fileio.c:
+ Fix a problem where Indexed IO was not returning a status 23 for
+ key not found.
+
+2001-06-20 19:54 dessex
+
+ * cobpp/Makefile.in, compiler/Makefile.in, compiler/htcobgen.c,
+ compiler/htcobol.y, compiler/htcoboly.h, compiler/scan.l,
+ test_suite/call_tests/ptest01.cob,
+ test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/ptest03.cob,
+ test_suite/call_tests/ptest04.cob,
+ test_suite/call_tests/stest01.cob,
+ test_suite/call_tests/stest02.cob,
+ test_suite/call_tests/stest03.cob,
+ test_suite/compile_tests/ctest01a.cob,
+ test_suite/compile_tests/ctest01b.cob,
+ test_suite/compile_tests/ctest01c.cob,
+ test_suite/compile_tests/ctest01d.cob,
+ test_suite/compile_tests/ctest01e.cob,
+ test_suite/compile_tests/ctest04.cob,
+ test_suite/compile_tests/ctest05.cob,
+ test_suite/compile_tests/ctested01.cob,
+ test_suite/compile_tests/ctested02.cob,
+ test_suite/compile_tests/ctested03.cob,
+ test_suite/compile_tests/ctested04.cob,
+ test_suite/compile_tests/ctested05.cob,
+ test_suite/compile_tests/ctested06.cob,
+ test_suite/compile_tests/ctestfc01.cob,
+ test_suite/compile_tests/ctestfc02.cob,
+ test_suite/compile_tests/ctestp-open1.cob: Changed scanner/parser
+ logic for DIVISIONs to ANS COBOL 85 standard. Added '-Wall' flag
+ to Makefiles.
+
+2001-06-20 17:55 whydoubt
+
+ * lib/mcmath.c: Removed a line I meant for testing only
+
+2001-06-20 17:55 whydoubt
+
+ * lib/mcmath.c: A little touch-up to lib/mcmath.c
+
+2001-06-19 02:45 dessex
+
+ * lib/mcmath.c: Bug fix in RTS math routines to handle COMP
+ (binary) types sizes.
+
+2001-06-18 22:03 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Removed bug with subscript
+ manipulations. (Thanks Alan-eurlix for reporting)
+
+2001-06-18 16:06 dessex
+
+ * compiler/htcobol.y, lib/basicio.c, lib/cobmove.c, lib/htcoblib.h,
+ test_suite/Makefile: Updated RTS move routines to handle COMP-1/2
+ floating point types.
+
+2001-06-18 06:24 knishida
+
+ * compiler/scan.l: Changed "END-STRINGCMD" to "END-STRING".
+
+2001-06-14 06:07 knishida
+
+ * compiler/htcobgen.c: Fixed a bug in gen_subscripted() that
+ overwrote %eax.
+
+2001-06-14 00:59 dessex
+
+ * compiler/htcobol.y, compiler/scan.l, lib/cobmove.c: Added support
+ for FLOAT-LONG (COMP-2), FLOAT-SHORT (COMP-1) floating point types.
+ Updated RTS relating to COMP-1/2 floating point types.
+
+2001-06-13 01:27 rpragana
+
+ * ChangeLog, test.code/tdb01/Makefile, test.code/tdb01/tdb01.c,
+ test.code/tdb01/tdb01a.cob: Test for libdb with multiple indexes
+ and separate data/index files.
+
+2001-06-11 18:37 whydoubt
+
+ * lib/: fileio.c, strings.c: ... cleaning ... restructuring ...
+
+2001-06-11 04:53 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Fixed bug with performing a full
+ section, inserting gen_exit(0) at the end of each section. (Thanks
+ Keisuke for reporting this!)
+
+2001-06-10 12:59 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, lib/strings.c: Added
+ INSPECT...CONVERTING statement parsing/codegen (as requested by
+ Mariusz).
+
+2001-06-08 17:12 dessex
+
+ * cobpp/scanner.l, compiler/htcobol.y: Pre-processor bug fix curtsy
+ of Keisuke Nishida.
+
+2001-06-06 22:13 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Patch to allow WHEN ... ALSO ANY
+ in evaluate statement. Thanks Keisuke Nishida for the contribution.
+
+2001-06-06 19:22 whydoubt
+
+ * lib/: basicio.c, dyncall.c, general.c, screenio.c: More cleaning
+ and restructuring...
+
+2001-06-06 08:23 dessex
+
+ * lib/cobmove.c: Preliminary move routines from/to COMP-1/2
+ floating point types.
+
+2001-06-05 13:23 dessex
+
+ * compiler/htcobgen.c, compiler/htcoboly.h,
+ info/rpm/tinycobol-0.00.spec, lib/general.c,
+ test.code/copybooks/Makefile.in: Updates relating to COMP-1/2
+ floating point types.
+
+2001-06-05 09:13 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Quick fix in init_field_val() to
+ not initialize variables with a NULL sy->value. (eg: PROCEDURE
+ DIVISION USING ... variables )
+
+2001-06-05 07:15 andrewcza
+
+ * lib/fileio.c:
+ Change fileio.c to correctly return file status 22 for duplicate
+ keys.
+
+2001-06-04 20:25 whydoubt
+
+ * lib/cobmove.c: Numerous little clean-ups, primarily to cob_move.
+
+2001-06-02 13:13 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Removed bug with sch_convert(), a
+ function to truncate large literal strings in comments _only_! (it
+ was corrupting the actual string)
+
+2001-05-30 18:56 andrewcza
+
+ * lib/fileio.c:
+ Fix fileio.c so that OPEN EXTEND works correctly.
+
+2001-05-30 18:09 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Bug fix for picture length
+ calculation of large literals.
+
+2001-05-29 23:15 andrewcza
+
+ * lib/fileio.c:
+ Fix Cob Write to make sure that the primary key is Unique and not
+ overwritten.
+
+2001-05-29 09:46 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Small change to allow LINKAGE
+ SECTION variables in the main program.
+
+2001-05-29 09:11 dessex
+
+ * Readme.cygwin.txt, STATUS, info/Compiler-Overview.txt,
+ info/rpm/tinycobol-0.00.spec: Updates to relating to version 0.53
+ release.
+
+2001-05-29 01:21 dessex
+
+ * ANNOUNCE, INSTALL.Win32, Makefile.in, STATUS, configure,
+ configure.in, tinycobol.dsc, tinycobol.lsm, info/htcobf2f.man,
+ info/htcobol.man, info/rpm/tinycobol-0.00.spec,
+ test_suite/compile_tests/test.script: Updates to relating to
+ version 0.53 release.
+
+2001-05-28 16:54 bgiroud
+
+ * compiler/htcobgen.c: Changed refmod's attribute to 'G' so that
+ RTL doesn't crash in looking at pictures. Also, changed the
+ initialization of display vars to ALL ZERO.
+
+2001-05-28 13:50 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Fixes for
+ pictures with currency symbol.
+
+2001-05-28 07:25 dessex
+
+ * compiler/htcobol.y, lib/cobmove.c, lib/general.c, lib/htcoblib.h,
+ lib/mcmath.c, test_suite/cobol_test.pl: Updates to math run-time
+ and regression test script.
+
+2001-05-27 11:24 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/mcmath.c: More
+ updates to COMP-1/2 floating point types.
+
+2001-05-27 08:11 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y, lib/mcmath.c:
+ Several changes to accomodate COMP-1/-2 types, complementing what
+ David Essex have done.
+
+2001-05-26 23:35 dessex
+
+ * cobpp/scanner.l, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, info/Compiler-Overview.txt,
+ lib/cobmove.c, lib/htcoblib.h, lib/mcmath.c: Updates to COMP-1/2
+ floating point types.
+
+2001-05-26 19:54 rpragana
+
+ * ChangeLog, test_suite/cobol_test.pl: Remove -t switch from
+ test_suite perl script (as it was eliminated from the compiler).
+
+2001-05-26 02:50 whydoubt
+
+ * lib/basicio.c: Changed accept_time, adding two characters for
+ hundredths of a second, so that the ACCEPT FROM TIME call meets
+ standards. The characters are simply being set to zeroes, but this
+ is acceptable by the standards.
+
+2001-05-26 02:01 whydoubt
+
+ * lib/: basicio.c, cobmove.c, mcmath.c, strings.c: A little
+ cleaning and straightening, mainly to lib/basicio.c and
+ lib/cobmove.c.
+
+2001-05-24 22:41 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/scan.l: Better error
+ reporting and removed core dump in large tokens detection.
+
+2001-05-24 21:54 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/scan.l,
+ utils/htcobviscomp.tcl: Fixed serious buffer overflow in scanning
+ literals. Changes in viscomp.tcl to use temp.XXXX.cob preprocessed
+ source, instead of original.
+
+2001-05-24 08:11 dessex
+
+ * compiler/htcobol.y, compiler/htcoboly.h, compiler/htglobals.c,
+ compiler/scan.l, lib/pictures.c: Added COMP-1 (float 4 bytes) and
+ COMP-2 (double 8 bytes) floating point types (preliminary).
+
+2001-05-24 02:57 whydoubt
+
+ * lib/: mcmath.c, pictures.c, strings.c: Extensive changes in
+ lib/mcmath.c and started documenting. Changes include reducing use
+ of global variables and 'pointer math'. Also simplified a number
+ of if else and other structures. Everthing should still work the
+ same as before.
+
+2001-05-22 09:03 dessex
+
+ * compiler/htcobol.y, lib/fileio.c, lib/htcoblib.h,
+ test.code/t19/Readme.txt, test.code/t19/test19.cob,
+ test.code/t19/test19b.cob: Added the EXTERNAL clause in the SELECT
+ statement.
+
+2001-05-22 01:36 dessex
+
+ * AUTHORS, Makefile.in, compiler/Makefile.in, compiler/htcobgen.c,
+ compiler/htcobol.y, compiler/htcoboly.h, compiler/htglobals.c,
+ compiler/htglobals.h, compiler/scan.l, lib/basicio.c,
+ lib/dyncall.c, lib/htcoblib.h, test.code/mak.sh,
+ test.code/t17/Readme.txt, test.code/t17/test17.cob: Updated ACCEPT
+ statement and Run-Time for command line and environment variables.
+
+2001-05-17 01:42 whydoubt
+
+ * lib/mcmath.c: A small bit of straightening up the code in
+ lib/mcmath.c.
+
+2001-05-15 20:36 whydoubt
+
+ * lib/mcmath.c: Removing some more stuff left over connected with
+ the cob_list structure.
+
+2001-05-15 15:29 whydoubt
+
+ * lib/mcmath.c: Several small changes (none affecting operation) in
+ lib/mcmath.c. Primary reason: to remove cob_list related code,
+ which is not being used.
+
+2001-05-15 14:20 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Changed to store all characters
+ in picture converted to uppercase.
+
+2001-05-15 01:54 bgiroud
+
+ * compiler/htcobgen.c, test.code/t10/test10.cob: Corrected yet
+ another bug in INITIALIZE code.
+
+2001-05-15 01:07 whydoubt
+
+ * lib/: basicio.c, cobmove.c, dyncall.c, fileio.c, general.c,
+ mcmath.c, pictures.c, screenio.c, strings.c: Adding comment section
+ before each library function in anticipation of documentation.
+ Also helps readability. No operational changes.
+
+2001-05-14 22:52 whydoubt
+
+ * compiler/htcobgen.c, lib/Makefile.0, lib/Makefile.in: Simple
+ reduction in make process for shared version of library.
+
+2001-05-14 21:49 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Added implementations of ADD
+ CORR and SUBTRACT CORR.
+
+2001-05-14 01:01 rpragana
+
+ * lib/: basicio.c, cobmove.c, screenio.c: Fixes for displaying
+ variables with 'P's in the picture.
+
+2001-05-13 20:19 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Fixed bug with gen_subscripted()
+ (index/subscripting generation).
+
+2001-05-13 15:37 rpragana
+
+ * compiler/htcobol.y, lib/screenio.c: Added options ERASE SCREEN,
+ ERASE LINE, to DISPLAY (curses version, with LINE...POSITION...).
+ As requested by Harold Norris.
+
+2001-05-13 14:50 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Fixed trouble with symlen()
+ calculation for literals.
+
+2001-05-13 01:19 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, lib/basicio.c,
+ test.code/t29/Makefile: Fixed a problem with addressing at the
+ linkage section. Also re-fixed "display" library function (my
+ previous fix disapeared!).
+
+2001-05-13 00:04 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Bug fixes
+ with REDEFINES. Changed length of default POINTER picture.
+
+2001-05-12 23:40 dessex
+
+ * lib/: basicio.c, dyncall.c: Cleaned code in Run-Time library.
+
+2001-05-12 22:36 dessex
+
+ * Makefile.0, Makefile.in, configure, configure.in,
+ compiler/Makefile.0, compiler/Makefile.in, compiler/htglobals.c,
+ compiler/htversion.h.in, lib/Makefile.0, lib/Makefile.in,
+ lib/basicio.c, lib/dyncall.c, test.code/t01/Makefile,
+ test.code/t07/Makefile, test.code/t16/Makefile,
+ test.code/t17/Makefile, test.code/t24/Makefile,
+ test.code/t28/Makefile, test.code/t32/Makefile,
+ test.code/t33/Makefile, test.code/t33/Readme.txt,
+ test.code/t33/rt.sh: Added version to configure script. Separated
+ dynamic CALL from primary Run-Time into second library.
+
+2001-05-12 19:18 dessex
+
+ * tinycobol.dsc: Added Debian description file.
+
+2001-05-12 19:08 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, lib/basicio.c, lib/cobmove.c,
+ lib/mcmath.c: Added types BINARY-CHAR, BINARY-SHORT, BINARY-LONG
+ and BINARY-DOUBLE. They are distinct from COMP types.
+
+2001-05-12 17:53 dessex
+
+ * info/debian/: README.Debian, changelog, control, copyright,
+ cron.d.ex, dirs, docs, emacsen-install.ex, emacsen-remove.ex,
+ emacsen-startup.ex, ex.doc-base.package, init.d.ex, manpage.1.ex,
+ menu.ex, postinst.ex, postrm.ex, preinst.ex, prerm.ex, rules,
+ watch.ex: Added Debian scripts and information files.
+
+2001-05-12 01:13 rpragana
+
+ * compiler/htcobgen.c: Eliminated a few bugs with linkage section
+ variables address computations.
+
+2001-05-11 23:01 rpragana
+
+ * lib/strings.c: More bug fixes for UNSTRING statement.
+
+2001-05-11 21:39 rpragana
+
+ * ChangeLog, lib/strings.c: Fixed bug with pointer in unstring.
+
+2001-05-11 21:27 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test.code/t00/teste.cob: Fixed bug with
+ variables that would need qualification.
+
+2001-05-11 17:21 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y,
+ test_suite/test.baseline, test_suite/format_tests/test05a.cob,
+ test_suite/format_tests/test05b.cob,
+ test_suite/idxio_tests/idxio03.cob: Differentiate between Fig.
+ Const. and ALL Fig. Const.
+
+2001-05-11 10:19 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l: Added statements fo prototyping new statements
+ under TC. Small fix with stabs.
+
+2001-05-10 17:49 rpragana
+
+ * compiler/htcobgen.c, test.code/t07/Makefile: More changes to
+ allow us to refer to another source file (gdb) as in: (gdb) b
+ temp.010154.cobsub.cob:36 to setup a breakpoint in line 36 of that
+ cobol file. It would be far more interesting if the preprocessor
+ made its output sources like "cobsub.cb1" for instance.
+
+2001-05-10 15:49 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l, test.code/t01/Makefile, test.code/t07/Makefile:
+ Changes to allow a better interface with gdb. Introduced a TOKDUMMY
+ to mark the end of each statement (read comments in htocobl.y).
+
+2001-05-10 00:49 rpragana
+
+ * compiler/htcobgen.c: Modifications to allow gdb work with cobol
+ compiled programs.
+
+2001-05-09 23:01 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t16/Makefile: Made optional the ON in "GO TO DEPENDING
+ ON". Other small fixes.
+
+2001-05-09 10:23 rpragana
+
+ * ChangeLog, lib/screenio.c, test.code/t24/Makefile,
+ test.code/t28/Makefile, test.code/t32/Makefile,
+ test.code/t33/rt.sh: Changes in accept_curses() (RM/Cobol
+ compatible version), for justifying right.
+
+2001-05-09 00:44 dessex
+
+ * lib/basicio.c, test.code/t33/Makefile, test.code/t33/Readme.txt,
+ test.code/t33/dyntest.cob, test.code/t33/rt.sh: Updated tests for
+ dynamic CALL statement.
+
+2001-05-08 21:18 dessex
+
+ * AUTHORS, lib/basicio.c, test.code/Readme.txt,
+ test.code/t33/Makefile, test.code/t33/Readme.txt,
+ test.code/t33/rt.sh: Added run script and information file.
+
+2001-05-08 11:59 rpragana
+
+ * lib/basicio.c, test.code/t33/dyntest.cob: Optimization of our
+ dynamic CALL to not search again what was searched before.
+
+2001-05-08 10:01 rpragana
+
+ * ChangeLog, lib/mcmath.c, test.code/t17/Makefile: Yet a change in
+ cob_check_numeric() for PIC X(nn) with a number right padded with
+ spaces.
+
+2001-05-08 09:01 rpragana
+
+ * lib/: basicio.c, fileio.c: Changes in cob_resolve_subr() to have
+ libraries to be search in COB_LIBS. Modified #ifdef
+ WANT_DYNAMIC_LIBS to WANT_ALL_DYNAMIC_LIBS for all other libraries,
+ except for dynamic calls (CALL ).
+
+2001-05-07 22:38 swconnolly
+
+ * test.code/t25/rt.sh, test_suite/cobol_test.pl: Added -ldl to
+ cobol_test suite, for all compiled programs. Should not affect
+ things if not required
+
+2001-05-07 16:37 rpragana
+
+ * ChangeLog, lib/mcmath.c: Removed bug in cob_check_numeric() when
+ the sumber have an embedded sign (one character from
+ "}ABCDEFGHI{JKLMNOPQR").
+
+2001-05-07 15:48 rpragana
+
+ * lib/basicio.c, test.code/t33/Makefile, test.code/t33/dyntest.cob,
+ test.code/t33/subrots.cob: Changes again in cob_resolve_subr() to
+ search first at the libraries linked with our object program.
+
+2001-05-07 15:01 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, lib/basicio.c: Changes to try
+ making cob_resolve_subr() work. (blindly!)
+
+2001-05-07 10:58 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/basicio.c: Modified CALL
+ {NOT} ON EXCEPTION/OVERFLOW to execute on the condition
+ was not found in libraries.
+
+2001-05-06 22:05 rpragana
+
+ * compiler/htcobol.y, test.code/t33/Makefile: Added ON OVERFLOW and
+ {NOT} ON EXCEPTION to the CALL statement. Both will execute the
+ sentence following the condition test if RETURN-CODE is (or NOT is)
+ zero in the called subroutine. (requested by David Essex)
+
+2001-05-06 20:49 rpragana
+
+ * ChangeLog, lib/basicio.c: Fixed a short sized malloc() request in
+ cob_resolve_subr().
+
+2001-05-06 18:39 rpragana
+
+ * ChangeLog, lib/basicio.c, test.code/t33/Makefile: Small changes
+ to try to find whe Alain's cob_resolve_subr() crashes.
+
+2001-05-05 20:30 rpragana
+
+ * lib/basicio.c: New calling (runtime named subroutines) made
+ smarter, by storing the handles for previously opened libraries in
+ a list. This also speed up the search. (the list is never cleaned
+ up, though)
+
+2001-05-05 00:21 swconnolly
+
+ * test.code/t20/Makefile,
+ test_suite/compile_tests/ctestp-read3.cob,
+ test_suite/compile_tests/ctestsl05.cob,
+ test_suite/compile_tests/ctestsl06.cob,
+ test_suite/compile_tests/ctestsl08.cob: fixes to certain test in
+ test_suite
+
+2001-05-05 00:09 rpragana
+
+ * ChangeLog, compiler/htcobol.y, lib/screenio.c: Added JUST RIGHT
+ in accept_curses(). (as requested by Harold Norris) Removed AUTO
+ from ON EXCEPTION phrase (ACCEPT statement).
+
+2001-05-04 22:32 rpragana
+
+ * lib/screenio.c: Correction for ERASE in accept_curses().
+
+2001-05-04 21:54 rpragana
+
+ * ChangeLog, lib/basicio.c: Modified cob_resolve_subr (call by name
+ resolving) to search (1) in current directory, (2) in all
+ directories listed in LD_LIBRARY_PATH (delimited by ":").
+
+2001-05-04 12:31 rpragana
+
+ * ChangeLog, lib/screenio.c: Changes for accept_curses() line
+ editing.
+
+2001-05-04 09:54 swconnolly
+
+ * lib/cobmove.c: fixed move_edited
+
+2001-05-04 04:56 whydoubt
+
+ * compiler/htcobgen.c, lib/basicio.c, lib/cobmove.c, lib/mcmath.c,
+ lib/pictures.c, lib/screenio.c: First step in cleaning up style.
+ From: int func ( x ) int x; { ... } To : int func ( int x ) {
+ ... }
+
+2001-05-04 04:05 whydoubt
+
+ * compiler/: htcoboly.h, scan.l: Added SECURITY and INSTALLATION as
+ comment paragraphs available in the IDENTIFICATION DIVISION.
+
+2001-05-04 01:28 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ lib/basicio.c, lib/htcoblib.h, lib/screenio.c,
+ test.code/t33/dyntest.cob: Some cleaning of call by name. Fixes for
+ display_curses().
+
+2001-05-03 16:38 bgiroud
+
+ * compiler/htcobgen.c, test_suite/format_tests/test.script,
+ test_suite/format_tests/test08a.cob: Correction of INITIALIZE for a
+ struct with an elementary field with occurs. Addition of a test
+ program for UNSTRING.
+
+2001-05-03 15:52 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/basicio.c,
+ test.code/t00/Makefile, test.code/t00/teste.cob,
+ test.code/t33/Makefile, test.code/t33/dyntest.cob,
+ test.code/t33/subrots.cob: Added call by name to cobol subroutines.
+
+2001-05-02 22:40 rpragana
+
+ * lib/screenio.c: Modified again accept_curses() to limit input
+ field size.
+
+2001-05-02 22:20 rpragana
+
+ * ChangeLog, lib/screenio.c: Added rudimentar line editing to
+ accept_curses() function.
+
+2001-05-02 21:31 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ lib/screenio.c: Changes in accept_curses() to allow ON EXCEPTION
+ for every non-printable key. No line editing yet.
+
+2001-05-01 13:03 dessex
+
+ * utils/cobf2f/scanner.l: Bug fix in cobf2f to handle col 73-80.
+
+2001-05-01 01:02 dessex
+
+ * compiler/htcobol.y, lib/Makefile.in, lib/basicio.c,
+ lib/htcoblib.h, lib/mccntrl.s, lib/mcfrlsf.c, lib/screenio.c,
+ test.code/t20/test20e.cob: Moved RLBUF_SIZE defines to htcoblib.h.
+ Updated conditional in SEARCH ALL statement. Updated sample test
+ code for SEARCH ALL conditional. Removed some unused files from
+ Run-Time library.
+
+2001-04-28 21:13 whydoubt
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/basicio.c, lib/htcoblib.h: Changes made so
+ that these statements would work: ACCEPT variable FROM DAY.
+ ACCEPT variable FROM DAY-OF-WEEK.
+
+2001-04-27 13:45 swconnolly
+
+ * test_suite/compile_tests/ctestp-search2.cob: Further updates to
+ tests
+
+2001-04-27 03:36 bgiroud
+
+ * compiler/: htcobgen.c, htcoboly.h, scan.l: Corrected new value
+ scheme with fields subordinate to REDEFINES. Added detection of
+ special intrinsic LENGTH.
+
+2001-04-26 22:18 swconnolly
+
+ * test_suite/format_tests/test07a.cob: Mods to test_suite
+
+2001-04-26 21:23 dessex
+
+ * Readme.cygwin.txt, cobpp/scanner.l, cobpp/test.code/ft3.cob,
+ test.code/t03/test03.cob: Preprocessor bug fix. Added sample test
+ in for hex VALUE clause.
+
+2001-04-26 11:10 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l: Added EJECT, SKIPx (as comments). Modified SEARCH
+ ALL to accept subscripted variables in WHEN clause. Other minor
+ fixes.
+
+2001-04-26 09:41 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/mcmath.c: Added code for allowing an arbritary
+ hex string (eg: X'000012A5'). TODO: check previously defined
+ literals, to avoid duplicates. (must check "all" and sign too)
+
+2001-04-26 01:57 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/scan.l: Modified to
+ allow general X"" and X'' of any length for
+ VALUEs.
+
+2001-04-26 00:35 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l: Changes for allowing a numeric-only label
+ (paragraph/section). Also some changes for optional keywords in
+ several places, and introduction of the LENGTH OF operator in MOVE
+ statements (MOVE LENGTH OF A TO B). Code generation for this last
+ yet pending.
+
+2001-04-24 22:32 rpragana
+
+ * compiler/htcobol.y: Added optional separator (comma) to
+ label_list non-terminal. Affects GO TO .. DEPENDING ON...
+
+2001-04-24 21:41 dessex
+
+ * ANNOUNCE, AUTHORS, INSTALL, README, STATUS, configure,
+ configure.in, htconfig.h.in, tinycobol.lsm, cobpp/cobpp.c,
+ cobpp/cobpp.h, compiler/createver.sh, compiler/htglobals.c,
+ compiler/htglobals.h, info/rpm/tinycobol-0.00.spec,
+ test.code/Readme.txt, test.code/mak.sh,
+ test.code/ReportGen/Makefile, test.code/ReportGen/report.cob,
+ test.code/config/COB.build.tmpl.in,
+ test.code/config/COB.build.tmpl.t.in, test.code/t00/Makefile,
+ test.code/t00/Readme.txt, test.code/t00/r.sh,
+ test.code/t01/Makefile, test.code/t01/Readme.txt,
+ test.code/t01/r.sh, test.code/t02/Makefile,
+ test.code/t02/Readme.txt, test.code/t02/r.sh,
+ test.code/t02/test02.cob, test.code/t03/Makefile,
+ test.code/t03/Readme.txt, test.code/t03/r.sh,
+ test.code/t04/Makefile, test.code/t04/Readme.txt,
+ test.code/t04/r.sh, test.code/t05/Makefile,
+ test.code/t05/Readme.txt, test.code/t05/r.sh,
+ test.code/t06/Makefile, test.code/t06/Readme.txt,
+ test.code/t06/r.sh, test.code/t07/Makefile,
+ test.code/t07/Readme.txt, test.code/t07/r.sh,
+ test.code/t08/Makefile, test.code/t08/Readme.txt,
+ test.code/t08/r.sh, test.code/t09/Makefile,
+ test.code/t09/Readme.txt, test.code/t09/r.sh,
+ test.code/t10/Makefile, test.code/t10/Readme.txt,
+ test.code/t10/r.sh, test.code/t11/Makefile,
+ test.code/t11/Readme.txt, test.code/t11/r.sh,
+ test.code/t12/Makefile, test.code/t12/Readme.txt,
+ test.code/t12/r.sh, test.code/t13/Makefile,
+ test.code/t13/Readme.txt, test.code/t13/r.sh,
+ test.code/t14/Makefile, test.code/t14/Readme.txt,
+ test.code/t14/r.sh, test.code/t15/Makefile,
+ test.code/t15/Readme.txt, test.code/t15/r.sh,
+ test.code/t16/Makefile, test.code/t16/Readme.txt,
+ test.code/t16/r.sh, test.code/t17/Makefile,
+ test.code/t17/Readme.txt, test.code/t17/r.sh,
+ test.code/t18/Makefile, test.code/t18/Readme.txt,
+ test.code/t18/r.sh, test.code/t19/Makefile,
+ test.code/t19/Readme.txt, test.code/t19/r.sh,
+ test.code/t20/Makefile, test.code/t20/Readme.txt,
+ test.code/t20/r.sh, test.code/t21/Makefile,
+ test.code/t21/Readme.txt, test.code/t21/r.sh,
+ test.code/t22/Makefile, test.code/t22/Readme.txt,
+ test.code/t22/r.sh, test.code/t23/Makefile,
+ test.code/t23/Readme.txt, test.code/t23/r.sh,
+ test.code/t24/Makefile, test.code/t24/Readme.txt,
+ test.code/t24/r.sh, test.code/t25/Makefile,
+ test.code/t25/Readme.txt, test.code/t25/r.sh, test.code/t25/rt.sh,
+ test.code/t26/Makefile, test.code/t26/Readme.txt,
+ test.code/t26/r.sh, test.code/t27/Makefile,
+ test.code/t27/Readme.txt, test.code/t27/r.sh,
+ test.code/t28/Makefile, test.code/t28/Readme.txt,
+ test.code/t28/r.sh, test.code/t29/Makefile,
+ test.code/t29/Readme.txt, test.code/t29/r.sh,
+ test.code/t30/Makefile, test.code/t30/Readme.txt,
+ test.code/t30/r.sh, test.code/t31/Makefile,
+ test.code/t31/Readme.txt, test.code/t31/r.sh,
+ test.code/t32/Makefile, test.code/t32/Readme.txt,
+ test.code/t32/r.sh, test.code/tdb01/Makefile,
+ test.code/tdb01/tdb01.c, test.code/tdb02/Makefile,
+ test.code/tdb03/Makefile, test.code/tgui01/Makefile,
+ test.code/tgui01/r.sh: Updated LSM RPM-spec STATUS ANNOUNCE files.
+ Removed redundant Readme.txt files. Replaced test.code make shell
+ scripts r.sh by one mak.sh. Updated htglobals to read TCOB_*
+ enviromental variables.
+
+2001-04-23 22:25 swconnolly
+
+ * test_suite/: format_tests/test.script, format_tests/test03c.cob,
+ format_tests/test04.cob, format_tests/test07a.cob,
+ perform_tests/perf06.cob, perform_tests/test.script: Added
+ qualified data item tests plus others
+
+2001-04-23 10:22 rpragana
+
+ * ChangeLog, lib/cobmove.c: Applied patches by Sean Burford to
+ lib/cobmove.c (Thanks Sean for your effort!).
+
+2001-04-21 10:37 dessex
+
+ * configure, configure.in, lib/mcmove-orig.c, lib/mcmove.c,
+ test.code/Makefile.in, test_suite/cobol_test.pl, utils/Makefile.in,
+ utils/Readme.txt, utils/cobf2f/Makefile.in, utils/cobpp/AUTHORS,
+ utils/cobpp/COPYING, utils/cobpp/COPYRIGHT, utils/cobpp/Makefile.0,
+ utils/cobpp/Makefile.in, utils/cobpp/Readme.txt,
+ utils/cobpp/ansi_setup.h, utils/cobpp/cobpp.h,
+ utils/cobpp/get_util.c, utils/cobpp/get_util.h,
+ utils/cobpp/list_util.c, utils/cobpp/list_util.h,
+ utils/cobpp/main.c, utils/cobpp/opt_util.c, utils/cobpp/opt_util.h,
+ utils/cobpp/scanner.l, utils/cobpp/str_util.c,
+ utils/cobpp/str_util.h, utils/cobpp/support.c,
+ utils/cobpp/vperror.c, utils/cobpp/vperror.h: Updated configure.
+ Removed old cobf2f utility and old RTS move files.
+
+2001-04-21 05:44 bgiroud
+
+ * compiler/htcobgen.c: Revert back to OLDINIT method due to
+ numerous core dumps.
+
+2001-04-19 06:25 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test_suite/test.baseline, test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/stest9xx.c,
+ test_suite/format_tests/test05b.cob: Code for SYNC fields. New
+ value strategy. Integration of Stephen's tests in test.baseline and
+ some more tests for values.
+
+2001-04-18 22:01 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, lib/cobmove.c: Disabled NEWINIT
+ (until fixed) and restored symbols dumping, broken when was changed
+ the resolving of paragraphs/sections.
+
+2001-04-18 12:03 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Fixed the
+ labels (paragraphs/sections) problem.
+
+2001-04-17 19:04 rpragana
+
+ * compiler/htcobol.y: Temporary fix for multiple indexes (INDEXED
+ BY) so it may parse those occurs.
+
+2001-04-17 18:54 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Temporary fix for storage
+ allocation (isptr).
+
+2001-04-16 18:59 rpragana
+
+ * ChangeLog, lib/mcmath.c, test.code/tdb01/tdb01.c: Small change to
+ increase (a little) the precision of COMP-3 converted variables.
+
+2001-04-16 14:47 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Fix for not generating errors
+ with functions (scanned as LABELSTR) identifiers.
+
+2001-04-16 12:03 rpragana
+
+ * lib/mcmath.c: Bug fixes for COMP-3 conversion routines (in fldtod
+ and dtofld).
+
+2001-04-16 07:05 dessex
+
+ * configure, configure.in, htconfig.h.in, compiler/htglobals.c,
+ compiler/htglobals.h, test.code/Readme.txt,
+ test.code/t01/test01e.cob, test.code/t31/Readme.txt,
+ test.code/t31/phone.dat, test.code/t31/r.sh,
+ test.code/t32/Makefile, test.code/t32/Readme.txt,
+ test.code/t32/r.sh, test.code/t32/test32.cob,
+ utils/cobf2f/Makefile.in, utils/cobf2f/cobf2f.c,
+ utils/cobf2f/cobf2f.h, utils/cobf2f/scanner.l: Minor update to
+ htglobals and configure. Updated configure to abort if LEX/YACC
+ not found. Added initial tests for variable arrays. Removed
+ phone.dat file, as it is created in test program. Added test for
+ exponatiation in COMPUTE statement.
+
+2001-04-15 22:31 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Bug in opt_next removed (was the
+ reason of several problems with indexed files).
+
+2001-04-15 21:05 rpragana
+
+ * compiler/htcobgen.c: Removed bug with push_expr(). It was not
+ returning its status, so EVALUATE (and possibly other statements)
+ was not working when comparing strings.
+
+2001-04-15 19:14 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Check for the
+ apropriate kind of decimal point (comma or period) in configuration
+ section and flag as error any numerica literal not following it.
+
+2001-04-14 17:32 rpragana
+
+ * compiler/htcobgen.c: Removed bugs with multiple labels
+ (paragr/sections) in a multi-segment program.
+
+2001-04-13 22:26 rpragana
+
+ * compiler/htcobol.y: Change to generate an error when a table is
+ used without subscripts/indexes.
+
+2001-04-13 19:19 rpragana
+
+ * lib/mcmath.c: Still a minor bug found (it was working, but this
+ is safer).
+
+2001-04-13 18:58 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, lib/mcmath.c: Modified
+ cob_adjust_length() at the library and adjust_desc_length() at code
+ generation, so we don't need to call malloc() anymore, to store the
+ temporary structure we need.
+
+2001-04-13 18:20 rpragana
+
+ * lib/mcmath.c: Removed a bug with get_index(), in lib/mcmath.c.
+ This bug affects several kinds of numeric variables, when used as
+ subscripts.
+
+2001-04-13 16:37 rpragana
+
+ * compiler/htcobgen.c, compiler/htcoboly.h, lib/mcmath.c,
+ test.code/tdb03/tdb03.cob: Variable-sized tables code generation
+ and runtime.
+
+2001-04-12 23:52 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Changes to
+ allow OCCURS..DEPENDING compile.
+
+2001-04-12 23:08 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h: Mostly cosmetic changes, preparing to
+ implement OCCURS...DEPENDING ON...
+
+2001-04-11 22:01 dessex
+
+ * compiler/htglobals.c: Removed debug trace from htglobals.
+
+2001-04-11 21:05 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t31/phone.dat: Bug fixes for reporting an error in
+ paragraphs/sections. (Thanks Harold Norris) Also correction pending
+ for the exponentiation operator.
+
+2001-04-11 07:40 dessex
+
+ * AUTHORS, compiler/htglobals.c, test.code/t31/Makefile,
+ test.code/t31/test31.cob: Minor update to htglobals, AUTHORS,
+ test31 files.
+
+2001-04-09 20:33 andrewcza
+
+ * compiler/htcobgen.c, lib/fileio.c, lib/htcoblib.h,
+ test.code/t31/phone.dat, test.code/t31/test31.cob:
+ Modify fileio.c to get READ and WRITE to work for variable IO.
+
+2001-04-09 02:31 dessex
+
+ * compiler/: htglobals.c, htglobals.h: Removed full path from
+ output file names.
+
+2001-04-08 21:37 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l, lib/mcmath.c: Added exponentiation operator.
+
+2001-04-08 03:19 dessex
+
+ * AUTHORS, tinycobol.lsm, lib/mcmath.c, utils/cobf2f/AUTHORS,
+ utils/cobf2f/COPYING, utils/cobf2f/COPYRIGHT,
+ utils/cobf2f/Makefile.in, utils/cobf2f/Readme.txt,
+ utils/cobf2f/cobf2f.c, utils/cobf2f/cobf2f.h,
+ utils/cobf2f/scanner.l: Added initial updated cobf2f format
+ conversion utility. Minor file maintenace.
+
+2001-04-07 20:10 rpragana
+
+ * compiler/htcobgen.c: Removed bug when freeing the expression list
+ (free_expr()). Thanks David Essex, for reporting this.
+
+2001-04-07 10:17 rpragana
+
+ * compiler/htcobgen.c: Oooops! Removed some bugs left in the last
+ commit.
+
+2001-04-07 09:43 rpragana
+
+ * compiler/htcobgen.c: Modified function calling of cob_write and
+ several other runtime functions to pass an additional argument (the
+ DEPENDING ON ... variable). (requested by Andrew Cameron)
+
+2001-04-06 22:42 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Flag as an error if we try to READ
+ a record variable, instead of a file. (the compiler was core
+ dumping in such case)
+
+2001-04-06 10:56 rpragana
+
+ * compiler/htcobgen.c: Changed to not allow listing ouput in
+ unexpected ways (someone moved dump_symbols() from its original
+ place).
+
+2001-04-06 02:00 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, lib/strings.c: Merged code for
+ INSPECT TALLYING, done by Mariusz Stakowski (Thanks Mariusz!).
+
+2001-04-05 20:18 rpragana
+
+ * compiler/htcobgen.c: Removed bug introduced in last commit
+ (paragraphs _defined_ were not being detected).
+
+2001-04-05 16:58 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Fixed bug with error reporting
+ paragraph/section or variable not found.
+
+2001-04-05 11:46 rpragana
+
+ * ChangeLog, lib/mcmath.c: Trap divide by zero, aborting the
+ program.
+
+2001-04-04 22:32 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htglobals.c,
+ compiler/htglobals.h, compiler/scan.l, lib/Makefile.0,
+ lib/Makefile.in, test.code/t17/test17.cob,
+ test.code/t19/test19.cob, test.code/t19/test19b.cob,
+ test.code/t20/test20a.cob, test.code/t20/test20a_at.cob,
+ test.code/t20/test20b.cob, test.code/t20/test20c.cob,
+ test.code/t20/test20d.cob: Minor update to remove from files.
+
+2001-04-04 03:16 bgiroud
+
+ * compiler/htcobgen.c: Corrected rep/movsb sequence in
+ gen_init_str. Added code to handle REDEFINES in build_init_str.
+
+2001-04-03 22:34 swconnolly
+
+ * test_suite/compile_tests/: ctestp-read1.cob, ctestp-read2.cob,
+ ctestp-read3.cob, ctestp-read4.cob, ctestp-rewrite1.cob,
+ ctestp-rewrite2.cob, ctestp-search1.cob, ctestp-search2.cob,
+ ctestp-set1.cob, ctestp-start1.cob, ctestp-string1.cob,
+ ctestp-unstring1.cob, ctestsl01.cob, ctestsl02.cob, ctestsl03.cob,
+ ctestsl04.cob, ctestsl05.cob, ctestsl06.cob, ctestsl07.cob,
+ ctestsl08.cob, test.script: Further updates to compile_tests
+
+2001-04-03 20:21 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Applied patch submitted by Sean
+ Bufford, to fix indexed file index offset calculation.
+
+2001-04-02 21:43 swconnolly
+
+ * test_suite/compile_tests/: ctestp-accept1.cob,
+ ctestp-accept2.cob, ctestp-add1.cob, ctestp-add2.cob,
+ ctestp-add3.cob, ctestp-close1.cob, ctestp-compute1.cob,
+ ctestp-continue1.cob, ctestp-delete1.cob, ctestp-divide1.cob,
+ ctestp-divide2.cob, ctestp-divide3.cob, ctestp-divide4.cob,
+ ctestp-divide5.cob, ctestp-goto1.cob, ctestp-initialize1.cob,
+ ctestp-multiply1.cob, ctestp-multiply2.cob, ctestp-open1.cob,
+ ctestp-read1.cob, ctestp-read2.cob, ctestp-subtract1.cob,
+ ctestp-subtract2.cob, ctestp-subtract3.cob, test.script: begin
+ adding compile_tests files for PROCEDURE DIVISION verbs .
+
+2001-04-02 16:27 rpragana
+
+ * ChangeLog, lib/mcmath.c: Removed bug when testing 88-variables
+ with type 'B' (COMP).
+
+2001-04-02 16:18 bgiroud
+
+ * compiler/: htcobgen.c, htcobol.y: Phase II of static init with
+ occurs.
+
+2001-04-02 03:15 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcoboly.h,
+ test_suite/cobol_test.pl, test_suite/seqio_tests/seqio02.cbl,
+ test_suite/seqio_tests/seqio02.cob: Static init with OCCURS Phase
+ I. Converted seqio02 for free-format.
+
+2001-04-02 02:07 dessex
+
+ * configure, configure.in, htconfig.h.in, cobpp/cobpp.c,
+ compiler/cobopt, compiler/htglobals.c, compiler/htglobals.h,
+ utils/cobpp/main.c: Minor updates to configure and htglobals.
+
+2001-04-01 14:26 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Corrections for
+ multiple records definitions in FDs. (now it is like a REDEFINES)
+
+2001-03-31 22:59 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h: Implemented FD with multiple records (level
+ 01).
+
+2001-03-29 23:37 rpragana
+
+ * ChangeLog, compiler/htcobol.y, compiler/scan.l,
+ test.code/t17/test17.cob, test.code/t19/test19.cob,
+ test.code/t19/test19b.cob, test.code/t20/test20a.cob,
+ test.code/t20/test20a_at.cob, test.code/t20/test20b.cob,
+ test.code/t20/test20d.cob: Bug fixes at configuration section
+ (SOURCE/OBJECT-COMPUTER) and some clean up.
+
+2001-03-29 22:48 andrewcza
+
+ * lib/fileio.c, test.code/t31/test31.cob:
+ Modify READ to return the Number of Bytes read for a VARYING length
+ READ.
+
+2001-03-29 14:46 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, lib/fileio.c: Modified again
+ gen_read, so the reclen desc/buf is passed just after the file
+ descriptor.
+
+2001-03-29 12:57 rpragana
+
+ * compiler/htcobgen.c: Added reclen argument to cob_read, so it may
+ change the variable's value when a varying size record don't read
+ full reclen size.
+
+2001-03-29 02:33 andrewcza
+
+ * compiler/htcobgen.c:
+ Fix a problem in code generation I created while changing for
+ VARYING LENGTH IO
+
+2001-03-29 02:17 andrewcza
+
+ * compiler/htcobgen.c, lib/fileio.c, lib/htcoblib.h,
+ test.code/t31/Makefile, test.code/t31/Readme.txt,
+ test.code/t31/phone.dat, test.code/t31/r.sh,
+ test.code/t31/test31.cob:
+ Implement a quick and dirty RECORD IS VARYING .. DEPENDING ON ..
+ See t31 for an Example
+
+2001-03-28 21:53 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/fileio.c: RECORD VARYING ... DEPENDING ON
+ ... implemented (parsing/code generation).
+
+2001-03-28 01:41 rpragana
+
+ * ChangeLog, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l: Removed several bugs as reported by Stephen
+ Connolly: IS after PIC in variable declarations, the "." in a line
+ with multiple statements, DATE-COMPILED (we don't support it yet,
+ but it will flag as an error).
+
+2001-03-28 00:38 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Made FILLER optional in variable
+ declarations.
+
+2001-03-27 06:12 dessex
+
+ * cobpp/cobpp.c, compiler/htglobals.c, test.code/t02/Makefile,
+ test.code/t23/Makefile, test_suite/cobol_test.pl: Updated new
+ pre-processor to handle TABS internally. Set the the TABS expand
+ default to 8 spaces.
+
+2001-03-27 03:30 dessex
+
+ * test_suite/: Makefile, cobol_test.pl: Added fix in test suite for
+ program name change, and tab handling in pre-processor.
+
+2001-03-27 02:52 bgiroud
+
+ * compiler/: htcobgen.c, htcoboly.h: Corrected bug introduced with
+ pgm_segment in relation with refmod's and calls (should not have
+ happened if test_suite were used!!).
+
+2001-03-27 01:48 bgiroud
+
+ * compiler/htcobgen.c, test_suite/cobol_test.pl,
+ test_suite/test.baseline, test_suite/call_tests/ptest02.cob,
+ test_suite/format_tests/test.script,
+ test_suite/format_tests/test05b.cob,
+ test_suite/idxio_tests/idxio01.cob: Few enhancements to the test
+ suite.
+
+2001-03-27 01:19 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcoboly.h: Bugfix in
+ MOVE CORR (do not allow OCCURS in both source and destination).
+
+2001-03-26 09:58 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Small bugfix in opt_end_program
+ (it was not optional :)
+
+2001-03-26 08:37 rpragana
+
+ * compiler/htcobgen.c: Added more complex cases to MOVE
+ CORRESPONDING.
+
+2001-03-26 07:54 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/ReportGen/report.cob, test.code/t30/test30a.cob: Various
+ bugfixes with multiple program segments.
+
+2001-03-26 05:08 dessex
+
+ * cobpp/copybooks/TEST02E.cpy, cobpp/copybooks/fTEST02E.cpy,
+ test.code/Readme.txt, test.code/t29/Makefile,
+ test.code/t29/Readme.txt, test.code/t29/r.sh,
+ test.code/t29/test29m.cob, test.code/t30/Makefile,
+ test.code/t30/Readme.txt, test.code/t30/r.sh,
+ test.code/t30/test30a.cob: Added test code for CORRESPONDING option
+ of MOVE statement. Added test code for nested source programs and
+ sequence of source programs.
+
+2001-03-26 00:37 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, test.code/t14/test14d.cob: Fixed
+ bugs with stabs (debug) and listing, after the changes for multi
+ program segments.
+
+2001-03-25 23:34 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Added options to compile
+ multiple program segments (main plus subroutines) in the same
+ source file.
+
+2001-03-25 17:41 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test.code/t00/teste.cob,
+ test.code/t03/test03.cob, test.code/t04/test04.cob,
+ test.code/t04/test04i.cob, test.code/t04/test04r.cob,
+ test.code/t08/test08.cob, test.code/t08/test08g.cob,
+ test.code/t08/test08u.cob, test.code/t08/test08ug.cob: Added clause
+ BLANK WHEN ZERO in variable declarations.
+
+2001-03-25 16:42 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Removed bug with checking
+ pictures in elementary items. Converted all symbols (except
+ literals) to uppercase, so the compiler becomes case independent.
+ Adjusted listing of paragraph/secions to handle large symbols.
+
+2001-03-25 15:35 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Added code to check for a null
+ picure.
+
+2001-03-24 22:00 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l: Preliminary version of MOVE CORRESPONDING.
+
+2001-03-24 20:58 rpragana
+
+ * compiler/htcobgen.c, test.code/ReportGen/displayable.cpy,
+ test.code/ReportGen/report.cob, test.code/t01/test01a.cob,
+ test.code/t01/test01b.cob, test.code/t01/test01d.cob: Modified
+ appearance of paragraphs and sections in listings. (Also changes
+ in in some files, because of troubles with htcobpp)
+
+2001-03-24 19:33 dessex
+
+ * compiler/htcobgen.c: Added fix for paragraphs and sections debug
+ trace information.
+
+2001-03-24 04:50 dessex
+
+ * ANNOUNCE, ChangeLog, INSTALL, INSTALL.Win32, README,
+ tinycobol.lsm, cobpp/Readme.txt, info/rpm/tinycobol-0.00.spec,
+ test.code/t23/Makefile, utils/Makefile.in, utils/dispcv.tcl,
+ utils/htcobdispcv.tcl, utils/htcobviscomp.tcl, utils/viscomp.tcl,
+ utils/cobpp/Makefile.0, utils/cobpp/Makefile.in: Updated LSM STATUS
+ INSTALL.Win32 INSTALL ANNOUNCE ChangeLog files.
+
+2001-03-22 05:17 dessex
+
+ * tinycobol.lsm, cobpp/scanner.l, cobpp/test.code/ft1.cob,
+ cobpp/test.code/t1.cob, compiler/createver.sh,
+ test.code/t02/Makefile, test.code/t02/test02b.cob,
+ test.code/t05/Makefile, test.code/t05/test05f.cob: Added bug fix in
+ new pre-processor relating to scanning identifiers.
+
+2001-03-21 01:22 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Removed still a bug with
+ paragraphs/sections.
+
+2001-03-21 00:41 dessex
+
+ * compiler/htglobals.c, test.code/t02/Makefile,
+ test.code/t02/test02b.cob: Updated PERFORM tests for procedures
+ (paragraphs/sections). Changed tabs defualt to zero to conpensate
+ for bug in Cygwin popen() function.
+
+2001-03-20 23:18 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, test.code/t02/test02b.cob: Fixed
+ small bug introduced earlier in section closing code. Also changed
+ the test code for this.
+
+2001-03-20 17:15 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Added back
+ check for undefined paragraphs/sections, now working full.
+
+2001-03-20 16:49 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Removed wrong check for
+ paragraphs/sections that are undefined.
+
+2001-03-20 13:28 dessex
+
+ * test.code/t02/: Makefile, test02b.cob: Added PERFORM tests for
+ procedures (paragraphs/sections).
+
+2001-03-20 11:12 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Fix for
+ paragraph qualifying.
+
+2001-03-20 09:50 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Temporary fix for
+ paragraph/section bug.
+
+2001-03-20 08:55 dessex
+
+ * cobpp/parser.y, cobpp/scanner.l, cobpp/test.code/Makefile,
+ cobpp/test.code/ft1.cob, cobpp/test.code/t2.cob,
+ test.code/config/COB.build.tmpl.t.in, test.code/t02/TEST02.cpy,
+ test.code/t02/TEST02A.cpy, test.code/t02/test02.cob: Added bug fix
+ in new pre-processor relating to the use of a comma delimiter.
+
+2001-03-19 00:54 rpragana
+
+ * ChangeLog, utils/viscomp.tcl: Modified the visual parsing tool,
+ because the preprocessor (htcobpp) don't allow us to enter a full
+ source pathname.
+
+2001-03-19 00:05 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Fixed bug with several
+ paragraphs with the same name in different sections.
+
+2001-03-18 01:22 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Added optional RECORD in "READ ...
+ NEXT RECORD ...".
+
+2001-03-18 00:41 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Bugfix for
+ inverted class check conditions (eg: IF NOT IS NUMERIC VAR).
+
+2001-03-17 23:01 rpragana
+
+ * compiler/htcobgen.c: Modified gen_set so "set condition-var
+ (idx1, idx2,...) to true" works. (88-conditions with arrays)
+
+2001-03-17 21:46 andrewcza
+
+ * cobpp/cobpp.c, test.code/t18/test18.cob,
+ test.code/t18/test18i.cob, test.code/t18/test18r.cob,
+ test_suite/cobol_test.pl:
+ Fix a problem with the preprocessor not working on Cygwin Fix a
+ problem with the test_suite not working on Cygwin Fix some logic
+ problems with the t18 test programs
+
+2001-03-17 15:01 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Modified
+ gen_condition to allow condition-name variables (level 88) in
+ arrays.
+
+2001-03-17 10:14 dessex
+
+ * compiler/htcobgen.c, compiler/htglobals.c, compiler/htglobals.h,
+ compiler/scan.l, test.code/ReportGen/Makefile,
+ test.code/config/COB.build.tmpl.in, test.code/t00/Makefile,
+ test.code/t01/Makefile, test.code/t02/Makefile,
+ test.code/t03/Makefile, test.code/t04/Makefile,
+ test.code/t05/Makefile, test.code/t06/Makefile,
+ test.code/t07/Makefile, test.code/t08/Makefile,
+ test.code/t09/Makefile, test.code/t10/Makefile,
+ test.code/t11/Makefile, test.code/t12/Makefile,
+ test.code/t13/Makefile, test.code/t14/Makefile,
+ test.code/t15/Makefile, test.code/t16/Makefile,
+ test.code/t17/Makefile, test.code/t18/Makefile,
+ test.code/t19/Makefile, test.code/t20/Makefile,
+ test.code/t21/Makefile, test.code/t22/Makefile,
+ test.code/t23/Makefile, test.code/t24/Makefile,
+ test.code/t25/Makefile, test.code/t26/Makefile,
+ test.code/t27/Makefile, test.code/t28/Makefile,
+ test.code/tdb01/Makefile, test.code/tdb02/Makefile,
+ test.code/tdb03/Makefile, test.code/tgui01/Makefile,
+ test_suite/cobol_test.pl: Integrated new pre-processor into main
+ compiler. Updated program/error listing code.
+
+2001-03-16 21:48 rpragana
+
+ * compiler/htcobgen.c: A debugging statement left on the code broke
+ the compiler. Removed.
+
+2001-03-16 18:08 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l, test.code/t27/test27.cob: emoved bugs in parsing
+ of qualified variables. It as not allowing qualification when the
+ variable haven't clones and was interacting with subscripting.
+
+2001-03-15 22:41 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Solve a problem with combining
+ VAR IN/OF VAR with subscripting.
+
+2001-03-15 07:33 dessex
+
+ * BUGS, tinycobol.lsm, compiler/createver.sh, compiler/htcobgen.c,
+ compiler/htcobol.y, test.code/t01/test01a.cob: Added fix in ADD ..
+ GIVING statements to conform to COBOL 85 standard.
+
+2001-03-15 01:02 rpragana
+
+ * compiler/htcobgen.c, lib/htcoblib.h, lib/mcmath.c: Changes to
+ other arith statements to pass pointers to actual arguments.
+
+2001-03-15 00:42 rpragana
+
+ * compiler/htcobgen.c, lib/mcmath.c: Changes for making arith
+ statements work with new gcc pre-3.0.
+
+2001-03-13 10:16 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: A blind try to make our code
+ generation of arithmetic statements less C-compiler dependant.
+ (push_double/assign_double)
+
+2001-03-13 02:48 bgiroud
+
+ * test_suite/: cobol_test.pl, test.baseline,
+ condition_tests/cond01.cob, condition_tests/cond03.cob,
+ condition_tests/test.script, format_tests/test06a.cob: Added
+ condition_tests directory with cond01.cob and cond03.cob converted
+ from test.code/t22/test22.cob and t24/test24.cob. Updated
+ test.baseline.
+
+2001-03-12 11:27 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l,
+ test.code/ReportGen/tclwrapper.c: Reimplemented expressions code to
+ allow recalling it during complex conditions code generation.
+
+2001-03-12 10:09 dessex
+
+ * cobpp/cobpp.h, cobpp/createver.sh, cobpp/scanner.l,
+ cobpp/copybooks/fTEST02D.cpy, cobpp/test.code/r.sh, lib/mcmath.c,
+ test.code/t02/TEST02C.cpy, test.code/t02/Test02.cpy,
+ test.code/t02/test02.cob, test.code/t02/test02a.cob,
+ test.code/t04/Makefile, test.code/t05/test05e.cob,
+ test.code/t07/Makefile, test.code/t08/Makefile,
+ test.code/t08/gen_data.c, test.code/t08/r.sh,
+ test.code/t10/Makefile, test.code/t15/r.sh, test.code/t20/Makefile,
+ test.code/t20/test20e.cob, test.code/t21/Makefile,
+ test.code/t22/test22.cob, test.code/t24/test24.cob: Updated
+ pre-processor to handle as found in DOS type files. Added fix
+ in math RTS to remove compiler warnings. Updated tests using
+ abbreviated relational conditionals.
+
+2001-03-11 18:39 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test_suite/cobol_test.pl, test_suite/format_tests/test05b.cob:
+ Corrected behaviour of INITIALIZE with variables in occurs. Added
+ test to handle RH 7.0 in automated test suite. Added more format
+ tests.
+
+2001-03-09 16:45 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Eliminated bug with null string
+ literals. (Was generating code rejected by the assembler)
+
+2001-03-09 16:24 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Changes for removing the
+ reduce/reduce conflict in conditions.
+
+2001-03-09 12:34 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Bug fix in conditions.
+
+2001-03-09 10:21 dessex
+
+ * test.code/: Readme.txt, t05/Makefile, t05/test05e.cob,
+ t09/.gdbinit, t13/.gdbinit, t14/.gdbinit, t14/Makefile,
+ t14/Readme.txt, t14/noeth-test.cob, t14/r.sh, t14/string.cob,
+ t14/test14.cob, t14/test14a.cob, t14/test14b.cob, t14/test14c.cob,
+ t14/test14d.cob, t14/unstring.cob: Added tests for STRING,
+ UNSTRING, PERFORM's using abbreviated relational conditionals.
+
+2001-03-09 00:20 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Added invalid key condition to
+ WRITE, REWRITE, START, and DELETE statements.
+
+2001-03-08 22:40 rpragana
+
+ * compiler/htcobol.y: Modified STRING statement to allow special
+ variables as operands.
+
+2001-03-08 21:48 rpragana
+
+ * compiler/htcobol.y: Removed several reduce/reduce conflicts with
+ the implicit operand/operator in conditions.
+
+2001-03-08 14:14 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Made comma separator in subscripts
+ (multidimensional arrays) optional.
+
+2001-03-08 10:18 rpragana
+
+ * compiler/htcobgen.c: Fixed bug in encoding signed literals.
+
+2001-03-08 10:03 dessex
+
+ * lib/mcmath.c, test.code/t01/test01d.cob: Added bug fix for divide
+ statement with remainder option.
+
+2001-03-08 09:13 rpragana
+
+ * ChangeLog, compiler/htcobol.y, compiler/htcoboly.h: Added
+ conditions with both implied first operand and operator, but only
+ with OR, like that: if X >= Y or Z or T.
+
+2001-03-06 19:47 rpragana
+
+ * ChangeLog, compiler/scan.l: Modified the scanner again to allow
+ labels such as 3-5 (but not as variables or filenames, &c).
+
+2001-03-06 13:24 rpragana
+
+ * ChangeLog, compiler/scan.l: Changes to disallow things like
+ 123-456 as a valid identifier.
+
+2001-03-06 10:27 rpragana
+
+ * ChangeLog, compiler/htcobol.y, compiler/scan.l: Fixed bugs with
+ variables begining with digits and is/are in value clauses.
+
+2001-03-06 03:53 dessex
+
+ * compiler/htcobol.y: Added bug fix for math verbs optional comma
+ separator.
+
+2001-03-06 02:12 jmnoeth
+
+ * lib/screenio.c: Change the line mode accept to properly handle
+ the NO-ECHO flag. This is a temporary fix untill all attributes
+ (passed via the flag parameter) to the routine are handled
+ properly. Jim Noeth
+
+2001-03-05 19:52 andrewcza
+
+ * test.code/t06/: test06.cob, test06i.cob, test06r.cob,
+ test06s.cob:
+ Remove UPDATE from ACCEPT Verb.
+
+2001-03-05 16:49 rpragana
+
+ * ChangeLog, compiler/htcobol.y, lib/basicio.c,
+ test.code/ReportGen/trans.tex, test.code/t04/test04.cob,
+ test.code/t04/test04i.cob, test.code/t04/test04r.cob: Changes for
+ the ACCEPT statement (eliminated WITH UPDATE option).
+
+2001-03-03 00:51 andrewcza
+
+ * README:
+ Add info About Win32
+
+2001-03-03 00:51 andrewcza
+
+ * compiler/htcobgen.c:
+ Modify htcobgen.c so that call Using works for win32 platforms.
+
+2001-03-02 23:42 andrewcza
+
+ * compiler/htcobgen.c:
+ Fix htcobgen Fix htcobgen so that the decimal_comma runtime will be
+ seen as _decimal_comma for Win32 Systems.c so that the
+ decimal_comma runtime will be seen as _decimal_comma for Win32
+ Systems.
+
+2001-03-02 23:05 andrewcza
+
+ * lib/mccntrl.s:
+ Change code to compile on a Win32 Platform
+
+2001-03-02 22:38 andrewcza
+
+ * INSTALL.Win32, cobpp/createver.sh, compiler/createver.sh,
+ compiler/htcobgen.c, lib/mccntrl.s:
+ Change code to allow TinyCobol to work on Windows Based Systems
+ using the Cygwin Development kit at http://www.cygwin.com.
+
+ Note that although the Test programs will compile and run there
+ seems to be a problem currently with the maths routines under
+ Win32.
+
+2001-03-02 21:06 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Added SET ... TO TRUE (88
+ conditions).
+
+2001-03-02 17:59 rpragana
+
+ * ChangeLog, test.code/ReportGen/reportGen.tcl,
+ test.code/ReportGen/tclwrapper.c: Removed bug with TeX encoding of
+ some special characters.
+
+2001-03-02 10:19 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, test.code/ReportGen/Makefile,
+ test.code/t22/test22.cob: Removed a bug with NUMERIC class check (I
+ hope, if I understood it well).
+
+2001-03-01 13:46 rpragana
+
+ * compiler/htcobgen.c: Removed bug that prevented use of "indexed
+ by" with linkage variables.
+
+2001-03-01 08:55 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test.code/t01/test01a.cob, test.code/t01/test01b.cob,
+ test.code/t01/test01c.cob, test.code/t01/test01d.cob,
+ test.code/t01/test01e.cob: Updated math verbs ON SIZE ERROR option
+ to COBOL 85 standard.
+
+2001-02-28 15:15 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Removed a bug in "value_to_eax"
+ routine (htcobgen.c) that was causing troubles with arrays. That
+ function shall generate code to return in register %eax the value
+ of a variable, and NOT its address. I have not made it handle all
+ cases (please Bernard, look there your code!).
+
+2001-02-28 14:07 rpragana
+
+ * ChangeLog, test.code/ReportGen/report.layout,
+ test.code/ReportGen/reportGen.tcl: Added -rotate option for report
+ headers/footers (to print sideways).
+
+2001-02-26 22:29 rpragana
+
+ * ChangeLog, test.code/t28/test28a.cob: Modified our test.code/t28
+ to show arrays at the linkage section.
+
+2001-02-26 07:30 dessex
+
+ * compiler/htcobol.y, lib/mcmath.c, test.code/t01/test01a.cob,
+ test.code/t01/test01b.cob: Added bug fix for floating point
+ truncation in math RTS.
+
+2001-02-25 23:38 rpragana
+
+ * test.code/ReportGen/: displayable.cpy, report.cob, report.layout:
+ Oops! Sent my working files instead of the cleaned up.
+
+2001-02-25 20:02 rpragana
+
+ * test.code/ReportGen/: Makefile, displayable.cpy, report.cob,
+ report.layout, reportGen.tcl: More bugfixes, now with file paths
+ for tex, dvips, ps2pdf.
+
+2001-02-25 13:49 rpragana
+
+ * test.code/ReportGen/: Readme.txt, report.cob, report.layout,
+ reportGen.tcl, sales.dat: Removed a bug with font/color settings in
+ Detail option for reports.
+
+2001-02-24 15:46 rpragana
+
+ * test.code/ReportGen/: bird.epsf, displayable.cpy, report.layout,
+ reportGen.tcl: Added Copy command to get the copybook (same from
+ cobol source) in reports. Added picture that was left out in the
+ last commit.
+
+2001-02-22 22:30 rpragana
+
+ * compiler/htcobgen.c, test.code/ReportGen/report.cob,
+ test.code/ReportGen/report.layout,
+ test.code/ReportGen/reportGen.tcl, test.code/ReportGen/sales.dat:
+ Added option -nextline for generating detail records in several
+ lines.
+
+2001-02-22 12:52 rpragana
+
+ * test.code/ReportGen/: report.layout, reportGen.tcl: Added
+ automatic line wrapping when column contents width exceed required
+ column width.
+
+2001-02-21 07:59 dessex
+
+ * compiler/htcobgen.c, test.code/Readme.txt,
+ test.code/t09/test09.cob, test.code/t24/test24.cob,
+ test.code/t28/Makefile, test.code/t28/Readme.txt,
+ test.code/t28/r.sh: Added code to trap calls to undefined
+ paragraphs/sections. Enhanced the EVALUATE tests in t24. Added
+ tests for MOVE verb with reference modification.
+
+2001-02-20 23:50 rpragana
+
+ * compiler/htcobgen.c: Still one more change to bypass the stack
+ cleanup when the range test passed (EVALUATE statement). I hope it
+ is correct now.
+
+2001-02-20 23:41 rpragana
+
+ * compiler/htcobgen.c: Still a mistake in EVALUATE¸ removed.
+
+2001-02-20 23:33 rpragana
+
+ * compiler/htcobgen.c, test.code/ReportGen/report.layout: Removed
+ bug with range tests in EVALUATE. (Thanks David Essex for
+ reporting)
+
+2001-02-19 20:37 rpragana
+
+ * test.code/ReportGen/: Readme.txt, report.layout, reportGen.tcl:
+ Added -hrule option to the report layout.
+
+2001-02-19 17:58 rpragana
+
+ * ChangeLog, test.code/ReportGen/Makefile,
+ test.code/ReportGen/report.layout,
+ test.code/ReportGen/reportGen.tcl, test.code/ReportGen/sales.dat:
+ Clean up in the code for reportGen. Bug fix in spacings.
+
+2001-02-19 15:01 rpragana
+
+ * ChangeLog, test.code/ReportGen/Makefile,
+ test.code/ReportGen/Readme.txt, test.code/ReportGen/report.cob,
+ test.code/ReportGen/report.layout,
+ test.code/ReportGen/reportGen.tcl, test.code/ReportGen/sales.dat:
+ Added options for including images and barcodes in the report.
+
+2001-02-19 01:06 rpragana
+
+ * test.code/ReportGen/: report.cob, report.layout, reportGen.tcl:
+ Modified layout to allow more control, added web delivery (mime
+ type application/pdf) of the report output.
+
+2001-02-18 17:25 bgiroud
+
+ * TODO, cobpp/cobpp.h, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test_suite/call_tests/ptest02.cob,
+ test_suite/format_tests/test06a.cob: Second parm of refmod's made
+ optional. Corrected bugs in manipulating call_mode when parm by
+ value was the last in a series and handling of picture affecting
+ "CURRENCY SIGN IS" clause. Phase I of EXTERNAL semantics.
+
+2001-02-17 21:06 rpragana
+
+ * ChangeLog, test.code/ReportGen/Readme.txt,
+ test.code/ReportGen/report.layout,
+ test.code/ReportGen/reportGen.tcl: Added a short readme
+ (incomplete) to reportGen.
+
+2001-02-17 08:39 rpragana
+
+ * test.code/ReportGen/: Makefile, report.cob, report.layout,
+ reportGen.tcl, sales.dat, tclwrapper.c: Added a TeX report
+ generator for TinyCobol.
+
+2001-02-16 22:52 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l, lib/htcoblib.h, test.code/t00/teste.cob: Changes
+ for allowing ACCEPT ... ON EXCEPTION AUTO and several
+ screen attributes, as RM Cobol. (as requested by Harold)
+
+2001-02-14 18:42 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t25/test25.cob, test.code/tgui01/testgui01.cob: Removed a
+ serious bug with nested IFs, defining a single_stat_sentece
+ non-terminal.
+
+2001-02-11 01:01 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Changes to
+ allow arrays of pointers and generic variables in pointer
+ operations.
+
+2001-02-10 22:57 rpragana
+
+ * compiler/htcobgen.c: Removed a bug with setting a pointer to
+ NULL.
+
+2001-02-10 21:25 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t28/test28.cob, test.code/t28/test28a.cob: Changes in the
+ linkage section to allow defining variables which are not passed as
+ arguments from the calling program.
+
+2001-02-10 16:36 rpragana
+
+ * compiler/htcobol.y, test.code/t28/test28.cob,
+ test.code/t28/test28a.cob: Small change in pointers to allow
+ pointer arithmetic.
+
+2001-02-10 16:07 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test.code/t28/Makefile, test.code/t28/r.sh,
+ test.code/t28/test28.cob, test.code/t28/test28a.cob: Added POINTER
+ types (usage pointer, type 'B' with pic 9(9)) and a sample cobol
+ source test.code/t28.
+
+2001-02-09 18:37 rpragana
+
+ * compiler/htcobgen.c: Ooops! Forgot to check compiler after last
+ changes.
+
+2001-02-09 16:25 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h: More report section stuff: defining structures
+ to hold report info.
+
+2001-02-08 20:07 rpragana
+
+ * ChangeLog, utils/dispcv.tcl: Updated conversion tool to account
+ for "VAR1 in/of VAR2 ...", arrays and refmods and also to process
+ both DISPLAY and ACCEPT statements.
+
+2001-02-08 06:15 dessex
+
+ * ChangeLog, tinycobol.lsm, compiler/createver.sh,
+ test.code/Readme.txt, test.code/t27/Makefile, test.code/t27/r.sh,
+ test.code/t27/t27.cob, test.code/t27/test27.cob, utils/Readme.txt:
+ Updated Changelog LSM files.
+
+2001-02-08 03:45 dessex
+
+ * ANNOUNCE, ChangeLog, STATUS, tinycobol.lsm,
+ info/rpm/tinycobol-0.50.spec, test.code/t00/.gdbinit,
+ test.code/t01/test01a.cob, test.code/t01/test01b.cob,
+ test.code/t02/.gdbinit, test.code/t03/.gdbinit,
+ test.code/t11/test11.cob, test.code/t15/Makefile,
+ test.code/t15/Readme.txt, test.code/t15/test15f.c,
+ test.code/t15/test15i.cob, test.code/t15/test15j.cob: Added test
+ code for 'CALL BY CONTENT' Added new rpm spec file. Updated
+ Changelog LSM STATUS files.
+
+2001-02-08 00:15 rpragana
+
+ * ChangeLog, utils/dispcv.tcl: Added tool (dispcv.tcl) to convert
+ old "DISPLAY (X, Y) ..." statements to our syntax.
+
+2001-02-07 20:38 jmnoeth
+
+ * lib/cobmove.c: On 2/8/2001 changed cobmove.c to fix a bug that
+ caused the results of a 'Move all' to a signed numeric field not to
+ be signed. Jim Noeth
+
+2001-02-07 20:38 jmnoeth
+
+ * compiler/htcobgen.c:
+ On 2/8/2001, changed htcobgen.c to fix the problem with
+ display/accept of fields with occurs. The problem caused the
+ compiler to get a segmentation fault. The change was to the
+ gen_display module to include a check for sy->litflg != 2 -
+ otherwise it thought that it was doing screen section
+ display/accept. Jim Noeth
+
+2001-02-07 14:43 rpragana
+
+ * ChangeLog, utils/viscomp.tcl: Enhancements in viscomp.tcl tool.
+
+2001-02-07 12:44 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Solved problem with "decimals" in
+ variable definition. (as reported by Stewart)
+
+2001-02-07 11:10 rpragana
+
+ * compiler/scan.l: Corrected LISTSEP "," scanning.
+
+2001-02-07 08:16 dessex
+
+ * compiler/Makefile.in, compiler/createver.sh, compiler/htcobol.y,
+ lib/mcmath.c, test.code/t01/test01b.cob, test.code/t11/Makefile,
+ test.code/t11/test11.cob, test.code/t24/Makefile,
+ test.code/t24/test24.cob: #Updated file OPEN/CLOSE statements to
+ the COBOL 85 standard, without the extra options.
+
+2001-02-07 01:03 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, utils/viscomp.tcl: Fixed bugs
+ related to literal sinthetizing, when both sign and decimal part
+ were present. Also fixed the is_numeric() function to check
+ subscripted vars too.
+
+2001-02-06 12:04 rpragana
+
+ * compiler/htcobgen.c, test.code/t24/Makefile,
+ test.code/t24/test24.cob: Fixed bugs with EVALUATE (Thanks David
+ for reporting).
+
+2001-02-06 05:40 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/htcoblib.h, lib/mcmath.c,
+ test.code/Readme.txt, test.code/t01/.gdbinit,
+ test.code/t01/Makefile, test.code/t01/Readme.txt,
+ test.code/t01/r.sh, test.code/t01/test01.cob,
+ test.code/t01/test01a.cob, test.code/t01/test01b.cob,
+ test.code/t01/test01c.cob, test.code/t01/test01d.cob,
+ test.code/t01/test01e.cob, test.code/t24/test24.cob: Updated math
+ verbs to COBOL 85 standard.
+
+2001-02-06 01:39 rpragana
+
+ * ChangeLog, utils/viscomp.tcl: Added display of mid-of-rule
+ actions in viscomp.tcl, so we don't need to have a listing
+ (parser.y/.c) for looking at them.
+
+2001-02-05 23:32 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Modified EVALUATE
+ statement to allow string (non-numeric) comparations.
+
+2001-02-05 17:49 rpragana
+
+ * ChangeLog, utils/viscomp.tcl: Updates on viscomp.tcl (breakpoints
+ added) to show more details of parsing.
+
+2001-02-05 15:41 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ lib/cobmove.c: Changes to allow pictures greater than 255, also
+ changes in cob_move to make moves of fields with length greater
+ than 255.
+
+2001-02-04 22:33 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Added
+ syntax/semantics for EVALUATE with ßeveral WHEN cases with the same
+ action. (requested by David Essex)
+
+2001-02-04 18:43 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Fixed bug with offset calculation
+ at linkage section.
+
+2001-02-04 16:04 rpragana
+
+ * compiler/htcobgen.c: Again removing a bug in evaluate statement
+ (my previous upgrade mysteriously vanished...).
+
+2001-02-03 23:44 rpragana
+
+ * utils/viscomp.tcl: Small bug fixes in the visual parser tool.
+
+2001-02-03 22:44 rpragana
+
+ * utils/viscomp.tcl: Added lval stack viewing to viscomp.tcl.
+
+2001-02-03 19:15 rpragana
+
+ * utils/: Readme.txt, viscomp.tcl: Added a developers's tool,
+ viscomp.tcl that works as a visual parser and a gdb frontend.
+
+2001-02-03 16:08 rpragana
+
+ * compiler/: Makefile.in, htcobgen.c: Modified htcobol.c definition
+ to have it's line numbers known to gdb. (I need that because of my
+ visual debugger. Anyway, it does not change nothing more) Removed
+ also a small bug with refmods that were not allowing the code
+ generated in some cases to compile.
+
+2001-01-31 22:24 rpragana
+
+ * compiler/htcobgen.c: Removed well hidden bug in EVALUATE
+ statement. (thanks to Eric Oliveira and Afonso Bione for reporting
+ that)
+
+2001-01-25 15:19 rpragana
+
+ * ChangeLog, lib/fileio.c, test.code/tdb03/Makefile: Modified
+ lib/fileio.c to eliminate if's with errno, because this variable is
+ set only _after_ a system call is made. It was making the compiler
+ return the same error as the previous system call on cob_open, for
+ instance: if two files were opened, the first of them in error, the
+ second would return the same error condition.
+
+2001-01-24 23:57 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t00/.gdbinit, test.code/t09/.gdbinit,
+ test.code/t09/test09.cob: Added code to validate a variable
+ (non-terminal gname) so it will report an error when other objects
+ are used instead. Example: "display filesel" (where filesel was
+ declared in a "select").
+
+2001-01-24 23:47 andrewcza
+
+ * STATUS, lib/fileio.c, test.code/t10/test10.cob,
+ test.code/t12/test12ls.cob:
+ Change the READ and WRITE statement for LINE SEQUENTIAL IO. The
+ Read Statement will now read a variable length record and pad it
+ with spaces upto the record length. The Write Statement will
+ remove all the spaces at the end of a line before writing it out.
+
+ The Line Delimiter is NewLine for all Line Sequential IO.
+
+ Line Sequential files can No longer be opened in IO Mode and as a
+ result REWRITE is no longer valid for Line Sequential files.
+
+2001-01-23 17:16 rpragana
+
+ * test.code/tdb03/: cgi-util.c, form.html, tdb03.cob, tdb03a.c:
+ Modified again cgi-util and CGI example for a clever way to pass
+ strings from cobol to C.
+
+2001-01-23 14:56 rpragana
+
+ * ChangeLog, test.code/tdb03/form.html, test.code/tdb03/tdb03.cob:
+ Finished my toy CGI/postgresql example program.
+
+2001-01-22 19:39 rpragana
+
+ * compiler/htcobgen.c, test.code/tdb03/tdb03.cob: Fixed a bug in
+ gen_display that dumped core when processing refmoded variables.
+
+2001-01-22 16:16 rpragana
+
+ * ChangeLog, lib/fileio.c, test.code/tdb03/Makefile,
+ test.code/tdb03/cgi-util.c, test.code/tdb03/cgi-util.h,
+ test.code/tdb03/form.html, test.code/tdb03/tdb03.cob,
+ test.code/tdb03/tdb03a.c: Added a simple CGI processing example,
+ with an adapted C library (GPLed).
+
+2001-01-22 10:57 rpragana
+
+ * lib/fileio.c: Fixed bugs with cob_read library function, for
+ reading line sequential files.
+
+2001-01-21 18:31 rpragana
+
+ * test.code/tdb02/: tdb02.cob, tdb02a.c: Improved API for
+ interfacing to postgresql.
+
+2001-01-20 23:50 rpragana
+
+ * ChangeLog, test.code/tdb02/Makefile, test.code/tdb02/loja.sql,
+ test.code/tdb02/tdb02.cob, test.code/tdb02/tdb02a.c: Added
+ PostgreSQL interface example and supporting C code, using libpq.
+ The example files, including 'loja.sql' may be found at
+ test.code/tdb02.
+
+2001-01-19 20:22 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: More changes to fix the bug with
+ signed literals.
+
+2001-01-18 19:57 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Small changes at gen_display to
+ allow an empty display statement, to advance to a new line (needed
+ in CGI programming).
+
+2001-01-16 08:50 rpragana
+
+ * compiler/htcobgen.c, lib/htcoblib.h: Fixed problem with struct
+ file_desc size computation, that caused crashes when opening
+ several indexed files.
+
+2001-01-12 21:21 rpragana
+
+ * lib/screenio.c, test.code/tgui01/testgui05.c: Fixed bug in
+ accept_curses library function. It was truncating 1 char at the end
+ of input.
+
+2001-01-07 17:12 rpragana
+
+ * ChangeLog, test.code/tgui01/Readme.txt: Added instructions for
+ testing the example tgui01/testgui04.
+
+2001-01-07 16:48 rpragana
+
+ * test.code/tgui01/: Makefile, testgui01.cob, testgui04.cob,
+ testgui05.c, testgui06.cob: dded more example interfaces
+ tcl<-->cobol, including an interpreter main loop written in cobol,
+ and how to call cobol from tcl, by creating a tcl command.
+
+2001-01-06 21:15 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l: Changed scanner and parser for not confusing
+ expressions like "X+2" as two tokens "X" and "+2" (a literal signed
+ integer). Now it is correctly parsed, and even expressions like
+ X++1 ("X" "+" "+1") work.
+
+2001-01-06 08:58 dessex
+
+ * test.code/: Readme.txt, t27/Makefile, t27/Readme.txt, t27/r.sh,
+ tgui01/Makefile, tgui01/Readme.txt, tgui01/r.sh: Updated Readme.txt
+ and r.sh files to t27 and tgui01 directories.
+
+2001-01-05 22:49 rpragana
+
+ * test.code/tgui01/: cobtools.tcl, testgui01.cob, testgui02.c,
+ testgui03.tcl, testgui03a.tcl: Incorporated cobtools.tcl script
+ into C module to avoid "source" command in tcl scripts (speed
+ enhancement).
+
+2001-01-05 21:34 rpragana
+
+ * test.code/tgui01/: cobtools.tcl, testgui01.cob, testgui02.c,
+ testgui03.tcl, testgui03a.tcl: Modified the example GUI for a more
+ practical multi-forms application.
+
+2001-01-05 20:21 rpragana
+
+ * ChangeLog, test.code/tgui01/testgui02.c,
+ test.code/tgui01/testgui03.tcl: Improvements on the interface
+ tcl/tk and passing arguments from Cobol to tcl.
+
+2001-01-05 18:59 rpragana
+
+ * ChangeLog, test.code/t27/sales.dat, test.code/t27/t27.cob,
+ test.code/tgui01/Makefile, test.code/tgui01/testgui01.cob,
+ test.code/tgui01/testgui02.c, test.code/tgui01/testgui03.tcl:
+ Example GUI for data entry from tcl/tk library.
+
+2000-12-19 03:53 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, info/Compiler-Overview.txt,
+ test_suite/test.baseline, test_suite/call_tests/ptest01.cob,
+ test_suite/call_tests/stest01.cob,
+ test_suite/call_tests/stest03.cob,
+ test_suite/call_tests/stest9xx.c: Added code for call by content
+ for variables.
+
+2000-12-18 13:06 rpragana
+
+ * ChangeLog, compiler/htcobol.y, compiler/scan.l,
+ test.code/t27/Makefile, test.code/t27/sales.dat,
+ test.code/t27/t27.cob: Added report statements and expanded the t27
+ test program for reports.
+
+2000-12-09 13:55 bgiroud
+
+ * INSTALL, TODO, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, lib/cobmove.c,
+ lib/htcoblib.h, test_suite/format_tests/test01.cob,
+ test_suite/search_tests/test20a.cob: Added JUST RIGHT in data
+ clause.
+
+2000-12-08 15:09 dessex
+
+ * tinycobol.lsm, cobpp/cobpp.c, cobpp/scanner.l,
+ cobpp/copybooks/fTEST02D.cpy, cobpp/test.code/ft3.cob,
+ compiler/htglobals.c: Added fix for pre-processor and htglobals
+ bugs.
+
+2000-12-06 23:16 rpragana
+
+ * test.code/t27/: Makefile, t27.cob: Added test.code/t27, a report
+ section example.
+
+2000-12-06 23:09 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y, scan.l: Fixed parsing of report
+ section.
+
+2000-12-06 17:20 rpragana
+
+ * compiler/htcobgen.c, test.code/t08/test08g.cob,
+ test.code/t08/test08u.cob: Added SORT-RETURN register for SORT
+ GIVING/USING return statuses.
+
+2000-12-05 23:47 andrewcza
+
+ * lib/fileio.c, test.code/t08/test08g.cob:
+ Implement SORT GIVING.
+
+2000-12-05 23:32 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Fixed bug with the report section
+ (it may be optional, of course).
+
+2000-12-05 22:21 rpragana
+
+ * compiler/: htcobol.y, scan.l: First steps at the cobol "report
+ generator" facility. Only parsing for now.
+
+2000-12-05 22:10 dessex
+
+ * STATUS: Updated STATUS file.
+
+2000-12-05 21:51 dessex
+
+ * ANNOUNCE, ChangeLog, INSTALL, tinycobol.lsm, cobpp/createver.sh,
+ compiler/createver.sh, info/rpm/tinycobol-0.4.spec: Added new rpm
+ spec file. Updated Changelog LSM files.
+
+2000-12-04 01:22 dessex
+
+ * cobpp/Readme.txt, cobpp/scanner.l, cobpp/copybooks/fTEST02D.cpy,
+ cobpp/test.code/ft3.cob, compiler/htglobals.c,
+ compiler/htglobals.h, test.code/t02/Makefile: Added fix for
+ copybook tab handling in the pre-processor. Improved pre-processor
+ exec call to better fit main cmd line.
+
+2000-12-03 20:00 dessex
+
+ * INSTALL, Makefile.in, configure, configure.in, htconfig.h.in,
+ tinycobol.lsm, cobpp/AUTHORS, cobpp/COPYING, cobpp/COPYRIGHT,
+ cobpp/Makefile.in, cobpp/Readme.txt, cobpp/cobpp.c, cobpp/cobpp.h,
+ cobpp/createver.sh, cobpp/parser.y, cobpp/scanner.l,
+ cobpp/copybooks/TEST02.cpy, cobpp/copybooks/TEST02A.cpy,
+ cobpp/copybooks/TEST02B.cpy, cobpp/copybooks/TEST02C.cpy,
+ cobpp/copybooks/fTEST02.cpy, cobpp/copybooks/fTEST02A.cpy,
+ cobpp/copybooks/fTEST02B.cpy, cobpp/copybooks/fTEST02C.cpy,
+ cobpp/test.code/Makefile, cobpp/test.code/Readme.txt,
+ cobpp/test.code/ft1.cob, cobpp/test.code/ft2.cob,
+ cobpp/test.code/ft3.cob, cobpp/test.code/r.sh,
+ cobpp/test.code/t1.cob, cobpp/test.code/t2.cob,
+ compiler/Makefile.in, compiler/htglobals.c, compiler/htglobals.h,
+ test.code/Makefile.in, test.code/copybooks/Makefile.in,
+ test.code/t02/TEST02.cpy, test.code/t02/TEST02A.cpy,
+ test.code/t02/TEST02B.cpy, test.code/t02/Test02.cpy,
+ test.code/t13/include1.cpy, test.code/t13/include2.cpy: Added the
+ pre-processor. Removed tabs from copybooks.
+
+2000-12-03 01:38 andrewcza
+
+ * lib/fileio.c:
+ Implement SORT USING. See Test08u.cob for an Example
+
+2000-12-01 00:25 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Changed
+ gen_close_sort, so gen_sort_using/giving find a completed sort
+ description to make available to the runtime library routines.
+
+2000-11-30 21:35 andrewcza
+
+ * lib/fileio.c:
+ Start writing cob_sort_using routine
+
+2000-11-28 01:44 rpragana
+
+ * ChangeLog, compiler/htcobol.y: Removed a bug with sort
+ using/giving code generation.
+
+2000-11-27 11:56 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Modifications on the arguments
+ passed to cob_sort_using and cob_sort_giving, as requested by
+ Andrew.
+
+2000-11-24 14:27 andrewcza
+
+ * lib/fileio.c, test.code/t08/test08u.cob:
+ Define cob_sort_using and cob_sort_giving paramaters. Modify
+ test08u.cob to have two files in the sort using.
+
+2000-11-20 03:37 dessex
+
+ * configure, configure.in: Added bug fix in cofigure script for db
+ library version check in header db.h.
+
+2000-11-18 22:31 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/fileio.c,
+ test.code/t08/test08g.cob, test.code/t08/test08ug.cob: Changes to
+ fix some coredumps found by Andrew in the new SORT verb
+ implementation. Thanks Andrew.
+
+2000-11-18 17:26 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h: Added parameters in code generation of
+ gen_sort_using and gen_sort_giving (SORT verb).
+
+2000-11-18 05:55 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcoboly.h, lib/cobmove.c,
+ test.code/t20/test20a_at.cob, test_suite/cobol_test.pl,
+ test_suite/test.baseline, test_suite/format_tests/test.script,
+ test_suite/format_tests/test01c.cob,
+ test_suite/format_tests/test03c.cob,
+ test_suite/format_tests/test04.cob,
+ test_suite/format_tests/test06a.cob,
+ test_suite/search_tests/TCtable1.cpy,
+ test_suite/search_tests/test.script,
+ test_suite/search_tests/test20a.cob: Added semantics for RefMod's,
+ test example for search statement. Cleaned-up format_tests for new
+ behavior of display statement. Updated automated test baseline.
+
+2000-11-18 00:00 andrewcza
+
+ * lib/fileio.c:
+ Change fileio.c to return file status 35 is the file to be opened
+ does not exist.
+
+2000-11-17 22:25 andrewcza
+
+ * test.code/t08/: Makefile, test08g.cob, test08u.cob, test08ug.cob:
+
+ Add the Test code for testing SORT USING and SORT GIVING. The
+ library code still needs to be written and so these programs will
+ not link yet.
+
+2000-11-17 21:41 andrewcza
+
+ * compiler/htcobol.y:
+ Change htcobol.y to correct a problem where it was not correctly
+ calling gen_read_next and gen_return. Added logic to determine
+ which to call. This resulted in SORT not working correctly as well
+ as READ NEXT with ALTERNATE KEYS not working correctly.
+
+2000-11-17 00:28 andrewcza
+
+ * compiler/htcobol.y, test.code/t08/test08.cob:
+ Change htcobol.y to fix gen_release so the sort will work again.
+ Currently only SORT -- RELEASE and RETURN work. Use test08.cob for
+ testing ie make gen_data ./gen_data >Raw.dat ./test08
+
+2000-11-16 22:07 andrewcza
+
+ * lib/fileio.c, test.code/t19/test19b.cob:
+ Fix Open statement in fileio.c to return a file status if the file
+ cannot be opened correctly.
+
+ Modifiled test19b.cob to show how FILE STATUS should be used.
+
+2000-11-12 10:40 dessex
+
+ * compiler/: htcobgen.c, htcobol.y: Added lower case to PIC clause
+ syntax. Added optional 'WITH' to 'DISPLAY ... WITH NO ADVANCING'
+ statement.
+
+2000-11-11 19:59 dessex
+
+ * test.code/: Readme.txt, config/COB.build.tmpl.in,
+ config/COB.build.tmpl.t.in, t16/Makefile, t16/Makefile.new,
+ t16/r.sh, t16/test16.cob: Added test program for 'GO TO ...
+ DEPENDING ON ...' statement.
+
+2000-11-11 14:55 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h, scan.l: Added GO TO
+ ... DEPENDING.
+
+2000-11-10 22:02 rpragana
+
+ * compiler/htcobgen.c: Added code to generate an error, when no
+ file name was given both in FD and SELECT, as asked by David Essex.
+
+2000-11-10 19:45 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test.code/t19/Makefile, test.code/t19/Readme.txt,
+ test.code/t19/test19b.cob: Added external file name non-standard
+ extensions in SELECT and FD statements.
+
+2000-11-09 01:00 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Fixed screen items with value but
+ without picture. The picture is synthesized from the "value"
+ literal given.
+
+2000-11-08 22:38 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y: Still more bugfixes at screen
+ section. Removed zero sized storage alloc (.space). Modified parser
+ to allow "TO" without "FROM" in screen section items.
+
+2000-11-08 22:19 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y: Several
+ bugfixes at screen section. Now it accepts items without filler or
+ other explicit variable declaration.
+
+2000-11-08 12:06 rpragana
+
+ * compiler/htcobol.y: Minor changes at screen section parsing to
+ allow screen items (BLANK SCREEN) without explicit storage
+ declaration.
+
+2000-11-08 03:16 dessex
+
+ * Makefile.in, configure, configure.in, test.code/Makefile,
+ test.code/Makefile.0, test.code/Makefile.in: Updated configure
+ script to generate Makefile in test.code directory.
+
+2000-11-08 00:49 dessex
+
+ * INSTALL, configure, configure.in, htconfig.h.in: Added tests for
+ db library names libdb libdb1 libdb2 in configure script.
+
+2000-11-06 22:31 dessex
+
+ * ChangeLog, test.code/Readme.txt, test.code/t02/test02a.cob,
+ test.code/t26/Readme.txt, test.code/t26/r.sh: Updated Changelog
+ file. Added r.sh Readme.txt file in test.code/t26.
+
+2000-11-04 05:51 bgiroud
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Corrected
+ detecttion of subscripted variable for search statement.
+
+2000-11-04 02:24 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/scan.l,
+ lib/screenio.c, test.code/t26/test26.cob: Changes for "LINE ...
+ POSITION ..." in DISPLAY and ACCEPT statements, with arbitrary
+ expressions as coordinates. Removed old syntax "DISPLAY (R, C)
+ ...".
+
+2000-11-03 02:28 rpragana
+
+ * test.code/t26/: Makefile, test26.cob: Added test.code/t26 to
+ exercise display/accept with cursor positioning.
+
+2000-11-03 02:10 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/screenio.c:
+ Restaured "display (row, col) ..." and "accept (row, col) ..."
+ syntax, and added library routine to make it run with ncurses.
+
+2000-10-31 17:25 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/ptest04.cob,
+ test_suite/call_tests/test.script: Modified grammar and scanner for
+ RefMod's as per an idea from Rildo. Added first intrinsic
+ functions (Length and Ord).
+
+2000-10-24 23:38 dessex
+
+ * configure, configure.in: Added bug fix for configure script.
+
+2000-10-23 23:10 dessex
+
+ * ANNOUNCE, compiler/createver.sh, info/rpm/tinycobol-0.3.spec:
+ Updated ANNOUNCE file. Added tinycobol-0.3.spec file.
+
+2000-10-22 22:58 dessex
+
+ * ChangeLog: Updated Changelog file.
+
+2000-10-22 22:44 dessex
+
+ * STATUS, configure, configure.in, htconfig.h.in, tinycobol.lsm,
+ compiler/scan.l, lib/screenio.c, test.code/t15/Makefile,
+ test.code/t15/test15.cob, test.code/t15/test15b.c,
+ test.code/t15/test15e.cob, test.code/t15/test15f.c,
+ test.code/t15/test15g.cob, test.code/t15/test15h.cob,
+ test.code/t22/test22.cob: Added test for ncurses library color_set
+ function in cofigure script. Added test15g.cob test15h.cob to test
+ static variables. Updated Changelog LSM STATUS files.
+
+2000-10-19 17:39 dessex
+
+ * compiler/scan.l: Removed debug trace printf in lex_fgets.
+
+2000-10-19 16:54 dessex
+
+ * compiler/htcobgen.c, compiler/scan.l, test.code/t02/Makefile,
+ test.code/t02/test02.cob, test.code/t02/test02a.cob: Added bug fix
+ for SEARCH ALL statement.
+
+2000-10-12 00:05 dessex
+
+ * test.code/: t02/test02.cob, t21/test21.cob, t25/Makefile,
+ t25/test25.cob, t25/test25a.cob, t25/test25b.c: Added fix for tests
+ for static and shared libraries.
+
+2000-10-11 16:38 bgiroud
+
+ * compiler/: htcobgen.c, htcoboly.h, scan.l: Temporary correction
+ for RefMod's before following an idea from Rildo.
+
+2000-10-11 03:17 bgiroud
+
+ * compiler/: htcobgen.c, htcobol.y, scan.l: Added first phase of
+ syntax for RefMod and intrinsic functions.
+
+2000-10-10 20:44 dessex
+
+ * test.code/: Readme.txt, t24/test24.cob, t25/Makefile,
+ t25/Readme.txt, t25/r.sh, t25/test25.cob, t25/test25a.cob,
+ t25/test25b.c: Added tests for static and shared libraries.
+
+2000-10-10 16:45 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/scan.l: Minor fixes for gen_when_check (EVALUATE
+ statement). Added tokens for REPORT SECTION.
+
+2000-10-10 13:25 rpragana
+
+ * compiler/: htcobgen.c, htcoboly.h: Finished code generating for
+ EVALUATE statement. Now it checks for compatible selection
+ subjects/objects and generate code for all cases.
+
+2000-10-10 01:08 jmnoeth
+
+ * lib/basicio.c: Fixed logic to allow both period and comma as
+ decimal point.
+
+ Also, put hypen in front of displayed number if negative.
+
+2000-10-10 01:08 jmnoeth
+
+ * lib/cobmove.c: Added logic to allow scaling and precision with
+ binary integers.
+
+2000-10-10 00:03 rpragana
+
+ * compiler/htcobgen.c: EVALUATE implementation: tests with ranges
+ (value1 THRU value2) fixed.
+
+2000-10-09 23:41 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h: EVALUATE implementation progress. Some tests
+ already working, much yet to be done.
+
+2000-10-09 17:05 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test.code/t24/Makefile: Implemented part of
+ EVALUATE code generation.
+
+2000-10-08 21:27 dessex
+
+ * tinycobol.lsm, test.code/t24/test24.cob: Added another test to
+ the EVALUATE test code. Added new LSM file.
+
+2000-10-08 10:01 rpragana
+
+ * compiler/htcobol.y, test.code/t24/test24.cob: Modified EVALUATE
+ parsing, so all test24 (Thanks David) work.
+
+2000-10-08 02:54 dessex
+
+ * test.code/: Readme.txt, t24/Makefile, t24/Readme.txt, t24/r.sh,
+ t24/test24.cob: Added EVALUATE test code
+
+2000-10-08 00:01 rpragana
+
+ * ChangeLog, compiler/htcobol.y, compiler/scan.l: Introduced
+ EVALUATE syntax.
+
+2000-10-06 16:06 bgiroud
+
+ * compiler/htcobgen.c, test_suite/call_tests/ptest02.cob: Recovered
+ the call by value of long long.
+
+2000-10-05 16:07 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test.code/t08/Makefile: Added "sort...using...giving..." syntax and
+ code generation, as requested by Andrew. (the other "sort" with
+ input/output procedures were already implemented). Changes to the
+ start_record (at struct file_desc), now present in all file
+ organizations.
+
+2000-10-04 21:34 dessex
+
+ * ChangeLog, compiler/htcobgen.c, test.code/t15/test15e.cob,
+ test.code/t15/test15f.c: Modified test15e for retrun variable
+ tests. Updated Changelog file.
+
+2000-10-04 03:16 bgiroud
+
+ * compiler/htcobol.y, test_suite/cobol_test.pl,
+ test_suite/seqio_tests/foobar.dat,
+ test_suite/seqio_tests/input.dat,
+ test_suite/seqio_tests/lineseq.dat,
+ test_suite/seqio_tests/nofile.dat,
+ test_suite/seqio_tests/test06.dat: Oops! Forgot to add the
+ definition of token RETURNING. Some cleanup.
+
+2000-10-04 02:54 bgiroud
+
+ * Makefile.in, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l,
+ test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/stest9xx.c: Added RETURNING clause for CALL
+ statement:only for short and long for the time being. Changed the
+ order of cleaning in cleanall target.
+
+2000-10-03 14:09 rpragana
+
+ * lib/mcmath.c: Modified mcmath.c (library) to handle various kind
+ of "comp" data.
+
+2000-10-03 13:38 rpragana
+
+ * compiler/htcobgen.c: Fixed stabs for "long long" (comp with 8
+ bytes) data types.
+
+2000-10-03 12:20 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Fixed most stabs generation,
+ (only comp with 8 bytes remain to be fixed) both for static and
+ stack-based variables.
+
+2000-10-03 09:54 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Yet another little optimization
+ in gen_subscripted(), to remove a "pushl %eax" followed by "popl
+ %eax".
+
+2000-10-03 08:53 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Modified gen_subscripted to
+ generate an optimized code for indexes/subscripts computations
+ (with a kind of "lazy" generation).
+
+2000-10-02 18:20 bgiroud
+
+ * compiler/htcobgen.c, test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/stest9xx.c: Completed code for call by value
+ for long long literal and variable.
+
+2000-09-30 01:30 dessex
+
+ * test.code/: t00/r.sh, t11/Makefile, t11/test11.cob,
+ t15/test15e.cob, t15/test15f.c, t17/Makefile, t18/Makefile,
+ t21/test21.cob: Modified test15e for variable length COMP fields.
+
+2000-09-30 00:30 rpragana
+
+ * compiler/htcobgen.c: Fixed bug at value_to_eax(), as reported by
+ DEssex.
+
+2000-09-29 21:55 rpragana
+
+ * compiler/htcobgen.c: Fixed a "movsll" generated instruction as
+ reported by David Essex (though I didn't find where, I found why).
+
+2000-09-29 17:47 bgiroud
+
+ * compiler/htcobgen.c: Corrected dumping twice the working storage.
+
+2000-09-29 17:33 bgiroud
+
+ * compiler/htcobgen.c, info/Compiler-Overview.txt,
+ test_suite/Makefile, test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/stest9xx.c: Fixed bug of RETURN-CODE not
+ being fetched from the static segment on return from main.
+ Corrected some code in load_adress to load in %eax and not %ebx.
+ Added Makefile in test_suite for better handling of regression
+ tests.
+
+2000-09-28 21:28 andrewcza
+
+ * lib/fileio.c, test.code/t18/test18.cob:
+ Finish START VERB for Indexed IO.
+
+2000-09-28 01:01 dessex
+
+ * AUTHORS, ChangeLog, info/rpm/tinycobol-0.2.spec,
+ test.code/Makefile: Added new spec file Updated Changelog file.
+
+2000-09-27 02:52 dessex
+
+ * utils/cobpp/Makefile.in: Fixed bug in Makefile.in in util/cobpp.
+
+2000-09-25 11:11 rpragana
+
+ * compiler/htcobgen.c, test.code/t02/test02.cob: Replaced movb -->
+ movsbl (sign extending to long), movw --> movswl at several code
+ generating places, so tables with variable-sized binary types
+ (comp) works again.
+
+2000-09-24 02:34 rpragana
+
+ * compiler/htcobgen.c, lib/cobmove.c: Fixed bugs with
+ variable-sized binary (comp) translating some statements
+ (movl,addl,subl,...) to movb,movw,movl, acoording the size. There
+ were bugs also introduced with static memory allocation ('leal' is
+ not the same as 'movl'a). Changes to cob_move to cope with
+ variable-sized binary objects.
+
+2000-09-23 22:57 dessex
+
+ * compiler/createver.sh, compiler/htcobgen.c, compiler/htcobol.y,
+ lib/general.c, test.code/t08/Makefile, test.code/t22/Makefile,
+ test.code/t23/Makefile: Moved 'do_scrio_finish' call from general.c
+ to htcobgen.c. This removed curses library requirement from all but
+ programs using a 'SCREEN SECTION.
+
+2000-09-23 20:08 dessex
+
+ * ANNOUNCE, test.code/t08/Makefile, test.code/t08/Raw.dat,
+ test.code/t08/Readme.txt, test.code/t18/Readme.txt,
+ test.code/t23/Makefile, test.code/t23/Readme.txt,
+ test.code/t23/r.sh, test.code/t23/test23.cob: Removed large data
+ file Raw.dat.
+
+2000-09-23 18:14 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, test.code/t12/Makefile: Fixed bug
+ with wrong alternate key offset, introduced when we changed to
+ static variables.
+
+2000-09-22 12:44 rpragana
+
+ * compiler/: htcobgen.c, scan.l: More bugfixes for stabs.
+
+2000-09-22 00:15 rpragana
+
+ * compiler/: htcobol.y, scan.l: Changed back stabs_line() call. It
+ works only (breakpoints or single steps) within a "sentence", not a
+ "statement" as it should. The reason is we have to call
+ stabs_line() _before_ the corresponding code generation for each
+ line in procedure division. It was broken when "sentence"
+ non-terminal was added. This is a temporary solution!!
+
+2000-09-21 23:18 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/scan.l,
+ lib/htcoblib.h, test.code/t02/Makefile, test.code/t02/test02.cob,
+ test.code/t21/Makefile, test.code/t22/Makefile: Many mysterious bug
+ fixes. Stabs now working again. Static memory allocation almost
+ working.
+
+2000-09-21 01:58 jmnoeth
+
+ * test.code/Readme.txt: Added t23 for screenIO stuff
+
+2000-09-21 01:58 jmnoeth
+
+ * lib/: cobmove.c, general.c, htcoblib.h, screenio.c: changed
+ covmove.c to incorporate the data type DTYPE_ACCEPT_DISPLAY to be
+ handled the same as for DTYPE_ALPHANUMERIC
+
+ changed screenio.c to add the screen oriented I/O capabilities
+
+ changed general.c to reset the screen mode upon stop run.
+
+ Changed htcoblib.h to add data type DTYPE_ACCEPT_DISPLAY and also
+ add the prototypes for the screenio.c routines.
+
+2000-09-21 01:58 jmnoeth
+
+ * test.code/t23/: Makefile, r.sh, test23.cob: The files for test23,
+ the screen IO test stuff
+
+2000-09-21 01:58 jmnoeth
+
+ * lib/screenio.h: Added screenio.h
+
+2000-09-21 01:54 jmnoeth
+
+ * compiler/htcobgen.c: Changed htcobgen.c for screen oriented I/O.
+ Changed to generate calls Inline to describe each field to be
+ displayed or accepted.
+
+2000-09-20 17:23 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/ptest03.cob,
+ test_suite/call_tests/stest02.cob,
+ test_suite/call_tests/stest9xx.c:
+ Phase 2 of static variables (i.e. static but still initialized at
+ run time). Readded the possibility to have a SPECIAL-NAMES clause
+ empty.
+
+2000-09-19 17:25 rpragana
+
+ * ChangeLog, info/Compiler-Overview.txt: Extended our
+ info/Compiler_Overview.txt to include some notes on memory
+ allocation.
+
+2000-09-19 02:59 rpragana
+
+ * compiler/htcobgen.c, test.code/t15/test15e.cob: Fixed problem in
+ pic_digits() at htcobgen.c for computing digits of literals.
+
+2000-09-18 21:21 rpragana
+
+ * compiler/htcobgen.c: Modified type 'B' (binary) data types to
+ handle variable-sized storage, depending on picture: 1, 2, 4 or 8
+ bytes (this last a "long long" type).
+
+2000-09-18 20:42 andrewcza
+
+ * lib/fileio.c, test.code/t18/Makefile, test.code/t18/test18.cob,
+ test.code/t18/test18i.cob, test.code/t18/test18r.cob:
+ Finish of the implementation of the START VERB for Relative files.
+
+2000-09-17 22:20 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, lib/htcoblib.h,
+ test.code/t08/Raw.dat: Modified struct file_desc to add
+ start_record pointer, as requested by Andrew, to implement the
+ start verb in some conditions. The pointer is initialized to NULL.
+
+2000-09-17 06:39 dessex
+
+ * STATUS, compiler/createver.sh, compiler/scan.l, lib/cobmove.c,
+ lib/htcoblib.h, lib/screenio.c, test.code/t01/Makefile,
+ test.code/t02/Makefile, test.code/t02/test02a.cob,
+ test.code/t15/Makefile, test.code/t15/test15e.cob,
+ test.code/t16/Makefile, test.code/t16/Makefile.new: Added USAGE IS
+ PACKED-DECIMAL clauses to scanner. Moved decimal_char from
+ screenio.c to cobmove.c, thus removing curses library requirement.
+
+2000-09-17 01:01 rpragana
+
+ * ChangeLog, lib/basicio.c: Changes in display library function, so
+ we don't need to link with ncurses, when screen i/o is not needed.
+ Basically, we need decimal_char (setup at compile time).
+
+2000-09-16 22:54 dessex
+
+ * compiler/scan.l, lib/cobmove.c, test.code/t02/Makefile,
+ test.code/t02/r.sh, test.code/t02/test02.cob,
+ test.code/t02/test02a.cob, test.code/t15/Makefile,
+ test.code/t19/test19a.cob, test.code/t22/test22.cob: Added sample
+ test program test02a.cob. Added USAGE IS BINARY, USAGE IS COMP-5
+ clauses to scanner.
+
+2000-09-15 21:52 rpragana
+
+ * lib/basicio.c: Minor corrections to the "display" library
+ function.
+
+2000-09-15 21:24 rpragana
+
+ * compiler/htcobgen.c: Fixed problem with compressed picture
+ pointer.
+
+2000-09-15 00:20 rpragana
+
+ * compiler/htcobgen.c, lib/basicio.c, lib/htcoblib.h,
+ test.code/t01/Makefile, test.code/t02/Makefile: Changes at the
+ display library function for handling binary data items comp and
+ comp-3.
+
+2000-09-14 19:37 rpragana
+
+ * lib/mcmath.c: Fixed bugs at check_condition (lib/mcmath.c) for
+ alpha 88-conditionals.
+
+2000-09-14 18:01 dessex
+
+ * lib/basicio.c, test.code/t19/Makefile, test.code/t19/r.sh,
+ test.code/t19/test19a.cob, test.code/t22/test22.cob: Updated sample
+ test program test09a.cob, test22.cob. Fixed compiler warning in
+ RTL module basicio.c.
+
+2000-09-14 14:25 rpragana
+
+ * ChangeLog, lib/basicio.c: Modified fgets call in lib/basicio.c.
+ It was inserting the newline '\n' char at the end of buffer, so
+ many errors came from runtime checks.
+
+2000-09-14 13:48 rpragana
+
+ * compiler/htcobol.y: Removed all reduce/reduce conflicts, all of
+ them caused by an error check in the "variable" nonterminal.
+
+2000-09-13 21:44 rpragana
+
+ * compiler/htcobol.y, compiler/scan.l, test.code/t06/Makefile,
+ test.code/t19/test19a.cob: Eliminated a reduce/reduce conflict and
+ extended the conditionals for allowing stuff like IF A > B OR < D
+ OR = E ...
+
+2000-09-13 11:32 rpragana
+
+ * compiler/htcobol.y, test.code/t06/test06.cob,
+ test.code/t13/test13.cob: Bug fixed at arithmetic expressions.
+ Changes at some test code.
+
+2000-09-12 23:47 dessex
+
+ * ANNOUNCE, ChangeLog, STATUS, tinycobol.lsm,
+ test.code/t22/test22.cob: Updated sample test program in
+ test.code/t22, and ChangeLog.
+
+2000-09-12 13:27 rpragana
+
+ * ChangeLog, lib/mcmath.c: Modified check_condition source at
+ lib/mcmath.c. It was not correctly checking (a big OR) all
+ conditions, and breaking too fast.
+
+2000-09-12 01:37 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test.code/t22/Makefile: Many changes to accomodate all kind of
+ conditionals. There were a problem with reduce/reduce conflict on
+ the parsing of the token NOT. To avoid increasing the lookahead
+ (and as a consequence, the complexity of the scanning process), I
+ have changed instead the "expr" non-terminal.
+
+2000-09-11 15:19 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y, scan.l: Temporary fix for an
+ annoying reduce/reduce problem with NOT token. Some conditions as
+ "if ws-var is not alphabetic" don't work, but "if not ws-var is
+ alphabetic" works.
+
+2000-09-11 14:06 dessex
+
+ * Makefile.in, test.code/t20/r.sh, test.code/t21/Makefile,
+ test.code/t22/test22.cob: Updated sample test program test22.cob in
+ test.code/t22.
+
+2000-09-11 12:55 rpragana
+
+ * compiler/htcobol.y, lib/mcmath.c: Fixed some class condition bugs
+ and implemented the runtime library check routines.
+
+2000-09-11 01:12 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/htcoblib.h, lib/mcmath.c,
+ test.code/t22/test22.cob: Modified 88-variables to support more
+ than one range or lists of values, or combinations.
+
+2000-09-10 20:15 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ lib/mcmath.c: Implemented most of class conditionals. There are
+ four small runtime tests to be done, skeletons already in place
+ (who wants to? I'm bored now :)
+
+2000-09-10 19:23 dessex
+
+ * test.code/t22/: Makefile, test22.cob: Updated sample test program
+ test22.cob in test.code/t22.
+
+2000-09-10 14:17 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y, lib/mcmath.c:
+ Added general arithmetic-expressions conditionals. Please test
+ everything that use the nonterminal "expr". Now "expr" have a type
+ (read comments at htcobol.y), so will be easier to test if a
+ expression is well-formed.
+
+2000-09-10 00:52 rpragana
+
+ * compiler/htcobol.y, compiler/scan.l, test.code/t18/Makefile,
+ test.code/t19/Makefile, test.code/t21/Makefile,
+ test.code/t22/Makefile: Parsing of sign conditions and class
+ conditions. Code generation for sign conditions (but not yet for
+ class conditions).
+
+2000-09-09 22:24 dessex
+
+ * test.code/: Readme.txt, t22/Makefile, t22/Readme.txt, t22/r.sh,
+ t22/test22.cob: Added sample test programs in test.code/t22.
+
+2000-09-09 20:49 rpragana
+
+ * ChangeLog, lib/basicio.c: Change gets to fgets in terminal i/o to
+ remove a compiler warning (dangerous if more than 8192 bytes read).
+
+2000-09-09 20:22 dessex
+
+ * INSTALL, configure, configure.in, compiler/scan.l: Changed
+ configure script options.
+
+2000-09-09 17:06 bgiroud
+
+ * Makefile.in, compiler/Makefile.in, compiler/htcobgen.c,
+ compiler/htcoboly.h, test_suite/test.baseline,
+ test_suite/call_tests/ptest03.cob,
+ test_suite/call_tests/test.script,
+ test_suite/format_tests/test.script:
+ Phase I of static working-storage. Minor changes for better
+ handling of test suite.
+
+2000-09-09 11:44 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/basicio.c: Fixed
+ parsing of cond_op, so the IF and other statements with
+ conditionals now work with conditions like "X GREATER THAN OR EQUAL
+ TO Y".
+
+2000-09-07 14:47 dessex
+
+ * ANNOUNCE, STATUS, tinycobol.lsm, test.code/Readme.txt,
+ test.code/t15/Makefile, test.code/t15/Readme.txt,
+ test.code/t15/r.sh, test.code/t15/test15e.cob,
+ test.code/t15/test15f.c: Added sample test programs in
+ test.code/t15. Added ANNOUNCE, STATUS files.
+
+2000-08-31 03:03 dessex
+
+ * AUTHORS, info/rpm/tinycobol-20000830.spec,
+ test.code/t05/Readme.txt: Added new rpm spec file.
+
+2000-08-29 17:48 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test_suite/cobol_test.pl, test_suite/call_tests/ptest01.cob,
+ test_suite/call_tests/ptest02.cob,
+ test_suite/call_tests/stest01.cob,
+ test_suite/call_tests/stest9xx.c,
+ test_suite/call_tests/test.script:
+ Added Call By REFERENCE, By VALUE.
+
+2000-08-29 06:16 dessex
+
+ * ChangeLog, tinycobol.lsm, compiler/createver.sh: Updated
+ Changelog file.
+
+2000-08-25 03:44 dessex
+
+ * compiler/: createver.sh, htcobgen.c, htglobals.c, htglobals.h:
+ Minor modifications to version info and code generation on
+ compiler.
+
+2000-08-24 03:45 dessex
+
+ * compiler/: createver.sh, htglobals.c, htglobals.h: Updated
+ version info on compiler cmd line.
+
+2000-08-22 23:49 dessex
+
+ * ChangeLog: Updated Changelog file.
+
+2000-08-22 19:49 rpragana
+
+ * lib/: mcmath.c, pictures.c: Updated the runtime error for
+ mcmath.c, to better identify an overflow error, as reported by
+ Luciano Cerda (Conectiva Linux, Brasil).
+
+2000-08-22 10:30 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test.code/t05/Makefile, test.code/t05/r.sh,
+ test.code/t05/test05d.cob: Added code for PERFORM ... VARYING ...
+ AFTER statements. All PERFORM statements are be now completed.
+
+2000-08-18 02:25 dessex
+
+ * compiler/htcobol.y, test.code/t05/test05b.cob,
+ test.code/t05/test05c.cob: Added code for WITH TEST AFTER/BEFORE
+ option in in-line PERFORM statements.
+
+2000-08-15 07:10 dessex
+
+ * AUTHORS, BUGS, CHANGES, ChangeLog, HISTORY, INSTALL, INSTALL.bin,
+ README, TODO, configure, configure.in, htconfig.h.in,
+ tinycobol.lsm, info/Compiler-Overview.txt,
+ info/VarStructure.Info.txt, info/compiler-design-future.txt:
+ Updated text files after ispell check.
+
+2000-08-14 06:49 dessex
+
+ * ChangeLog, tinycobol.lsm: Updated Changelog.
+
+2000-08-14 06:35 dessex
+
+ * AUTHORS, tinycobol.lsm, compiler/htcobol.y, test.code/Readme.txt,
+ test.code/t02/test02.cob, test.code/t05/Makefile,
+ test.code/t05/Readme.txt, test.code/t05/test05.cob,
+ test.code/t05/test05a.cob, test.code/t05/test05b.cob,
+ test.code/t05/test05c.cob, utils/cobpp/main.c: Added 'WITH TEST
+ AFTER/BEFORE' options to PERFORM statements. Added test code
+ test05[abc].cob and removed test05.cob.
+
+2000-08-09 04:35 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test_suite/compile_tests/test.script,
+ test_suite/format_tests/test.script,
+ test_suite/format_tests/test03d.cob,
+ test_suite/format_tests/test05b.cob:
+ Added INITIALIZE statement with tests. First phase of CALL
+ extensions. Cleaned up currency sign tests.
+
+2000-08-03 09:47 bgiroud
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/scan.l,
+ test_suite/format_tests/test.script,
+ test_suite/format_tests/test03d.cob:
+ Added support for currency sign (euro sign will follow).
+
+2000-07-27 16:17 dessex
+
+ * ChangeLog: Updated Changelog.
+
+2000-07-25 01:00 bgiroud
+
+ * test_suite/: idxio_tests/idxio02.cob, perform_tests/perf01.cob,
+ perform_tests/perf02.cob, perform_tests/perf03.cob,
+ perform_tests/perf04.cob, seqio_tests/seqio03.cob,
+ seqio_tests/seqio04.cob, seqio_tests/seqio05.cob,
+ seqio_tests/seqio06.cob, seqio_tests/seqls01.cob,
+ seqio_tests/seqls02.cob:
+ Changed all programs in test_suite still named TEST.
+
+2000-07-23 16:50 bgiroud
+
+ * compiler/htcobol.y, test_suite/seqio_tests/seqio01.cob,
+ test_suite/seqio_tests/seqio02.cbl:
+ Made keyword MODE in ACCESS MODE IS optional too. Changed
+ Program-id from TEST to SEQIOnn.
+
+2000-07-11 06:38 dessex
+
+ * AUTHORS, ChangeLog, tinycobol.lsm: Updated Changelog.
+
+2000-07-10 10:41 dessex
+
+ * compiler/htcobol.y, compiler/scan.l, test.code/t21/Readme.txt,
+ test.code/t21/test21.cob: Added NEXT SENTENCE, CONTINUE statements
+ in IF/ELSE conditional statements. Added CONTINUE in statements in
+ in-line PERFORM statement. Removed END-PERFORM scope terminator
+ option from standard PERFORM statement.
+
+2000-07-09 13:38 dessex
+
+ * ChangeLog, test_suite/cobol_test.pl: Added bug fix in
+ test_suite/cobol_test.pl. Updated Changelog.
+
+2000-07-09 13:21 dessex
+
+ * compiler/htcobol.y, compiler/scan.l, lib/htcoblib.h,
+ lib/mcmath.c, lib/strings.c, test.code/Readme.txt,
+ test.code/t00/teste.cob, test.code/t05/test05.cob,
+ test.code/t07/test07.cob, test.code/t10/test10.cob,
+ test.code/t18/test18.cob, test.code/t18/test18i.cob,
+ test.code/t18/test18r.cob, test.code/t21/test21.cob: Added bug fix
+ in PROGRAM-ID statement. Added Added in-line PERFORM statement.
+
+2000-07-01 08:45 dessex
+
+ * ChangeLog, compiler/htcobol.y, compiler/scan.l,
+ test.code/t21/Makefile, test.code/t21/test21.cob: Added bug fix in
+ parser for perform statement. Added initial parser code for the
+ 'with test BEFORE/AFTER' perform option. Updated Changelog.
+
+2000-06-30 23:16 dessex
+
+ * compiler/htcobol.y, compiler/scan.l, lib/htcoblib.h,
+ test.code/Readme.txt, test.code/t21/Makefile,
+ test.code/t21/Readme.txt, test.code/t21/r.sh,
+ test.code/t21/test21.cob: Added COBOL-85 code for scope delemiters
+ (END-*). Added t21 test.code files to test COBOL-85 scope
+ delemiters (END-*) code.
+
+2000-06-10 22:02 dessex
+
+ * ChangeLog: Updated Changelog.
+
+2000-06-09 01:19 dessex
+
+ * lib/cobmove.c, test.code/t15/test15.cob,
+ test.code/t15/test15a.cob, test.code/t15/test15b.c: Fixed bug in
+ move from type 9 COMP to type 9 DISPLAY fields.
+
+2000-06-06 23:20 dessex
+
+ * ChangeLog, tinycobol.lsm, test.code/t19/test19a.cob: Updated
+ Changelog.
+
+2000-06-01 20:46 andrewcza
+
+ * lib/: fileio.c, htcoblib.h:
+ Fix fileio.c so that INDEXED IO works again.
+
+ Please note that the START VERB will not work yet. I will try to
+ finish this code soon.
+
+2000-05-23 18:49 dessex
+
+ * lib/Makefile.in, test.code/t19/Makefile: Added Makfile code for
+ dynamic library build.
+
+2000-05-13 14:06 dessex
+
+ * ChangeLog: Updated Changelog.
+
+2000-05-13 13:57 dessex
+
+ * tinycobol.lsm, lib/htcoblib.h, test.code/t15/test15.cob,
+ test.code/t15/test15a.cob, test.code/t15/test15b.c,
+ test.code/t15/test15d.c, test_suite/compile_tests/oracle1.cob,
+ test_suite/compile_tests/oracle2.cob,
+ test_suite/compile_tests/oracle3.cob, utils/cobpp/AUTHORS,
+ utils/cobpp/COPYRIGHT: Removed oracle[123].cob files in
+ test_suite/compile_tests. Added tinycobol.lsm file.
+
+2000-05-11 10:18 dessex
+
+ * ChangeLog, INSTALL, compiler/cobopt, test.code/t20/Makefile,
+ test.code/t20/TCfile3.txt, test.code/t20/test20e.cob: Added test in
+ test.code/t20 for 2-diamentional table in SEARCH/SEARCH ALL
+ statements.
+
+2000-05-08 04:12 dessex
+
+ * ChangeLog: Updated and fixed Changelog.
+
+2000-05-07 23:05 dessex
+
+ * ChangeLog: Updated Changelog.
+
+2000-05-07 02:42 rpragana
+
+ * ChangeLog: Updated Changelog.
+
+2000-05-06 20:40 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test.code/Readme.txt, test.code/t20/Makefile,
+ test.code/t20/Readme.txt, test.code/t20/TCfile1.txt,
+ test.code/t20/TCfile2.txt, test.code/t20/TCtable1.cpy,
+ test.code/t20/TCtable2.cpy, test.code/t20/TCtable3.cpy,
+ test.code/t20/TCtable4.cpy, test.code/t20/TCtable5.cpy,
+ test.code/t20/mktab.sh, test.code/t20/r.sh,
+ test.code/t20/test20a.cob, test.code/t20/test20b.cob,
+ test.code/t20/test20c.cob, test.code/t20/test20d.cob: Added code
+ for SEARCH and SEARCH ALL statements. Added test.code/t20 SEARCH
+ COBOL test code.
+
+2000-04-08 04:28 dessex
+
+ * utils/: Readme.txt, cobpp/COPYRIGHT, cobpp/Makefile.0,
+ cobpp/Makefile.in, cobpp/Readme.txt, cobpp/cobpp.h, cobpp/main.c,
+ cobpp/scanner.l, cobpp/support.c: Minor update to cobpp.
+
+2000-03-29 05:19 dessex
+
+ * test.code/t06/test06-variable-names.cob: Renamed
+ test06-variable-names.cob to test06v.cob in test.code/t06.
+
+2000-03-25 18:40 dessex
+
+ * test.code/: Makefile.2.tmpl, Makefile.3.tmpl, Makefile.tmpl,
+ t00/Makefile, t01/Makefile, t02/Makefile, t03/Makefile,
+ t04/Makefile, t06/Makefile, t07/Makefile, t10/Makefile,
+ t11/Makefile, t12/Makefile, t13/Makefile, t14/Makefile,
+ t15/Makefile, t18/Makefile, t19/Makefile: Changed makefiles in
+ test.code directory to have debug feature set on.
+
+2000-03-25 03:39 dessex
+
+ * compiler/cobopt, compiler/htcobgen.c, compiler/htglobals.c,
+ compiler/htglobals.h, compiler/scan.l, test.code/Makefile,
+ test.code/Makefile.2.tmpl, test.code/Makefile.3.tmpl,
+ test.code/Makefile.tmpl, test.code/config/C.rules.in,
+ test.code/config/COB.build.tmpl.in,
+ test.code/config/COB.build.tmpl.t.in,
+ test.code/copybooks/CMDLine.cpy, test.code/copybooks/CMDLine1.cpy,
+ test.code/copybooks/ENVAR1.cpy, test.code/t00/Makefile,
+ test.code/t01/Makefile, test.code/t02/Makefile,
+ test.code/t03/Makefile, test.code/t04/Makefile,
+ test.code/t04/test04.cob, test.code/t04/test04i.cob,
+ test.code/t04/test04r.cob, test.code/t05/Makefile,
+ test.code/t05/test05.cob, test.code/t06/Makefile,
+ test.code/t06/Readme.txt, test.code/t06/index01.cob,
+ test.code/t06/test06.cob, test.code/t06/test06i.cob,
+ test.code/t06/test06r.cob, test.code/t06/test06s.cob,
+ test.code/t06/test06v.cob, test.code/t07/Makefile,
+ test.code/t07/Makefile.orig, test.code/t07/cobsub.cob,
+ test.code/t07/test07.cob, test.code/t08/Makefile,
+ test.code/t08/test08.cob, test.code/t09/Makefile,
+ test.code/t09/r.sh, test.code/t09/test09.cob,
+ test.code/t10/Makefile, test.code/t10/Readme.txt,
+ test.code/t10/test10.cob, test.code/t11/Makefile,
+ test.code/t11/Readme.txt, test.code/t11/test11.cob,
+ test.code/t12/Makefile, test.code/t12/Readme.txt,
+ test.code/t12/test12.cob, test.code/t12/test12i.cob,
+ test.code/t12/test12ls.cob, test.code/t12/test12r.cob,
+ test.code/t12/test12s.cob, test.code/t13/Makefile,
+ test.code/t13/Readme.txt, test.code/t13/r.sh,
+ test.code/t13/test13.cob, test.code/t14/Makefile,
+ test.code/t14/Readme.txt, test.code/t14/r.sh,
+ test.code/t14/test14.cob, test.code/t15/Makefile,
+ test.code/t15/Readme.txt, test.code/t15/test15.cob,
+ test.code/t15/test15a.cob, test.code/t15/test15b.c,
+ test.code/t15/test15d.c, test.code/t16/Makefile.new,
+ test.code/t16/Readme.txt, test.code/t16/r.sh,
+ test.code/t16/test16.cob, test.code/t17/CMDLine.cpy,
+ test.code/t17/CMDLine1.cpy, test.code/t17/ENVAR1.cpy,
+ test.code/t17/Makefile, test.code/t18/Makefile,
+ test.code/t18/test18.cob, test.code/t18/test18i.cob,
+ test.code/t19/CMDLine1.cpy, test.code/t19/Makefile: Fixed the leaks
+ (spaces, LF, etc.) in the scanner (lex). Added the include
+ (-Ipath) compiler option to define search paths for copybooks.
+ Added the -v (verbose), -z (very verbose), compiler options.
+
+2000-03-24 13:18 rpragana
+
+ * compiler/htcobgen.c: More changes to gen_loadvar where we may
+ find problems with subscripts.
+
+2000-03-24 07:17 rpragana
+
+ * compiler/htcobgen.c: Fixed obscure bug at gen_compare function.
+ We must use gen_loadvar to make sure subscripted variables are
+ correctly defined.
+
+2000-03-23 11:39 rpragana
+
+ * test.code/t16/Makefile: Looking for variable allocation bug.
+
+2000-03-21 16:04 rpragana
+
+ * ChangeLog: Updated ChangeLog.
+
+2000-03-21 12:47 rpragana
+
+ * compiler/htcobol.y, test.code/t16/Makefile,
+ test.code/t16/test16.cob: Commented the "is_variable" call in the
+ parser, until I fix it.
+
+2000-03-21 10:11 rpragana
+
+ * compiler/htcobol.y, test.code/t16/test16.cob: Change to avoid
+ null list in "var_list" productions.
+
+2000-03-21 09:51 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t16/test16.cob: Avoid statements like "move 123 to
+ undefined-1" with undefined-1 being defined as a paragraph. The
+ function "is_variable" was defined to enforce this condition.
+
+2000-03-21 05:48 dessex
+
+ * COPYING.LIB, COPYRIGHT, compiler/htcobgen.c,
+ test.code/Makefile.old, test.code/Makefile.tmpl,
+ test.code/Readme.txt, test.code/r.sh, test.code/r.sh.tmpl,
+ test.code/config/COB.build.tmpl.in,
+ test.code/config/COB.build.tmpl.t.in,
+ test.code/config/COB.rules.in, test.code/t00/Makefile,
+ test.code/t01/Makefile, test.code/t01/compile,
+ test.code/t01/test01.2.cob, test.code/t01/test2.cob,
+ test.code/t02/Makefile, test.code/t03/Makefile,
+ test.code/t04/Makefile, test.code/t05/Makefile,
+ test.code/t06/Makefile, test.code/t08/Makefile,
+ test.code/t09/Makefile, test.code/t10/Makefile,
+ test.code/t11/Makefile, test.code/t12/Makefile,
+ test.code/t13/Makefile, test.code/t14/Makefile,
+ test.code/t16/Makefile, test.code/t17/Makefile,
+ test.code/t18/Makefile, test.code/t19/CMDLine1.cpy,
+ test.code/t19/Makefile, test.code/t19/Readme.txt,
+ test.code/t19/r.sh, test.code/t19/test.in.txt,
+ test.code/t19/test19.cob, test.code/t19/test19a.cob: Fixed bug in
+ file I/O record define code generation. Enhanced makefiles in
+ test.code directory. Added test.code t19 for run time file I/O
+ testing.
+
+2000-03-12 20:41 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test.code/Readme.txt, test.code/t17/ENVAR1.cpy,
+ test.code/t17/GETENV1.cpy, test.code/t17/test17.cob: I have added
+ the ability to set a return a positive integer from a COBOL program
+ using the MOVE ... TO RETURN-CODE statement. Changed environment
+ variables copybook.
+
+2000-02-27 10:20 dessex
+
+ * test.code/t17/GETENV1.cpy: Added the read environment variables
+ copybook.
+
+2000-02-27 10:15 dessex
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/basicio.c, lib/htcoblib.h,
+ test.code/Readme.txt, test.code/t17/CMDLine.cpy,
+ test.code/t17/CMDLine1.cpy, test.code/t17/Makefile,
+ test.code/t17/test17.cob: I have added the ability to read
+ environment variables using the ACCEPT verb.
+
+2000-02-26 08:18 dessex
+
+ * INSTALL, configure, configure.in, htconfig.h.in,
+ compiler/htcobgen.c, lib/htcoblib.h, test.code/Readme.txt,
+ test.code/t11/Makefile: Changed configure to to enable use of
+ library db version 2.xx or later. Fixed bug in user SECTION
+ defined name, so that gas can asseble it.
+
+2000-02-08 17:20 andrewcza
+
+ * lib/fileio.c, lib/htcoblib.h, test.code/t18/test18.cob,
+ test.code/t18/test18r.cob:
+ Implement START ... GREATER THAN for Relative files.
+
+2000-01-27 05:36 dessex
+
+ * INSTALL, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, lib/basicio.c,
+ lib/htcoblib.h, test.code/t02/test02.cob, test.code/t03/Makefile,
+ test.code/t03/test03.cob, test.code/t18/Makefile: I have changed
+ the compiler so that all variable names will be displayed without
+ the '-' to '_' replacement. I have enhanced the DISPLAY verb to
+ enable to direct output to stdout/stderr. The default is the
+ CONSOLE, which is stdout.
+
+2000-01-13 00:42 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/scan.l,
+ lib/htcoblib.h: Small change in token OVERFLOW, because of clash
+ with math.h include.
+
+2000-01-12 16:08 dessex
+
+ * compiler/htcobol.y, compiler/scan.l, lib/htcoblib.h,
+ test.code/t02/test02.cob, test.code/t03/Makefile,
+ test.code/t03/r.sh: Added READY/RESET TRACE to scanner. Added
+ htconfig.h includes in htcoblib.h file.
+
+2000-01-12 08:11 dessex
+
+ * configure.in: Added configure.in file.
+
+2000-01-12 08:11 dessex
+
+ * utils/cobpp/: ansi_setup.h, cobpp.h, get_util.c, get_util.h,
+ list_util.c, list_util.h, main.c, opt_util.c, opt_util.h,
+ scanner.l, str_util.c, str_util.h, support.c, vperror.c, vperror.h:
+ Added utils/cobpp files.
+
+2000-01-12 06:22 dessex
+
+ * INSTALL, Makefile.in, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htglobals.c, compiler/scan.l, lib/cobmove.c: Added ability
+ to switch debugging(stabs) on/off in code generation. Small fix in
+ scanner to scan ',' and/or blanks. Changed compiler macro switch
+ from DEBUGGING to DEBUG_RTS in cobmove.
+
+2000-01-12 04:50 dessex
+
+ * INSTALL, Makefile, Makefile.0, Makefile.in, configure,
+ htconfig.h.in, install-sh, compiler/Makefile, compiler/Makefile.0,
+ compiler/Makefile.in, compiler/htconfig.0.h, compiler/htconfig.h,
+ lib/Makefile, lib/Makefile.0, lib/Makefile.in, utils/Makefile,
+ utils/Makefile.0, utils/Makefile.in, utils/cobpp/Makefile,
+ utils/cobpp/Makefile.0, utils/cobpp/Makefile.in,
+ utils/cobpp/cobpp/Makefile, utils/cobpp/cobpp/cobpp.h,
+ utils/cobpp/cobpp/main.c, utils/cobpp/cobpp/scanner.l,
+ utils/cobpp/cobpp/support.c, utils/cobpp/lib/Makefile,
+ utils/cobpp/lib/ansi_setup.h, utils/cobpp/lib/get_util.c,
+ utils/cobpp/lib/get_util.h, utils/cobpp/lib/list_util.c,
+ utils/cobpp/lib/list_util.h, utils/cobpp/lib/opt_util.c,
+ utils/cobpp/lib/opt_util.h, utils/cobpp/lib/str_util.c,
+ utils/cobpp/lib/str_util.h, utils/cobpp/lib/vperror.c,
+ utils/cobpp/lib/vperror.h: Added configure files. Changed cobpp
+ directories and moved files to one directory.
+
+2000-01-10 17:04 andrewcza
+
+ * test_suite/cobol_test.pl:
+ Fix cobpp path
+
+2000-01-10 16:29 andrewcza
+
+ * lib/fileio.c, test.code/t18/test18.cob,
+ test.code/t18/test18r.cob:
+ Fix Prototype for cob_start in fileio.c.
+
+2000-01-07 13:47 andrewcza
+
+ * lib/fileio.c, test.code/t18/test18.cob,
+ test.code/t18/test18i.cob:
+ Modify fileio.c to start implementing START fo relative files
+
+2000-01-06 02:13 jmnoeth
+
+ * test_suite/format_tests/test.script: Added entry for program
+ test01c (tests COMP data types)
+
+2000-01-06 02:13 jmnoeth
+
+ * test_suite/format_tests/test01c.cob: New program to test COMP (4
+ byte binary integer) data types
+
+2000-01-06 02:13 jmnoeth
+
+ * test_suite/format_tests/test05a.cob: fixed the test for high/low
+ values
+
+2000-01-06 01:56 jmnoeth
+
+ * test_suite/test.baseline: Added section for new program
+ format_tests/test05a to test COMP data types.
+
+2000-01-06 01:51 jmnoeth
+
+ * lib/htcoblib.h: Added DTYPE_GROUP for cobmove routines
+
+2000-01-06 01:51 jmnoeth
+
+ * lib/cobmove.c: Added logic to handle COMP and INDEX data types (4
+ byte binary integer)
+
+2000-01-04 17:01 andrewcza
+
+ * lib/fileio.c, lib/htcoblib.h, test.code/t18/Makefile,
+ test.code/t18/Readme.txt, test.code/t18/r.sh,
+ test.code/t18/test18.cob:
+ Create test18 and modify fileio.c and htcoblib.h to implement the
+ start command for an indexed file using the primary key where the
+ condition is = to the key.
+
+2000-01-04 16:18 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/Makefile, lib/htcoblib.h, lib/screenio.c,
+ test.code/t16/test16.cob: Added generation of screen section
+ accepts/displays (not the library functions yet).
+
+2000-01-04 12:47 rpragana
+
+ * compiler/scan.l, test.code/t16/test16.cob: Added "D"
+ comment/debug syntax, controlled by variable source_debug (scan.l),
+ as queried by Glen.
+
+2000-01-04 00:19 glen
+
+ * compiler/scan.l: Added scan rule to allow floating asterisk for
+ comment
+
+2000-01-03 16:00 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Modified "start"
+ statement syntax and code generation to allow conditions and
+ alternate keys (as required by Andrew).
+
+2000-01-03 05:58 dessex
+
+ * compiler/Makefile, compiler/scan.l,
+ utils/cobpp/cobpp/scanner.1.l: Added -DDEBUG_SCANNER flag in
+ compiler/Makefile and removed it from scan.l. Removed excess file
+ scanner.1.l from cobpp.
+
+2000-01-03 05:24 dessex
+
+ * INSTALL, INSTALL.bin, README, info/rpm/Readme.txt,
+ info/rpm/rpm-KickStart-HOWTO-13.txt,
+ info/rpm/tinycobol-0.19991230.spec, utils/Makefile,
+ utils/cobpp/Makefile, utils/cobpp/cobpp/Makefile: Added info/rpm
+ directory which contains info and spec file. Added INSTALL.bin
+ file for binary distribution. Added make install for cobpp.
+ Enhanced INSTALL and README files.
+
+2000-01-02 01:02 glen
+
+ * test_suite/test.baseline: Updates for new move library results
+
+2000-01-02 00:37 glen
+
+ * test_suite/format_tests/: test01a.cob, test01b.cob: Correct
+ display to allow test to run in test_suite
+
+1999-12-31 01:14 jmnoeth
+
+ * test_suite/format_tests/test05a.cob: Changed to not test for
+ low/high values, as this test didn't appear to work. Instead,
+ created a routine _DUMP_, which places a hex representation of data
+ for one field into another field. The Hex values were displayed for
+ comparison. Also added code to check the move of figurative zero,
+ high and low values to a numeric (display) field.
+
+ The _DUMP_ is called like: WORKING-STORAGE. 01 WS-DUMP-INPUT
+ PIC X(n). 01 WS-DUMP-OUTPUT PIC
+ X(n * 2). 01 WS-DUMP-COUNT PIC 9(4) VALUE n.
+
+ PROCEDURE DIVISION.
+ CALL "_DUMP_" USING
+ WS-DUMP-INPUT
+ WS-DUMP-COUNT
+ WS-DUMP-OUTPUT.
+
+1999-12-31 01:14 jmnoeth
+
+ * test_suite/format_tests/test04.cob: Added code to test the 'CR'
+ and 'DB' edit types.
+
+1999-12-31 01:14 jmnoeth
+
+ * test_suite/format_tests/test02b.cob: Moving a 4 digit number to a
+ $$$9 field will result in 3 digits (left most digit will get
+ truncated), preceeded by the currency sign. Floating insertion
+ characters always require one more character than necessary to hold
+ all the digits, the extra character is for the insertion character
+ itself if all digits are non zero.
+
+1999-12-31 01:14 jmnoeth
+
+ * test_suite/format_tests/test03c.cob: The compiler seems to have a
+ problem with pictures like 9(nn)V9(nn), it is generating a field
+ definition stating that there is only one decimal position
+ regardless of what the picture states. This bug applies to the
+ display of field WS-X3. Added code to test asterisk insertion.
+
+1999-12-31 01:14 jmnoeth
+
+ * test_suite/format_tests/test03b.cob: The result for test AE08
+ should really be "3 45" instead of "3 46" because the blank is
+ inserted into the result. The same is true with the slash (/) (test
+ AS08) insertion, the result should be "3/45" instead of "3/46".
+
+1999-12-31 01:14 jmnoeth
+
+ * test_suite/format_tests/test03a.cob: The compiler is not properly
+ generating numeric constants that contain decimal points. For the
+ purposes of this test, the numeric constants containing decimal
+ points were changed to alphanumeric constants.
+
+1999-12-31 01:06 jmnoeth
+
+ * lib/Makefile: Changed to use cobmove.c instead of mcmove.c
+
+1999-12-31 01:06 jmnoeth
+
+ * test_suite/cobol_test.pl: Changed name of cobol library from
+ libcobol.a to libhtcobol.a
+
+1999-12-31 01:06 jmnoeth
+
+ * lib/htcoblib.h: Inserted constants and definitions for cobmove
+ routines
+
+1999-12-31 01:06 jmnoeth
+
+ * lib/mcmath.c: Changed logic to deal with sign characters of
+ packed numeric fields.
+
+1999-12-31 01:06 jmnoeth
+
+ * lib/cobmove.c: New runtime move routines (replaces mcmove.c)
+
+1999-12-30 05:17 dessex
+
+ * compiler/htconfig.h, test.code/t01/test01.2.cob: Added
+ htconfig.h, modified htglobals.c to use htconfig.h. Removed and
+ renamed some excess files.
+
+1999-12-30 05:12 dessex
+
+ * BUGS, INSTALL, Makefile, README, cobopt, compiler/Makefile,
+ compiler/Makefile.0, compiler/cobopt, compiler/htcobgen.c,
+ compiler/htglobals.c, lib/Makefile, lib/Makefile.0,
+ lib/basicio.1.c, lib/basicio.2.c, lib/general.1.c, lib/mccntrl.0.h,
+ test.code/Readme.txt, test.code/t00/.gdbinit,
+ test.code/t00/Makefile, test.code/t00/gdbinit.0,
+ test.code/t00/r.sh, test.code/t00/teste.0.cob,
+ test.code/t00/teste.1.cob, test.code/t01/Makefile,
+ test.code/t01/r.sh, test.code/t01/test1.cob,
+ test.code/t01/test_pos.S, test.code/t02/Makefile,
+ test.code/t03/.gdbinit, test.code/t03/Makefile,
+ test.code/t03/gdbinit.1, test.code/t04/Makefile,
+ test.code/t04/r.sh, test.code/t05/Makefile, test.code/t05/r.sh,
+ test.code/t06/Makefile, test.code/t06/r.sh, test.code/t07/Makefile,
+ test.code/t07/Makefile.orig, test.code/t07/r.sh,
+ test.code/t08/Makefile, test.code/t08/r.sh, test.code/t09/Makefile,
+ test.code/t10/Makefile, test.code/t10/r.sh, test.code/t11/Makefile,
+ test.code/t11/r.sh, test.code/t12/Makefile, test.code/t12/r.sh,
+ test.code/t13/Makefile, test.code/t14/Makefile,
+ test.code/t15/Makefile, test.code/t16/Makefile,
+ test.code/t17/Makefile, test.code/tdb01/Makefile,
+ test.code/tdb01/Makefile.0: Added make install to Makefiles. Added
+ htconfig.h, modified htglobals.c to use htconfig.h. Changed the
+ name of libcobol to libhtcobol to avoid any future conflicts.
+ Removed some excess files.
+
+1999-12-29 16:20 andrewcza
+
+ * lib/fileio.c:
+ Modified fileio.c to include sanity checks on the files open mode
+ to make sure that you cannot write to files opened in input mode or
+ read from files opened in output mode etc.
+
+1999-12-29 15:19 andrewcza
+
+ * lib/fileio.c, test.code/t04/test04.cob,
+ test.code/t04/test04r.cob:
+ Modified fileio.c to implement Delete for Indexed files with
+ Alternate keys
+
+1999-12-29 14:51 andrewcza
+
+ * lib/fileio.c, test.code/t04/Makefile, test.code/t04/test04.cob,
+ test.code/t04/test04i.cob:
+ Modify fileio.c to implement rewrite for Indexed files with
+ alternate keys
+
+1999-12-28 02:49 dessex
+
+ * compiler/htcobol.y, compiler/scan.l, test.code/Readme.txt,
+ test.code/t02/TEST02.cpy, test.code/t02/TEST02A.cpy,
+ test.code/t02/test02.cob, test.code/t17/test17.cob: Fixed bug in
+ COPY/COPY REPLACING statements.
+
+1999-12-27 22:07 dessex
+
+ * test.code/t17/: CMDLine.cpy, CMDLine1.cpy, Makefile, Readme.txt,
+ r.sh, test17.cob: Added program to test 'ACCEPT var FROM
+ COMMAND-LINE' clause. This COBOL 74 extention, gives COBOL the
+ ability to process the Linux(U*IX) command line.
+
+1999-12-27 22:02 dessex
+
+ * INSTALL, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, lib/Makefile, lib/basicio.c,
+ lib/htcoblib.h, test.code/Makefile, test.code/Readme.txt,
+ test.code/t16/Makefile, test.code/t16/test16.cob: Added 'ACCEPT var
+ FROM COMMAND-LINE' clause. This COBOL 74 extention, gives COBOL the
+ ability to process the Linux(U*IX) command line.
+
+1999-12-26 01:02 glen
+
+ * README: Added comments for $COBDIR/cobopt file
+
+1999-12-26 00:57 glen
+
+ * test_suite/perform_tests/perf05.cob: Change file name
+
+1999-12-26 00:57 glen
+
+ * test_suite/test.baseline: Add sequential read of indexed file
+ test
+
+1999-12-26 00:50 glen
+
+ * cobopt, compiler/htglobals.c: Initial addition of $COBDIR/copopt
+ file for installation default behavior of the compiler. This file
+ allows specific default behaviors for the compiler to be saved in
+ the cobopt file instead of having to be entered each time a program
+ is compiled.
+
+1999-12-24 17:33 glen
+
+ * compiler/htglobals.c: Add readline to LD link list
+
+1999-12-24 16:37 glen
+
+ * test_suite/idxio_tests/: idxio03.cob, test.script: Add sequential
+ read of indexed file test
+
+1999-12-24 16:04 glen
+
+ * lib/: fileio.c, screenio.c, strings.c: Changes for var args on
+ Solaris
+
+1999-12-24 15:47 glen
+
+ * compiler/: htcobol.y, scan.l: Added conditional for
+ __builtin_va_alist for Solaris
+
+1999-12-24 15:30 glen
+
+ * test_suite/compile_tests/oracle1.cob: Removed comments and other
+ noise from test program to get to the real cause of the failed
+ compile. Need to support multiple call arguments.
+
+1999-12-24 14:04 rpragana
+
+ * ChangeLog, compiler/scan.l: Fixed bug with pictures parsing
+ introduced after changes for the screen section. (Thanks David)
+
+1999-12-21 17:53 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t16/test16.cob: Fixed fld_desc.len to have the correct
+ length of the numeric field, for comp-3 and comp variables.
+
+1999-12-21 09:18 rpragana
+
+ * ChangeLog, compiler/Makefile, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, test.code/t16/test16.cob:
+ Eliminated uneeded flex library, defining a correct yywrap
+ function. More advances toward screen section implementation: code
+ for from/to/using at the processing functions fixed.
+
+1999-12-21 00:49 glen
+
+ * test_suite/cobol_test.pl: Added readline libraries to LD
+ parameters
+
+1999-12-20 20:01 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, lib/basicio.c, lib/fileio.c, lib/general.c,
+ lib/htcoblib.h, lib/mcmove.c, lib/screenio.c,
+ test.code/t11/Makefile, test.code/t12/Makefile,
+ test.code/t16/Makefile, test.code/t16/test16.cob: Added control of
+ compilation with defines WANT_READLINE and WANT_DYNAMIC_LIBS.
+ Added routines for processing each screen section field (at
+ compilation time).
+
+1999-12-20 16:05 andrewcza
+
+ * lib/Makefile, lib/fileio.c, test.code/t04/Makefile:
+ Modified fileio.c to fix a bud in read whereby it incorrectly
+ returned file status 23. Addec Screenio back to the Makefile
+
+1999-12-20 00:06 rpragana
+
+ * lib/Makefile, lib/basicio.c, lib/fileio.c, lib/htcoblib.h,
+ test.code/t11/Makefile, test.code/t12/Makefile,
+ test.code/t16/Makefile, test.code/t16/test16.cob: Changes to make
+ smarter libraries loading. Now we have to link only with -lcobol
+ -lm and -ldl. All other libraries, including db, ncurses and
+ readline are only called when appropriate. Please note changes for
+ calling some functions.
+
+1999-12-19 16:37 andrewcza
+
+ * test.code/t04/Makefile:
+ Add -lreadline to makefile so the program will link
+
+1999-12-18 20:07 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, test.code/t16/Makefile,
+ test.code/t16/test16.cob, test_suite/cobol_test.pl: Added level 77
+ variables and some error detection for malformed data hierarchy.
+
+1999-12-18 01:45 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, lib/basicio.c,
+ lib/htcoblib.h, test.code/t11/test11.cob, test.code/t16/Makefile,
+ test.code/t16/test16.cob: More changes in the accept statement, now
+ that I understand it a little more. It is using readline if input
+ comes from a terminal, otherwise plain gets(). The ncurses calls
+ will be reserved for screen section items i/o.
+
+1999-12-16 21:07 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/basicio.c,
+ test.code/t04/test04.cob, test.code/t16/test16.cob: Introduced a
+ selection for accept/display statements. If there is a
+ screensection declared (even without any items), it will force use
+ of ncurses for screen i/o. Otherwise, all terminal i/o is really
+ stdin/stout, so we can use a line sequential file redirected as
+ stdin, for instance.
+
+1999-12-16 20:15 rpragana
+
+ * compiler/htcobol.y, lib/screenio.c, test.code/t06/test06.cob,
+ test.code/t16/test16.cob: Small changes in screenio code to avoid
+ core dumps. It's not finished, though.
+
+1999-12-16 17:18 andrewcza
+
+ * lib/fileio.c:
+ Modify cob_read in fileio.c for alternate keys.
+
+1999-12-16 16:46 rpragana
+
+ * compiler/htcobol.y: Fixed generation of cob_return instead of
+ cob_read_next. (Andrew request)
+
+1999-12-16 16:31 rpragana
+
+ * compiler/: htcobol.y, htcoboly.h, htglobals.h: Check if indexed
+ file have a record key and generate error. Conditional definition
+ of TRUE and FALSE at htglobals.h (clash with the same symbols in
+ ncurses.h).
+
+1999-12-16 14:22 rpragana
+
+ * compiler/htcobgen.c, lib/basicio.c, lib/mcmove.c, lib/screenio.c:
+ Changes to fix a bug in screen i/o with ncurses. Now all test.code
+ programs run (almost perfectly).
+
+1999-12-16 14:12 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, lib/Makefile, lib/basicio.c,
+ lib/cobmove.c, lib/general.c, lib/htcoblib.h, lib/mcmove.c,
+ lib/screenio.c, lib/strings.c, test.code/t01/Makefile,
+ test.code/t02/Makefile, test.code/t03/Makefile,
+ test.code/t04/Makefile, test.code/t05/Makefile,
+ test.code/t06/Makefile, test.code/t07/Makefile,
+ test.code/t08/Makefile, test.code/t09/Makefile,
+ test.code/t10/Makefile, test.code/t11/Makefile,
+ test.code/t12/Makefile, test.code/t13/Makefile,
+ test.code/t14/Makefile, test.code/t15/Makefile,
+ test.code/t16/Makefile: Changes to use ncurses for screen i/o.
+
+1999-12-15 17:16 andrewcza
+
+ * lib/fileio.c, test.code/t04/test04.cob:
+ Amend fileio.c routine cob_read_next and cob_read_prev to handle
+ alternate keys.
+
+1999-12-15 16:47 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test.code/t13/test13.cob: Modified file_desc
+ generation when an indexed file don't have a key field (sequential
+ access). Modified the scanning of copy statement when the file
+ name is followed by a period (end of statement).
+
+1999-12-15 15:49 andrewcza
+
+ * lib/fileio.c, test.code/t04/Makefile, test.code/t04/test04.cob,
+ test.code/t06/test06.cob:
+ Modify fileio.c cob_read to handle Reading via Alternate Keys.
+
+1999-12-14 23:12 glen
+
+ * compiler/htglobals.c: Reformatted fole using indent to -gnu
+ format. Also changed default link directory order when compiling
+ with -x option
+
+1999-12-14 23:06 glen
+
+ * test_suite/cobol_test.pl: Changed default path to point to
+ htcobol and libcobol as built in the development directory. This
+ should make it easier for users to run the test 'out of the box.'
+
+1999-12-14 19:01 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, lib/strings.c,
+ test.code/t14/test14.cob: Implemented library function
+ cob_inspect_replacing (part of inspect statement).
+
+1999-12-14 16:09 andrewcza
+
+ * compiler/htcobgen.c, lib/fileio.c, test.code/t04/test04.cob:
+ Modify htcobgen.c to fix a problem in the definitions of Alternate
+ keys. Modify fileio.c so that the open routine, close route and
+ write routine will handle Alternate keys.
+
+1999-12-14 12:47 rpragana
+
+ * compiler/htcobgen.c, lib/strings.c, test.code/t14/test14.cob,
+ test.code/t16/test16.cob: Yet more changes to the inspect stuff.
+
+1999-12-14 07:44 rpragana
+
+ * compiler/htcobgen.c: Corrected problem with "perform" code gen.
+
+1999-12-14 02:27 glen
+
+ * test_suite/idxio_tests/idxio03.cob: Add mixed mode sequential I-O
+ test program
+
+1999-12-14 02:15 glen
+
+ * test_suite/idxio_tests/: idxio02.cob, test.script: Add indexed
+ sequienial read test
+
+1999-12-14 00:51 glen
+
+ * test_suite/idxio_tests/test.script: Initial load of indexed IO
+ tests to repository
+
+1999-12-14 00:51 glen
+
+ * test_suite/cobol_test.pl: Added indexed sequential file access
+ tests
+
+1999-12-14 00:51 glen
+
+ * test_suite/idxio_tests/idxio01.cob: Initial addition to the
+ repository of indexed io test 01
+
+1999-12-13 19:48 rpragana
+
+ * compiler/htcobgen.c: Slowly moving into the "inspect" statement.
+
+1999-12-13 18:11 andrewcza
+
+ * lib/fileio.c:
+ Modify close routine in fileio.c to close alternate key files.
+
+1999-12-13 17:54 andrewcza
+
+ * lib/fileio.c, test.code/t04/test04.cob, test.code/t12/test12.cob:
+
+ Modify the Open routine in fileio.c to open a file for each
+ Alternate Key.
+
+1999-12-13 16:06 rpragana
+
+ * compiler/htcobgen.c, lib/htcoblib.h: Added a DB* field to
+ altkey_desc to allow to store a handle for the alternate key
+ auxiliary file. (another libdb file for each alt key)
+
+1999-12-13 15:33 rpragana
+
+ * compiler/htcobgen.c, lib/htcoblib.h: Added a field to file_desc
+ (htcoblib.h) to store the current alternate key file descriptor
+ (solicited by Andrew), or NULL if master key is in use.
+
+1999-12-12 23:24 glen
+
+ * test.code/: t00/Makefile, t01/Makefile, t04/Makefile,
+ t05/Makefile, t06/Makefile, t08/Makefile, t09/Makefile,
+ t10/Makefile, t11/Makefile, t12/Makefile, t13/Makefile,
+ t14/Makefile: Changed -l command line option to -P in cobol make
+ files
+
+1999-12-12 23:17 rpragana
+
+ * compiler/htcobgen.c, test.code/t03/test03.cob,
+ test.code/t16/test16.cob: Another small fix at the stabs for doing
+ single stepping through "performs".
+
+1999-12-12 22:48 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, test.code/t03/Makefile,
+ test.code/t16/Makefile: Fixups for gdb stepping within performs. I
+ have tomake changes in the code generated, avoiding to use the
+ exit_paragraph function.
+
+1999-12-12 17:56 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, test.code/t16/Makefile,
+ test.code/t16/test16.cob: Tests with stabs (debugging info
+ embedded).
+
+1999-12-12 02:19 glen
+
+ * compiler/: htglobals.c, htglobals.h: Changes to command line
+ processing: Removes -l option for program listings. This is now
+ replaced by the -P flag. Enabled -D for the output of 'debugging'
+ information to the ld process. Enabled the -B static|dynamic
+ option to control link mode.
+
+ Changes to work file processing when the -D option is used to put
+ the intermediate assembler file in the same directory as the source
+ so the debugger can find it.
+
+1999-12-12 02:11 glen
+
+ * test_suite/cobol_test.pl: Change -l flag for listing to -P flag
+ for listing. This is to allow the passing of link options in the
+ near future
+
+1999-12-11 17:44 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y,
+ test.code/t16/test16.cob: Small advance with the gdb through
+ "performs" problem.
+
+1999-12-11 01:06 rpragana
+
+ * lib/mcmath.c, test.code/t02/Makefile, test.code/t16/test16.cob:
+ Fixed bug in "compare" function that prevented "perform...varying"
+ from working.
+
+1999-12-11 00:03 rpragana
+
+ * compiler/htcobgen.c: Fixed bug in gen_set (Thanks David), "break"
+ missing.
+
+1999-12-10 22:17 rpragana
+
+ * compiler/htcobgen.c, test.code/t16/test16.cob: Still more data
+ types, comp and comp-3 (partial), for debugging.
+
+1999-12-10 19:16 rpragana
+
+ * ChangeLog, compiler/htcobgen.c: Debugging update: display of
+ "usage is display" variables implemented.
+
+1999-12-10 16:34 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, test.code/t16/Makefile,
+ test.code/t16/test16.cob: Implemented debugging info (stabs)
+ generation in the assembly object.
+
+1999-12-09 21:29 rpragana
+
+ * compiler/: htcobgen.c, htcobol.y, htcoboly.h: Implemented clause
+ "KEY IS " for the "read" statement.
+
+1999-12-09 18:55 rpragana
+
+ * lib/Makefile, lib/mcmath.c, test.code/t16/Makefile,
+ test.code/t16/test16.cob: Fixes in the arithmetic routines for
+ "usage is comp" variables.
+
+1999-12-09 17:05 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test.code/t16/test16.cob: Binary variables as
+ indices. New SET statement implementation (changed from David's).
+
+1999-12-09 13:57 rpragana
+
+ * ChangeLog, info/Compiler-Overview.txt, test.code/t16/Makefile:
+ Updated the Compiler-Overview.txt doc to explain how
+ subscripting/indexing is working.
+
+1999-12-09 05:01 dessex
+
+ * test.code/: t02/.gdbinit, t02/Makefile, t02/gdbinit.1,
+ t02/gdbinit.2, t02/gdbinit.3, t02/r.sh, t02/test02.cob,
+ t15/Makefile, t15/r.sh, t15/test15.cob, t15/test15a.cob,
+ t15/test15b.c: Changed sources in t15. Removed some gdbinit files
+ in t02
+
+1999-12-09 01:53 glen
+
+ * compiler/htglobals.c: Compiler was core dumping if no source file
+ name was provided. Change to generate error message and return an
+ error code if no file name.
+
+1999-12-08 15:43 andrewcza
+
+ * compiler/htcobgen.c, lib/fileio.c, test.code/t04/test04.cob,
+ test.code/t12/test12.cob:
+ Finish off Code for Relative IO. Start with the coding for
+ Alternate Keys.
+
+1999-12-08 09:41 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ lib/mcmove.c, test.code/t09/.gdbinit, test.code/t09/test09.cob: Bug
+ fixes with special literals (high-values, low-values, ...).
+
+1999-12-07 18:44 rpragana
+
+ * test.code/t16/: Makefile, test16.cob: Added usage comp example
+ (was missing in previous cvs commit?!).
+
+1999-12-07 13:58 rpragana
+
+ * compiler/htcobol.y, lib/mcmove.c, test.code/Makefile,
+ test.code/t07/cobsub.cob, test.code/t07/test07.cob: Implemented
+ usage is computational (binary) items.
+
+1999-12-07 12:16 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ test.code/t07/Makefile, test.code/t07/cobsub.cob,
+ test.code/t07/test07.cob: Fixed all bugs in linkage. Now both
+ Cobol and C subprograms work. Tests at test.code/t07.
+
+1999-12-07 09:50 rpragana
+
+ * test.code/t07/: Makefile.orig, subrot.c: Added t07/subrot.c
+ (almost forgot it!)
+
+1999-12-07 09:46 rpragana
+
+ * test.code/t07/: Makefile, test07.cob: Changed test.code/t07 to a
+ test of Cobol<->C interface.
+
+1999-12-07 08:46 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, test.code/t07/test07.cob: Changed the
+ arguments to call a procedure (C function) so that only a pointer
+ (char *) is passed corresponding to each argument. (This will make
+ David happier :)
+
+1999-12-07 01:06 dessex
+
+ * test.code/: Readme.txt, t15/Makefile, t15/test15.cob: Small fix
+ to test.code/t15 directory files.
+
+1999-12-06 21:48 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test.code/t09/test09.cob: Finished parsing of
+ "inspect" statement, in full.
+
+1999-12-06 21:06 rpragana
+
+ * compiler/htcobgen.c, lib/htcoblib.h, test.code/t01/.gdbinit,
+ test.code/t01/test01.cob: Fixed size problem with large arrays.
+ Notice the change at fld_desc structure for all the library
+ routines, as size now is a long integer. -- DON'T USE short
+ integers to store it anymore. --
+
+1999-12-06 20:13 rpragana
+
+ * compiler/htcobgen.c: Update "delete" as requested by Andrew, to
+ pass the recno for relative files.
+
+1999-12-06 16:41 andrewcza
+
+ * lib/fileio.c, test.code/t04/test04.cob:
+ Comment out a line of code which positions us one record before the
+ record we need to delete.
+
+ Change test04.cob to use READ filename KEY IS ...
+
+1999-12-06 15:47 andrewcza
+
+ * lib/fileio.c, test.code/t12/test12.cob:
+ Modify fileio.c to implement DELETE for Relative IO. The compiler
+ needs a change before this will work.
+
+1999-12-06 15:00 andrewcza
+
+ * lib/fileio.c, test.code/t12/test12.cob:
+ Finish off the library routine for READ PREVIOUS for Relative IO.
+
+1999-12-06 13:56 rpragana
+
+ * compiler/htcobgen.c, compiler/htcoboly.h, lib/htcoblib.h,
+ lib/strings.c, test.code/t14/.gdbinit, test.code/t14/test14.cob,
+ test.code/t14/unstring.cob: Bug fixes for the inspect statement
+ code generation.
+
+1999-12-05 16:29 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h: Partial implementation of "inspect".
+
+1999-12-05 11:08 dessex
+
+ * BUGS, compiler/htcobgen.c, compiler/htcobol.y, compiler/scan.l,
+ lib/Makefile, test.code/Readme.txt, test.code/t02/.gdbinit,
+ test.code/t02/Makefile, test.code/t02/r.sh,
+ test.code/t02/test02.cob, test.code/t07/Makefile,
+ test.code/t15/Makefile, test.code/t15/Readme.txt,
+ test.code/t15/r.sh, test.code/t15/test15.cob,
+ test.code/t15/test15a.cob, test.code/t15/test15b.c: Added Set
+ statement. Not compleated. Found some reasons for smoe bugs.
+ Added t15 test programs to test calling C and COBOL programs from
+ COBOL.
+
+1999-12-05 01:50 glen
+
+ * compiler/htglobals.c: Corrected problem with missing v and V
+ command line arguments
+
+1999-12-05 01:31 glen
+
+ * lib/Makefile: make clean was not deleting .o files. This update
+ fixes the ld bug
+
+1999-12-05 01:31 glen
+
+ * test_suite/test.baseline: Update regression test standard file
+
+1999-12-05 01:07 glen
+
+ * compiler/htcobgen.c: Changes to compiler return codes and a few
+ compiler error message codess. Straightened up the compiler
+ summary flower box.
+
+1999-12-05 00:52 glen
+
+ * test_suite/format_tests/test05a.cob: Changed test to check for
+ LOW-VALUES instead of a redefinition of the numeric target area.
+ The test is still failing however. The data field does contain
+ LOW-VALUES, it is the IF XXX = LOW-VALUES that is failing.
+
+1999-12-05 00:43 glen
+
+ * compiler/htglobals.c: Added -o option to the command line to
+ specify executable file name. Also changed command line processing
+ to use standard getopt library routine. This makes the command
+ line options much more flexable.
+
+1999-12-04 16:57 rpragana
+
+ * lib/strings.c, test.code/t14/.gdbinit, test.code/t14/test14.cob:
+ Finished (I hope) the unstring statement.
+
+1999-12-04 14:47 rpragana
+
+ * compiler/htcobol.y, compiler/scan.l, lib/strings.c,
+ test.code/t14/test14.cob: Corrections for the parsing of "not on
+ overflow" clause.
+
+1999-12-04 13:18 rpragana
+
+ * lib/strings.c, test.code/t14/.gdbinit, test.code/t14/test14.cob:
+ Partially implemented unstring (example at t14).
+
+1999-12-03 20:07 rpragana
+
+ * lib/strings.c, test.code/t14/.gdbinit,
+ test.code/t14/noeth-test.cob, test.code/t14/string.cob: Added test
+ programs at t14.
+
+1999-12-03 16:37 rpragana
+
+ * compiler/htcobol.y, compiler/scan.l, lib/strings.c,
+ test.code/t14/test14.cob: Some fix for unstring syntax and a little
+ test library.
+
+1999-12-02 21:10 rpragana
+
+ * lib/strings.c, test.code/t04/test04.cob: Advanced a little more
+ the cob_unstrig library function.
+
+1999-12-02 18:19 andrewcza
+
+ * compiler/htcobol.y, lib/fileio.c, test.code/t12/test12.cob:
+ Changed htcobol.y and fileio.c to implement READ NEXT for relative
+ file IO. READ PREV for relative IO is also implemented BUT I still
+ need to finish the code to detect the beginning of file.
+
+1999-12-02 17:13 andrewcza
+
+ * lib/fileio.c:
+ Finished off the code for Read Next in relative mode. Read Previous
+ still needs some work.
+
+1999-12-02 16:26 andrewcza
+
+ * lib/fileio.c, test.code/t06/test06.cob, test.code/t12/test12.cob,
+ test.code/t12/test12i.cob, test.code/t12/test12ls.cob,
+ test.code/t12/test12r.cob, test.code/t12/test12s.cob:
+ Modify all relative file io in fileio.c to use normal io and not
+ DB-1.85 as it does not work correctly. Work still needs to be done
+ on read next and read prev for relative io to skip the
+ blank/deleted records.
+
+ Amend test programs for testing.
+
+1999-12-02 15:11 andrewcza
+
+ * test.code/t11/test11.cob:
+ Modified test11.cob to work initialize the fields correctly.
+
+1999-12-02 13:15 rpragana
+
+ * ChangeLog: Update ChangeLog to prepare a public release.
+
+1999-12-02 12:59 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, lib/Makefile, lib/fileio.c, lib/htcoblib.h,
+ test.code/t04/test04.cob: Implemented "alternate record keys" for
+ indexed files. Modified test04 to show an example. Modified
+ cob_open (fileio.c) to show an example of access of the altkey_desc
+ structure.
+
+1999-12-02 01:37 glen
+
+ * test_suite/: compile_tests/README, compile_tests/ctest02.cbl,
+ compile_tests/test.script, perform_tests/perf01.cob,
+ perform_tests/perf02.cob, perform_tests/perf03.cob,
+ perform_tests/perf04.cob, perform_tests/perf05.cob,
+ perform_tests/test.script, seqio_tests/foobar.dat,
+ seqio_tests/input.dat, seqio_tests/lineseq.dat,
+ seqio_tests/nofile.dat, seqio_tests/seqio01.cob,
+ seqio_tests/seqio02.cbl, seqio_tests/seqio03.cob,
+ seqio_tests/seqio04.cob, seqio_tests/seqio05.cob,
+ seqio_tests/seqio06.cob, seqio_tests/seqls01.cob,
+ seqio_tests/seqls02.cob, seqio_tests/test.script,
+ seqio_tests/test06.dat: Initial load to Repository
+
+1999-12-02 01:37 glen
+
+ * test_suite/format_tests/: test.script, test01.cob, test01a.cob,
+ test01b.cob, test02a.cob, test02b.cob, test03a.cob, test03b.cob,
+ test03c.cob, test04.cob, test05a.cob, test_blank: Initial addition
+ to repository
+
+1999-12-02 01:34 glen
+
+ * test_suite/compile_tests/: ctest01.cob, ctest01a.cob,
+ ctest01b.cob, ctest01c.cob, ctest01d.cob, ctest01e.cob,
+ ctest03.cob, ctest04.cob, ctest05.cob, ctest06.cob, ctested01.cob,
+ ctested02.cob, ctested03.cob, ctested04.cob, ctested05.cob,
+ ctested06.cob, ctestfc01.cob, ctestfc02.cob, ctestws01.cob,
+ ctestws02.cob, ctestws03.cob, ctestws04.cob, ctestws05.cob,
+ ctestws06.cob, ctestws07.cob, ctestws08.cob, ctestws09.cob,
+ ctestws10.cob, ctestws11.cob, ctestws12.cob, oracle1.cob,
+ oracle2.cob, oracle3.cob, sample.cob: Initial upload to repository
+
+1999-12-02 01:27 glen
+
+ * test_suite/cobol_test.pl: Initial upload to Repository
+
+1999-12-02 01:27 glen
+
+ * test_suite/test.baseline: Initial addition to repository
+
+1999-12-02 00:25 glen
+
+ * lib/Makefile: add test suite
+
+1999-12-01 22:00 rpragana
+
+ * info/Compiler-Overview.txt, test.code/t14/unstring.cob: Corrected
+ some mistakes in my Compiler-Overview description and added a nice
+ example of our context-dependant scanning strategy.
+
+1999-12-01 21:13 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ compiler/scan.l, test.code/t09/test09.cob,
+ test.code/t14/test14.cob: Nasty bug because of a reduce/reduce
+ conflict solved. I have to add a new state to the scanner, though
+ (EXCEPTION_ST), but at least it is working now.
+
+1999-12-01 18:33 rpragana
+
+ * ChangeLog, test.code/t08/test08.cob, test.code/t10/test10.cob,
+ test.code/t11/test11.cob, test.code/t12/test12.cob,
+ test.code/t14/test14.cob: Fixed bugs in several programs
+ (test.code) that used COUNTER, areserved cobol word as an
+ identifier. (All except t08 compiles now)
+
+1999-12-01 17:43 rpragana
+
+ * info/Compiler-Overview.txt: Added a compiler overview text in our
+ info directory, so the newcomers don't spend much time figuring
+ what it does.
+
+1999-12-01 01:49 glen
+
+ * compiler/htcobol.y: Add return code processing and improve error
+ message display in listing
+
+1999-12-01 01:49 glen
+
+ * compiler/htglobals.c: Set initial value for error code and
+ severity
+
+1999-12-01 01:43 glen
+
+ * compiler/: htglobals.h, htcobgen.c, htcoboly.h: Add return code
+ processing and improve error message display in listing
+
+1999-12-01 00:47 glen
+
+ * compiler/htglobals.c: Remove argc test that expected two command
+ line arguments
+
+1999-11-30 23:31 glen
+
+ * compiler/: htglobals.h, htcobgen.c, htcobol.y, scan.l: Use
+ command line parsing in htglobals file Add command line options to
+ compile, assemble, and link from command line Return codes for
+ assemble and link errors
+
+1999-11-30 23:31 glen
+
+ * compiler/htglobals.c: Use command line parsing in htglobals file
+ Add command line options to compile, assemble, and link from
+ command line Return codes for assemble and link errors CVS:
+
+ CVS: CVS:
+
+1999-11-30 22:47 glen
+
+ * compiler/: htcobol.y, htcobgen.c: Add storage for htglobal
+ variables
+
+1999-11-30 22:47 glen
+
+ * compiler/scan.l: Add include for htglobals storage
+
+1999-11-30 22:34 glen
+
+ * compiler/htglobals.c: Define __HTGLOBALS_H to include storage in
+ the htglobals module
+
+1999-11-30 22:34 glen
+
+ * compiler/Makefile: Compile htglobals module
+
+1999-11-30 22:34 glen
+
+ * compiler/htglobals.h: Change to test for __HTGLOBALS_H defined
+ instead of not defined.
+
+1999-11-30 22:19 rpragana
+
+ * test.code/t14/test14.cob: Testing code generation of "unstring".
+ (many arguments!)
+
+1999-11-30 17:46 rpragana
+
+ * compiler/htcobgen.c, compiler/htcobol.y, compiler/htcoboly.h,
+ lib/strings.c: Implemented code generation of "unstring" statement.
+
+1999-11-30 13:47 rpragana
+
+ * BUGS, compiler/htcobol.y, compiler/scan.l,
+ test.code/t13/.gdbinit, test.code/t13/include1.cpy,
+ test.code/t13/test13.cob: Corrected bug in the replacement of
+ substrings (copy statement). Corrected (a warning) of yacc about
+ undefined value of a production.
+
+1999-11-30 12:34 rpragana
+
+ * compiler/htcobol.y, compiler/scan.l, test.code/t14/test14.cob:
+ Added tokens and productions for the unstring statement. (no code
+ generation, nor library funtions yet) Changed "on_overflow" to
+ allow "not on overflow" too. Modified test t14 to reflect the
+ changes, with "string" statement.
+
+1999-11-30 05:14 dessex
+
+ * test.code/: t02/test02.input, t03/test03.input:
+ test.code/t02/test02.input - Old test input
+ test.code/t03/test03.input - test input for test03.cob
+
+1999-11-30 04:29 dessex
+
+ * BUGS, INSTALL, README, compiler/htglobals.c, compiler/scan.l,
+ test.code/t02/r.sh, test.code/t02/test02.cob,
+ test.code/t03/test03.cob: BUGS - Added new found bugs. INSTALL -
+ Changed some instructions. README - Changed home web page.
+ compiler/scan.l - Changed Copy Repacing to exclude comments, and
+ scan vars names properly. test.code/t02/test02.cob - Enhanced
+ tests and found bugs. test.code/t03/test03.cob - Moved ACCEPT from
+ std-in tests. test.code/t03/test03.input - test input for
+ test03.cob compiler/htglobals.c - N/C
+
+1999-11-29 22:15 rpragana
+
+ * ChangeLog, compiler/htcobgen.c, compiler/htcobol.y,
+ compiler/htcoboly.h, compiler/scan.l, lib/Makefile, lib/strings.c,
+ test.code/Makefile, test.code/t09/test09.cob,
+ test.code/t13/include1.cpy, test.code/t13/test13.cob,
+ test.code/t14/Makefile, test.code/t14/test14.cob: Implemented
+ "string" statement including library functions. Changed the syntax
+ for more error checkings. Changed the scanner for better end of
+ statements detection. Now there should not be more than one
+ statement at the same line, except if the first is not followed by
+ EOS.
+
+1999-11-29 15:09 andrewcza
+
+ * CHANGES, lib/fileio.c, lib/fileio1.c, lib/fileio2.c:
+ Changed fileio.c to return the correct File Status when an attempt
+ is made to read write delete close a file that is not open, as well
+ as to return an error when an attempt is make to open a file that
+ is already open.
+
+1999-11-28 23:28 glen
+
+ * compiler/htglobals.h: added directories for temporary files and
+ updated variables for compiler return code handling.
+
+1999-11-28 23:28 glen
+
+ * compiler/htglobals.c: dded improved command line processing and
+ system calls to assemble and link code if directed on the command
+ line.
+
+1999-11-28 19:21 rpragana
+
+ * TODO: More required things submitted by Andrew: sort syntax
+ augmenting, alternate keys, string/unstring verbs.
+
+1999-11-28 17:48 rpragana
+
+ * BUGS, ChangeLog: Added ChangeLog to report changes.
+
+1999-11-26 17:09 rpragana
+
+ * CHANGES, TODO, compiler/htcobgen.c, lib/fileio.c,
+ test.code/t11/test11.cob: Merged Andrew's new version with Rildo's,
+ for the first change in this file already under cvs control.
+
+1999-11-25 23:53 rpragana
+
+ * CHANGES, compiler/htcobol.y, compiler/scan.l,
+ test.code/t13/.gdbinit, test.code/t13/include1.cpy,
+ test.code/t13/test13.cob: [no log message]
+
+1999-11-25 23:19 rpragana
+
+ * HISTORY, COPYING, Makefile, AUTHORS, BUGS, CHANGES, COPYRIGHT,
+ TODO, INSTALL, README, compiler/htcobgen.c, compiler/scan.l,
+ compiler/htcobol.y, compiler/Makefile, compiler/Makefile.0,
+ compiler/htcoboly.h, compiler/createver.sh, compiler/htglobals.c,
+ compiler/htglobals.h, lib/Makefile, lib/general.c, lib/basicio.c,
+ lib/mccntrl.s, lib/mcmath.c, lib/screenio.c, lib/Makefile.0,
+ lib/fileio.c, lib/htcoblib.h, lib/pictures.c, lib/basicio.2.c,
+ lib/basicio.1.c, lib/general.1.c, lib/mccntrl.0.h, lib/mcfrlsf.c,
+ lib/cobmove.c, lib/mcmove-orig.c, lib/mcmove.c, lib/fileio1.c,
+ lib/fileio2.c, test.code/Makefile, test.code/Readme.txt,
+ test.code/r.sh, test.code/t01/.gdbinit, test.code/t01/Makefile,
+ test.code/t01/test01.cob, test.code/t01/Readme.txt,
+ test.code/t01/compile, test.code/t01/r.sh, test.code/t01/test1.cob,
+ test.code/t01/test2.cob, test.code/t00/r.sh,
+ test.code/t00/teste.cob, test.code/t01/test_pos.S,
+ test.code/t00/Makefile, test.code/t00/Readme.txt,
+ test.code/t00/teste.1.cob, test.code/t00/.gdbinit,
+ test.code/t00/gdbinit.0, test.code/t00/teste.0.cob,
+ test.code/t03/Makefile, test.code/t03/Readme.txt,
+ test.code/t03/gdbinit.1, test.code/t03/r.sh,
+ test.code/t03/test03.cob, test.code/t02/.gdbinit,
+ test.code/t02/test02.cob, test.code/t02/Makefile,
+ test.code/t02/Readme.txt, test.code/t02/TEST02.cpy,
+ test.code/t02/TEST02A.cpy, test.code/t02/TEST02B.cpy,
+ test.code/t02/Test02.cpy, test.code/t02/gdbinit.1,
+ test.code/t02/gdbinit.2, test.code/t02/r.sh,
+ test.code/t02/gdbinit.3, test.code/t02/test02.input,
+ test.code/t04/Makefile, test.code/t04/Readme.txt,
+ test.code/t04/r.sh, test.code/t04/test04.cob,
+ test.code/t05/Makefile, test.code/t05/Readme.txt,
+ test.code/t05/r.sh, test.code/t05/test05.cob,
+ test.code/t06/Makefile, test.code/t06/Readme.txt,
+ test.code/t06/r.sh, test.code/t06/test06.cob,
+ test.code/t06/index01.cob, test.code/t06/test06i.cob,
+ test.code/t06/test06r.cob, test.code/t06/test06s.cob,
+ test.code/t06/test06-variable-names.cob, test.code/tdb01/Makefile,
+ test.code/tdb01/Makefile.0, test.code/tdb01/Readme.txt,
+ test.code/tdb01/tdb01.c, test.code/t07/Makefile,
+ test.code/t07/Readme.txt, test.code/t07/r.sh,
+ test.code/t07/test07.cob, test.code/t08/Makefile,
+ test.code/t08/Raw.dat, test.code/t08/Readme.txt,
+ test.code/t08/r.sh, test.code/t08/test08.cob,
+ test.code/t08/gen_data.c, test.code/t09/Makefile,
+ test.code/t09/test09.cob, test.code/t09/upro.cob,
+ test.code/t09/anlste.cob, test.code/t09/Readme.txt,
+ test.code/t09/var+perform.cob, test.code/t09/.gdbinit,
+ test.code/t09/move-test.cob, test.code/t09/subscripts.cob,
+ test.code/t10/Makefile, test.code/t10/r.sh,
+ test.code/t10/test10.cob, test.code/t11/Makefile,
+ test.code/t11/r.sh, test.code/t11/test11.cob,
+ test.code/t12/Makefile, test.code/t12/r.sh,
+ test.code/t12/test12.cob, test.code/t12/Readme.txt,
+ test.code/t12/test12i.cob, test.code/t12/test12ls.cob,
+ test.code/t12/test12s.cob, test.code/t12/test12r.cob,
+ test.code/t13/Makefile, info/Comments.old.txt,
+ test.code/t13/.gdbinit, test.code/t13/include1.cpy,
+ test.code/t13/include2.cpy, test.code/t13/include3.cpy,
+ test.code/t13/test13.cob, info/ProgramHeaders.Info.txt,
+ info/VarStructure.Info.txt, info/GAS.asm-i386.Info.txt,
+ info/compiler-design-future.txt, utils/Makefile, utils/Readme.txt,
+ utils/cobpp/AUTHORS, utils/cobpp/Makefile, utils/cobpp/Readme.txt,
+ utils/cobpp/COPYING, utils/cobpp/COPYRIGHT,
+ utils/cobpp/lib/vperror.h, utils/cobpp/lib/get_util.c,
+ utils/cobpp/lib/get_util.h, utils/cobpp/lib/Makefile,
+ utils/cobpp/lib/list_util.c, utils/cobpp/lib/list_util.h,
+ utils/cobpp/lib/opt_util.c, utils/cobpp/lib/opt_util.h,
+ utils/cobpp/lib/str_util.c, utils/cobpp/lib/str_util.h,
+ utils/cobpp/lib/ansi_setup.h, utils/cobpp/lib/vperror.c,
+ utils/cobpp/cobpp/cobpp.h, utils/cobpp/cobpp/main.c,
+ utils/cobpp/cobpp/Makefile, utils/cobpp/cobpp/scanner.l,
+ utils/cobpp/cobpp/support.c, utils/cobpp/cobpp/scanner.1.l:
+ Development files
+
+1999-11-25 23:19 rpragana
+
+ * HISTORY, COPYING, Makefile, AUTHORS, BUGS, CHANGES, COPYRIGHT,
+ TODO, INSTALL, README, compiler/htcobgen.c, compiler/scan.l,
+ compiler/htcobol.y, compiler/Makefile, compiler/Makefile.0,
+ compiler/htcoboly.h, compiler/createver.sh, compiler/htglobals.c,
+ compiler/htglobals.h, lib/Makefile, lib/general.c, lib/basicio.c,
+ lib/mccntrl.s, lib/mcmath.c, lib/screenio.c, lib/Makefile.0,
+ lib/fileio.c, lib/htcoblib.h, lib/pictures.c, lib/basicio.2.c,
+ lib/basicio.1.c, lib/general.1.c, lib/mccntrl.0.h, lib/mcfrlsf.c,
+ lib/cobmove.c, lib/mcmove-orig.c, lib/mcmove.c, lib/fileio1.c,
+ lib/fileio2.c, test.code/Makefile, test.code/Readme.txt,
+ test.code/r.sh, test.code/t01/.gdbinit, test.code/t01/Makefile,
+ test.code/t01/test01.cob, test.code/t01/Readme.txt,
+ test.code/t01/compile, test.code/t01/r.sh, test.code/t01/test1.cob,
+ test.code/t01/test2.cob, test.code/t00/r.sh,
+ test.code/t00/teste.cob, test.code/t01/test_pos.S,
+ test.code/t00/Makefile, test.code/t00/Readme.txt,
+ test.code/t00/teste.1.cob, test.code/t00/.gdbinit,
+ test.code/t00/gdbinit.0, test.code/t00/teste.0.cob,
+ test.code/t03/Makefile, test.code/t03/Readme.txt,
+ test.code/t03/gdbinit.1, test.code/t03/r.sh,
+ test.code/t03/test03.cob, test.code/t02/.gdbinit,
+ test.code/t02/test02.cob, test.code/t02/Makefile,
+ test.code/t02/Readme.txt, test.code/t02/TEST02.cpy,
+ test.code/t02/TEST02A.cpy, test.code/t02/TEST02B.cpy,
+ test.code/t02/Test02.cpy, test.code/t02/gdbinit.1,
+ test.code/t02/gdbinit.2, test.code/t02/r.sh,
+ test.code/t02/gdbinit.3, test.code/t02/test02.input,
+ test.code/t04/Makefile, test.code/t04/Readme.txt,
+ test.code/t04/r.sh, test.code/t04/test04.cob,
+ test.code/t05/Makefile, test.code/t05/Readme.txt,
+ test.code/t05/r.sh, test.code/t05/test05.cob,
+ test.code/t06/Makefile, test.code/t06/Readme.txt,
+ test.code/t06/r.sh, test.code/t06/test06.cob,
+ test.code/t06/index01.cob, test.code/t06/test06i.cob,
+ test.code/t06/test06r.cob, test.code/t06/test06s.cob,
+ test.code/t06/test06-variable-names.cob, test.code/tdb01/Makefile,
+ test.code/tdb01/Makefile.0, test.code/tdb01/Readme.txt,
+ test.code/tdb01/tdb01.c, test.code/t07/Makefile,
+ test.code/t07/Readme.txt, test.code/t07/r.sh,
+ test.code/t07/test07.cob, test.code/t08/Makefile,
+ test.code/t08/Raw.dat, test.code/t08/Readme.txt,
+ test.code/t08/r.sh, test.code/t08/test08.cob,
+ test.code/t08/gen_data.c, test.code/t09/Makefile,
+ test.code/t09/test09.cob, test.code/t09/upro.cob,
+ test.code/t09/anlste.cob, test.code/t09/Readme.txt,
+ test.code/t09/var+perform.cob, test.code/t09/.gdbinit,
+ test.code/t09/move-test.cob, test.code/t09/subscripts.cob,
+ test.code/t10/Makefile, test.code/t10/r.sh,
+ test.code/t10/test10.cob, test.code/t11/Makefile,
+ test.code/t11/r.sh, test.code/t11/test11.cob,
+ test.code/t12/Makefile, test.code/t12/r.sh,
+ test.code/t12/test12.cob, test.code/t12/Readme.txt,
+ test.code/t12/test12i.cob, test.code/t12/test12ls.cob,
+ test.code/t12/test12s.cob, test.code/t12/test12r.cob,
+ test.code/t13/Makefile, info/Comments.old.txt,
+ test.code/t13/.gdbinit, test.code/t13/include1.cpy,
+ test.code/t13/include2.cpy, test.code/t13/include3.cpy,
+ test.code/t13/test13.cob, info/ProgramHeaders.Info.txt,
+ info/VarStructure.Info.txt, info/GAS.asm-i386.Info.txt,
+ info/compiler-design-future.txt, utils/Makefile, utils/Readme.txt,
+ utils/cobpp/AUTHORS, utils/cobpp/Makefile, utils/cobpp/Readme.txt,
+ utils/cobpp/COPYING, utils/cobpp/COPYRIGHT,
+ utils/cobpp/lib/vperror.h, utils/cobpp/lib/get_util.c,
+ utils/cobpp/lib/get_util.h, utils/cobpp/lib/Makefile,
+ utils/cobpp/lib/list_util.c, utils/cobpp/lib/list_util.h,
+ utils/cobpp/lib/opt_util.c, utils/cobpp/lib/opt_util.h,
+ utils/cobpp/lib/str_util.c, utils/cobpp/lib/str_util.h,
+ utils/cobpp/lib/ansi_setup.h, utils/cobpp/lib/vperror.c,
+ utils/cobpp/cobpp/cobpp.h, utils/cobpp/cobpp/main.c,
+ utils/cobpp/cobpp/Makefile, utils/cobpp/cobpp/scanner.l,
+ utils/cobpp/cobpp/support.c, utils/cobpp/cobpp/scanner.1.l: Initial
+ revision
+
diff --git a/Debug/cobpp/subdir.mk b/Debug/cobpp/subdir.mk
new file mode 100644
index 0000000..ed0c732
--- /dev/null
+++ b/Debug/cobpp/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../cobpp/cobpp.c
+
+OBJS += \
+./cobpp/cobpp.o
+
+C_DEPS += \
+./cobpp/cobpp.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+cobpp/%.o: ../cobpp/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/cobroutines/subdir.mk b/Debug/cobroutines/subdir.mk
new file mode 100644
index 0000000..c0173c2
--- /dev/null
+++ b/Debug/cobroutines/subdir.mk
@@ -0,0 +1,90 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+O_SRCS += \
+../cobroutines/dir.o \
+../cobroutines/files.o \
+../cobroutines/globals.o \
+../cobroutines/screen.o \
+../cobroutines/sql_clear_query.o \
+../cobroutines/sql_connect_db.o \
+../cobroutines/sql_disconnect_db.o \
+../cobroutines/sql_exec_query.o \
+../cobroutines/sql_free_memory.o \
+../cobroutines/sql_get_tuple.o \
+../cobroutines/sql_get_value.o \
+../cobroutines/sql_max_field.o \
+../cobroutines/sql_max_tuple.o \
+../cobroutines/sql_status_message.o \
+../cobroutines/system.o \
+../cobroutines/tctcl.o
+
+C_SRCS += \
+../cobroutines/case.c \
+../cobroutines/dir.c \
+../cobroutines/files.c \
+../cobroutines/globals.c \
+../cobroutines/screen.c \
+../cobroutines/sql_clear_query.c \
+../cobroutines/sql_connect_db.c \
+../cobroutines/sql_disconnect_db.c \
+../cobroutines/sql_exec_query.c \
+../cobroutines/sql_free_memory.c \
+../cobroutines/sql_get_tuple.c \
+../cobroutines/sql_get_value.c \
+../cobroutines/sql_max_field.c \
+../cobroutines/sql_max_tuple.c \
+../cobroutines/sql_status_message.c \
+../cobroutines/system.c \
+../cobroutines/tctcl.c
+
+OBJS += \
+./cobroutines/case.o \
+./cobroutines/dir.o \
+./cobroutines/files.o \
+./cobroutines/globals.o \
+./cobroutines/screen.o \
+./cobroutines/sql_clear_query.o \
+./cobroutines/sql_connect_db.o \
+./cobroutines/sql_disconnect_db.o \
+./cobroutines/sql_exec_query.o \
+./cobroutines/sql_free_memory.o \
+./cobroutines/sql_get_tuple.o \
+./cobroutines/sql_get_value.o \
+./cobroutines/sql_max_field.o \
+./cobroutines/sql_max_tuple.o \
+./cobroutines/sql_status_message.o \
+./cobroutines/system.o \
+./cobroutines/tctcl.o
+
+C_DEPS += \
+./cobroutines/case.d \
+./cobroutines/dir.d \
+./cobroutines/files.d \
+./cobroutines/globals.d \
+./cobroutines/screen.d \
+./cobroutines/sql_clear_query.d \
+./cobroutines/sql_connect_db.d \
+./cobroutines/sql_disconnect_db.d \
+./cobroutines/sql_exec_query.d \
+./cobroutines/sql_free_memory.d \
+./cobroutines/sql_get_tuple.d \
+./cobroutines/sql_get_value.d \
+./cobroutines/sql_max_field.d \
+./cobroutines/sql_max_tuple.d \
+./cobroutines/sql_status_message.d \
+./cobroutines/system.d \
+./cobroutines/tctcl.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+cobroutines/%.o: ../cobroutines/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/cobrun/subdir.mk b/Debug/cobrun/subdir.mk
new file mode 100644
index 0000000..a4c3348
--- /dev/null
+++ b/Debug/cobrun/subdir.mk
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+O_SRCS += \
+../cobrun/htcobrun.o
+
+C_SRCS += \
+../cobrun/htcobrun.c
+
+OBJS += \
+./cobrun/htcobrun.o
+
+C_DEPS += \
+./cobrun/htcobrun.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+cobrun/%.o: ../cobrun/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/compiler/subdir.mk b/Debug/compiler/subdir.mk
new file mode 100644
index 0000000..3a1e20c
--- /dev/null
+++ b/Debug/compiler/subdir.mk
@@ -0,0 +1,59 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+O_SRCS += \
+../compiler/htcobemt.o \
+../compiler/htcobgen.o \
+../compiler/htcobol.o \
+../compiler/htcobol.tab.o \
+../compiler/htglobals.o \
+../compiler/pp_parser.tab.o \
+../compiler/pp_scanner.o \
+../compiler/reswords.o \
+../compiler/scan.o
+
+C_SRCS += \
+../compiler/htcobemt.c \
+../compiler/htcobgen.c \
+../compiler/htcobol.c \
+../compiler/htcobol.tab.c \
+../compiler/htglobals.c \
+../compiler/pp_parser.tab.c \
+../compiler/pp_scanner.c \
+../compiler/reswords.c \
+../compiler/scan.c
+
+OBJS += \
+./compiler/htcobemt.o \
+./compiler/htcobgen.o \
+./compiler/htcobol.o \
+./compiler/htcobol.tab.o \
+./compiler/htglobals.o \
+./compiler/pp_parser.tab.o \
+./compiler/pp_scanner.o \
+./compiler/reswords.o \
+./compiler/scan.o
+
+C_DEPS += \
+./compiler/htcobemt.d \
+./compiler/htcobgen.d \
+./compiler/htcobol.d \
+./compiler/htcobol.tab.d \
+./compiler/htglobals.d \
+./compiler/pp_parser.tab.d \
+./compiler/pp_scanner.d \
+./compiler/reswords.d \
+./compiler/scan.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+compiler/%.o: ../compiler/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/lib/subdir.mk b/Debug/lib/subdir.mk
new file mode 100644
index 0000000..86bf2aa
--- /dev/null
+++ b/Debug/lib/subdir.mk
@@ -0,0 +1,110 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+O_SRCS += \
+../lib/basicio.o \
+../lib/cobmove.o \
+../lib/cobmove_9_.o \
+../lib/cobmove_b_.o \
+../lib/cobmove_c_.o \
+../lib/cobmove_e_.o \
+../lib/cobmove_f_.o \
+../lib/cobmove_x_.o \
+../lib/config.o \
+../lib/dyncall.o \
+../lib/fileio.o \
+../lib/flckclient.o \
+../lib/general.o \
+../lib/htcobolrt.o \
+../lib/intrinsic.o \
+../lib/mcmath.o \
+../lib/pictures.o \
+../lib/rterrors.o \
+../lib/scr_curses.o \
+../lib/screenio.o \
+../lib/strings.o
+
+C_SRCS += \
+../lib/basicio.c \
+../lib/cobmove.c \
+../lib/cobmove_9_.c \
+../lib/cobmove_b_.c \
+../lib/cobmove_c_.c \
+../lib/cobmove_e_.c \
+../lib/cobmove_f_.c \
+../lib/cobmove_x_.c \
+../lib/config.c \
+../lib/dyncall.c \
+../lib/fileio.c \
+../lib/filesql.c \
+../lib/flckclient.c \
+../lib/general.c \
+../lib/intrinsic.c \
+../lib/mcmath.c \
+../lib/pictures.c \
+../lib/rterrors.c \
+../lib/scr_curses.c \
+../lib/screen.c \
+../lib/screenio.c \
+../lib/strings.c
+
+OBJS += \
+./lib/basicio.o \
+./lib/cobmove.o \
+./lib/cobmove_9_.o \
+./lib/cobmove_b_.o \
+./lib/cobmove_c_.o \
+./lib/cobmove_e_.o \
+./lib/cobmove_f_.o \
+./lib/cobmove_x_.o \
+./lib/config.o \
+./lib/dyncall.o \
+./lib/fileio.o \
+./lib/filesql.o \
+./lib/flckclient.o \
+./lib/general.o \
+./lib/intrinsic.o \
+./lib/mcmath.o \
+./lib/pictures.o \
+./lib/rterrors.o \
+./lib/scr_curses.o \
+./lib/screen.o \
+./lib/screenio.o \
+./lib/strings.o
+
+C_DEPS += \
+./lib/basicio.d \
+./lib/cobmove.d \
+./lib/cobmove_9_.d \
+./lib/cobmove_b_.d \
+./lib/cobmove_c_.d \
+./lib/cobmove_e_.d \
+./lib/cobmove_f_.d \
+./lib/cobmove_x_.d \
+./lib/config.d \
+./lib/dyncall.d \
+./lib/fileio.d \
+./lib/filesql.d \
+./lib/flckclient.d \
+./lib/general.d \
+./lib/intrinsic.d \
+./lib/mcmath.d \
+./lib/pictures.d \
+./lib/rterrors.d \
+./lib/scr_curses.d \
+./lib/screen.d \
+./lib/screenio.d \
+./lib/strings.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+lib/%.o: ../lib/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/lockserver/subdir.mk b/Debug/lockserver/subdir.mk
new file mode 100644
index 0000000..83e3350
--- /dev/null
+++ b/Debug/lockserver/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../lockserver/lockserver.c
+
+OBJS += \
+./lockserver/lockserver.o
+
+C_DEPS += \
+./lockserver/lockserver.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+lockserver/%.o: ../lockserver/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/makefile b/Debug/makefile
new file mode 100644
index 0000000..91e8b7e
--- /dev/null
+++ b/Debug/makefile
@@ -0,0 +1,63 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+-include ../makefile.init
+
+RM := rm -rf
+
+# All of the sources participating in the build are defined here
+-include sources.mk
+-include subdir.mk
+-include utils/cobf2f/subdir.mk
+-include test_suite/call_tests/subdir.mk
+-include test.code/tgui02/subdir.mk
+-include test.code/tgui01/subdir.mk
+-include test.code/tdb03/subdir.mk
+-include test.code/tdb02/subdir.mk
+-include test.code/tdb01/subdir.mk
+-include test.code/t33/subdir.mk
+-include test.code/t25/subdir.mk
+-include test.code/t15/subdir.mk
+-include test.code/t08/subdir.mk
+-include test.code/t07/subdir.mk
+-include test.code/ReportGen/subdir.mk
+-include test.code/00_FernandoWuthstrack/tcl/subdir.mk
+-include lockserver/subdir.mk
+-include lib/subdir.mk
+-include compiler/subdir.mk
+-include cobrun/subdir.mk
+-include cobroutines/subdir.mk
+-include cobpp/subdir.mk
+-include objects.mk
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(strip $(C_DEPS)),)
+-include $(C_DEPS)
+endif
+endif
+
+-include ../makefile.defs
+
+# Add inputs and outputs from these tool invocations to the build variables
+
+# All Target
+all: tinycobol.exe
+
+# Tool invocations
+tinycobol.exe: $(OBJS) $(USER_OBJS)
+ @echo 'Building target: $@'
+ @echo 'Invoking: MinGW C Linker'
+ gcc -o"tinycobol.exe" $(OBJS) $(USER_OBJS) $(LIBS)
+ @echo 'Finished building target: $@'
+ @echo ' '
+
+# Other Targets
+clean:
+ -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) tinycobol.exe
+ -@echo ' '
+
+.PHONY: all clean dependents
+.SECONDARY:
+
+-include ../makefile.targets
diff --git a/Debug/objects.mk b/Debug/objects.mk
new file mode 100644
index 0000000..224ef68
--- /dev/null
+++ b/Debug/objects.mk
@@ -0,0 +1,7 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+USER_OBJS :=
+
+LIBS :=
diff --git a/Debug/sources.mk b/Debug/sources.mk
new file mode 100644
index 0000000..41e8f19
--- /dev/null
+++ b/Debug/sources.mk
@@ -0,0 +1,36 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+O_SRCS :=
+C_SRCS :=
+S_UPPER_SRCS :=
+OBJ_SRCS :=
+ASM_SRCS :=
+OBJS :=
+C_DEPS :=
+EXECUTABLES :=
+
+# Every subdirectory with source files must be described here
+SUBDIRS := \
+utils/cobf2f \
+test_suite/call_tests \
+test.code/tgui02 \
+test.code/tgui01 \
+test.code/tdb03 \
+test.code/tdb02 \
+test.code/tdb01 \
+test.code/t33 \
+test.code/t25 \
+test.code/t15 \
+test.code/t08 \
+test.code/t07 \
+test.code/ReportGen \
+test.code/00_FernandoWuthstrack/tcl \
+lockserver \
+lib \
+compiler \
+cobrun \
+cobroutines \
+cobpp \
+
diff --git a/Debug/test.code/00_FernandoWuthstrack/tcl/subdir.mk b/Debug/test.code/00_FernandoWuthstrack/tcl/subdir.mk
new file mode 100644
index 0000000..1065470
--- /dev/null
+++ b/Debug/test.code/00_FernandoWuthstrack/tcl/subdir.mk
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/00_FernandoWuthstrack/tcl/tctcl.c \
+../test.code/00_FernandoWuthstrack/tcl/teste.c
+
+OBJS += \
+./test.code/00_FernandoWuthstrack/tcl/tctcl.o \
+./test.code/00_FernandoWuthstrack/tcl/teste.o
+
+C_DEPS += \
+./test.code/00_FernandoWuthstrack/tcl/tctcl.d \
+./test.code/00_FernandoWuthstrack/tcl/teste.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/00_FernandoWuthstrack/tcl/%.o: ../test.code/00_FernandoWuthstrack/tcl/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/ReportGen/subdir.mk b/Debug/test.code/ReportGen/subdir.mk
new file mode 100644
index 0000000..56f53a9
--- /dev/null
+++ b/Debug/test.code/ReportGen/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/ReportGen/tclwrapper.c
+
+OBJS += \
+./test.code/ReportGen/tclwrapper.o
+
+C_DEPS += \
+./test.code/ReportGen/tclwrapper.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/ReportGen/%.o: ../test.code/ReportGen/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/t07/subdir.mk b/Debug/test.code/t07/subdir.mk
new file mode 100644
index 0000000..8ad0ae9
--- /dev/null
+++ b/Debug/test.code/t07/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/t07/subrot.c
+
+OBJS += \
+./test.code/t07/subrot.o
+
+C_DEPS += \
+./test.code/t07/subrot.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/t07/%.o: ../test.code/t07/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/t08/subdir.mk b/Debug/test.code/t08/subdir.mk
new file mode 100644
index 0000000..63b227f
--- /dev/null
+++ b/Debug/test.code/t08/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/t08/gen_data.c
+
+OBJS += \
+./test.code/t08/gen_data.o
+
+C_DEPS += \
+./test.code/t08/gen_data.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/t08/%.o: ../test.code/t08/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/t15/subdir.mk b/Debug/test.code/t15/subdir.mk
new file mode 100644
index 0000000..8497b42
--- /dev/null
+++ b/Debug/test.code/t15/subdir.mk
@@ -0,0 +1,33 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/t15/test15b.c \
+../test.code/t15/test15d.c \
+../test.code/t15/test15f.c \
+../test.code/t15/test15l.c
+
+OBJS += \
+./test.code/t15/test15b.o \
+./test.code/t15/test15d.o \
+./test.code/t15/test15f.o \
+./test.code/t15/test15l.o
+
+C_DEPS += \
+./test.code/t15/test15b.d \
+./test.code/t15/test15d.d \
+./test.code/t15/test15f.d \
+./test.code/t15/test15l.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/t15/%.o: ../test.code/t15/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/t25/subdir.mk b/Debug/test.code/t25/subdir.mk
new file mode 100644
index 0000000..e992196
--- /dev/null
+++ b/Debug/test.code/t25/subdir.mk
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/t25/test25b.c \
+../test.code/t25/test25c.c
+
+OBJS += \
+./test.code/t25/test25b.o \
+./test.code/t25/test25c.o
+
+C_DEPS += \
+./test.code/t25/test25b.d \
+./test.code/t25/test25c.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/t25/%.o: ../test.code/t25/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/t33/subdir.mk b/Debug/test.code/t33/subdir.mk
new file mode 100644
index 0000000..87d57b6
--- /dev/null
+++ b/Debug/test.code/t33/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/t33/subrotc.c
+
+OBJS += \
+./test.code/t33/subrotc.o
+
+C_DEPS += \
+./test.code/t33/subrotc.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/t33/%.o: ../test.code/t33/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/tdb01/subdir.mk b/Debug/test.code/tdb01/subdir.mk
new file mode 100644
index 0000000..bff1102
--- /dev/null
+++ b/Debug/test.code/tdb01/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/tdb01/tdb01.c
+
+OBJS += \
+./test.code/tdb01/tdb01.o
+
+C_DEPS += \
+./test.code/tdb01/tdb01.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/tdb01/%.o: ../test.code/tdb01/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/tdb02/subdir.mk b/Debug/test.code/tdb02/subdir.mk
new file mode 100644
index 0000000..37093f0
--- /dev/null
+++ b/Debug/test.code/tdb02/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/tdb02/tdb02a.c
+
+OBJS += \
+./test.code/tdb02/tdb02a.o
+
+C_DEPS += \
+./test.code/tdb02/tdb02a.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/tdb02/%.o: ../test.code/tdb02/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/tdb03/subdir.mk b/Debug/test.code/tdb03/subdir.mk
new file mode 100644
index 0000000..6f5a16f
--- /dev/null
+++ b/Debug/test.code/tdb03/subdir.mk
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/tdb03/cgi-util.c \
+../test.code/tdb03/tdb03a.c
+
+OBJS += \
+./test.code/tdb03/cgi-util.o \
+./test.code/tdb03/tdb03a.o
+
+C_DEPS += \
+./test.code/tdb03/cgi-util.d \
+./test.code/tdb03/tdb03a.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/tdb03/%.o: ../test.code/tdb03/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/tgui01/subdir.mk b/Debug/test.code/tgui01/subdir.mk
new file mode 100644
index 0000000..01a70b1
--- /dev/null
+++ b/Debug/test.code/tgui01/subdir.mk
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/tgui01/testgui02.c \
+../test.code/tgui01/testgui05.c
+
+OBJS += \
+./test.code/tgui01/testgui02.o \
+./test.code/tgui01/testgui05.o
+
+C_DEPS += \
+./test.code/tgui01/testgui02.d \
+./test.code/tgui01/testgui05.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/tgui01/%.o: ../test.code/tgui01/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test.code/tgui02/subdir.mk b/Debug/test.code/tgui02/subdir.mk
new file mode 100644
index 0000000..fee44b2
--- /dev/null
+++ b/Debug/test.code/tgui02/subdir.mk
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test.code/tgui02/wprog01.c \
+../test.code/tgui02/wprog02.c
+
+OBJS += \
+./test.code/tgui02/wprog01.o \
+./test.code/tgui02/wprog02.o
+
+C_DEPS += \
+./test.code/tgui02/wprog01.d \
+./test.code/tgui02/wprog02.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test.code/tgui02/%.o: ../test.code/tgui02/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/test_suite/call_tests/subdir.mk b/Debug/test_suite/call_tests/subdir.mk
new file mode 100644
index 0000000..0ed5d6a
--- /dev/null
+++ b/Debug/test_suite/call_tests/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../test_suite/call_tests/stest9xx.c
+
+OBJS += \
+./test_suite/call_tests/stest9xx.o
+
+C_DEPS += \
+./test_suite/call_tests/stest9xx.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+test_suite/call_tests/%.o: ../test_suite/call_tests/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/Debug/utils/cobf2f/subdir.mk b/Debug/utils/cobf2f/subdir.mk
new file mode 100644
index 0000000..6c24eb7
--- /dev/null
+++ b/Debug/utils/cobf2f/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../utils/cobf2f/cobf2f.c
+
+OBJS += \
+./utils/cobf2f/cobf2f.o
+
+C_DEPS += \
+./utils/cobf2f/cobf2f.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+utils/cobf2f/%.o: ../utils/cobf2f/%.c
+ @echo 'Building file: $<'
+ @echo 'Invoking: GCC C Compiler'
+ gcc -I"C:\MinGW\include" -I"C:\Tcl\include" -I"C:\PostgreSQL\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
+ @echo 'Finished building: $<'
+ @echo ' '
+
+
diff --git a/HISTORY b/HISTORY
new file mode 100644
index 0000000..b20cbaf
--- /dev/null
+++ b/HISTORY
@@ -0,0 +1,22 @@
+Hi fellow hacker!
+
+This is not a full-featured product, but rather historic sources of my own tool: a Cobol compiler I have done from scratch and found it floating around my
+"spare parts" box. It may be useful as a skeleton for a new project, or just a
+grab bag of ideas for your own work.
+This is supposed to work with my "HandTerm" and "MT-100" micro-terminals, some
+hardware projects I used to manufacture some years ago¸ but it's not produced
+anymore.
+I wouldn't even try to compile this sources again, because it's so dependent on
+the environment (micro-terminal, msdos, and specific C compiler) and I don't
+remember how to make all things go smooth. Please don't ask me how to remake
+this.
+Included there is a full compiler (almost ANSI 76 compliant, if I remember
+well), the runtime library, and a nice source-level debugger written mostly in
+prolog. When compiled and linked, the object is a TSR (Terminate and Stay
+Resident) program for msdos.
+
+This is released as GPL licensed. Please see the enclose file COPYING.
+
+I hope you enjoy.
+
+Rildo Pragana
diff --git a/INSTALL.BeOS b/INSTALL.BeOS
new file mode 100644
index 0000000..c9ae465
--- /dev/null
+++ b/INSTALL.BeOS
@@ -0,0 +1,200 @@
+The TinyCOBOL Project.
+
+TinyCOBOL supports the IA32 (x86) architecture and the following platforms.
+
+- FreeBSD using the GCC compiler.
+- Linux using the GCC compiler.
+- Win32 using the GCC MinGW (Mingw32) compiler.
+- Win32 using the GCC Cygwin compiler and POSIX emulation layer.
+- BeOS with a bit of luck!
+
+See 'INSTALL.Win32' file notes for information on the Win32 platforms.
+
+-------------------------------------------------------------------------------
+
+Release Notes: BeOS
+
+Sleepycat's Berkeley DB 4.1.25 compiles perfectly on BeOS with 'configure --enable-compat185 --prefix=/boot/home/config'
+
+do 'make', and 'make install'
+
+Once you have Berkeley DB, continue to build TinyCOBOL
+
+The configure script will attempt to properly configure such systems.
+
+However due to the number of permutations the configure script may
+fail to configure for Berkeley's DB library.
+
+If the normal configure fails to properly detect Berkeley's lib DB on
+your system, try the following option:
+ ./configure --prefix=/boot/home/config --with-libdb=4
+
+If the '--with-libdb=4' option fails to properly detect Berkeley's DB
+on your system, then some temporary links may be used to circumvent
+this problem.
+ ln -s libdb1.so.xx libdb.so
+ ln -s db1/db.h db.h
+
+Also, copy the ncurses headers to /boot/home/config/include
+
+-------------------------------------------------------------------------------
+
+Requirements:
+
+GCC tool set (GCC, AS, LD):
+This compiler generates GAS compatible assembler code for the i386 Linux platform.
+The final compilation and linkage can be done by GCC, or by htcobol
+using the -x option.
+
+Bison or Berkeley's YACC (byacc) version 1.9.3 is required to compile
+the TC parser.
+Berkeley's YACC version 1.9.3 (byacc) can be downloaded only from the
+TC 'snapshot' web page.
+Previous versions will not work, as the table size is inadequate to handle
+the large COBOL grammar.
+
+Library DB (version db-1.85.4 or later):
+This library is used to access indexed files. It is available on iBiblio(1),
+or at Sleepycat(2).
+Note that version 1.85 and 2.0 may be named -ldb or -ldb1. Version 2.xx, 3.yy
+(xx > 0) may be named -ldb or -ldb2.
+
+Note that later versions of libdb, such as 3.0.55, have a compatibility to
+version 1.85 option, when configured with '--enable-compat185' (DB 1.85
+compatibility API).
+
+Note that the configure script will try to determine and test for the
+library db version using various library names (-ldb -ldb1 -ldb2). However
+the test.code and test_suite directory Makefiles will require minor manual
+modifications if library db is named as libdb1, libdb2 or libdb3 on your system.
+This will be changed at a later date.
+
+The current configure script will try to determine which version of library
+db is been used, assuming the library is called libdb.so*, libdb.a.
+It does so by checking for the existence of the headers and library, and then
+performs the following tests:
+- If header db_185.h is found, it does a test compile with libdb, to ensure
+ that the compatibility to version 1.85 option set.
+- If header db_185.h is not found, it searches for header db.h.
+- If header db.h is found, it does a test to ensure that the header belongs
+ to version 1.85 of libdb, and finally it does a test compile, to ensure
+ it is version 1.85 of libdb.
+
+Note that database file formats are incompatible between version 1.85.4 and 2.xx
+and later. Thus indexed files created by a COBOL program using version 1.85.4 of db,
+will not be readable by any COBOL program using later versions of db.
+
+
+1) iBiblio (formerly known as Metalab, Sunsite)
+ http://www.ibiblio.org/pub/linux/libs/db
+ db-1.85.4-bin-ELF.tar.gz - shared lib of db 1.85.4
+ db-1.85.4-src.tar.gz - full source tree for db 1.85.4
+
+2) Sleepycat Software
+ http://www.sleepycat.com/
+ versions 2.xx and later (current 4.xx series)
+
+ncurses:
+The ncurses library is required. Used in screen I/O.
+
+readline:
+The realine library version 2 is optional. Set by WANT_READLINE build option.
+
+-------------------------------------------------------------------------------
+
+To build:
+
+./configure
+make
+make install (su access required)
+
+Note that the test programs found in test_suite and test.code directories,
+can be compiled and run without installing htcobol.
+
+configure options:
+--enable and --with options recognized:
+ --with-compiler=[ARG] use compiler [gcc/kgcc/egcs default=gcc]
+ --with-yacc=[ARG] use YACC [yacc193 default=bison]
+ --enable-debug set C compiler debug option on [-g]
+ --enable-debug-all enable all debug options
+ --enable-debug-comp enable compiler and scanner debug options
+ --enable-debug-compiler enable compiler debug option
+ --enable-debug-scanner enable scanner debug option
+ --enable-debug-rts enable debug Run-Time option
+ --enable-debug-rts-move enable debug Run-Time Move routines option
+ --enable-debug-pp enable debug pre-processor option
+ --with-libdb=[ARG] use DB library version [2 3]
+ --with-readline use readline library
+ --with-dl use dynamic loader for RTS libraries
+
+
+Note:
+The '--enable-debug-comp' configure option will enable the compiler trace
+information generated by the compiler, and used to debug the compiler itself.
+It will not effect compiler debug option '-D', which adds debugging data to
+the generated binary.
+
+Unless you are a developer, or are planning to debug the compiler itself, or
+like to look at substantial amounts of trace data, it is recommended that the
+above configure option be omitted.
+
+To clean:
+Type make clean to clean lib and compiler.
+
+Type make cleanall to clean lib, compiler, utils, test.code.
+
+Type make distclean to clean lib and compiler and config.cache config.status
+config.log Makefiles.
+
+Some test programs can be found in test.code directory.
+
+The utils directory contains some utility programs.
+
+cobf2f (Option, not installed by default):
+Converts to/from fixed and free-form COBOL formats.
+
+-------------------------------------------------------------------------------
+
+The TinyCOBOL pre-processor.
+
+What it does.
+- convert from fixed to free-form COBOL format.
+- Process the COPY command.
+- Process the REPLACE command (not functional in current version).
+
+The pre-processor is now part of the main compiler.
+
+-------------------------------------------------------------------------------
+
+Environmental variables:
+
+The 'TCOB_OPTIONS_PATH' environment variable sets the directory where the compiler options
+file 'htcobolrc' can be found.
+
+The 'TCOBRT_CONFIG_DIR' environment variable sets the directory where the run-time options
+file 'htrtconf' can be found.
+
+The 'TCOB_LD_LIBRARY_PATH' and 'LD_LIBRARY_PATH' environment variables sets the Dynamically loaded
+shared libraries search path (excluding Win32).
+
+-------------------------------------------------------------------------------
+
+To install:
+
+If necessary edit directories and filenames htconfig.h, Makefile in compiler directory,
+and Makefile in lib directory to suit.
+
+Edit the compiler resource file called htcobolrc found in the compiler directory.
+
+The compiler resource file name can be set in htconfig.h.
+This file contains installation specific default information.
+
+As su, in the root directory type make install.
+
+-------------------------------------------------------------------------------
+
+Reported problems:
+
+Please email me at matt@verranm.fsnet.co.uk
+
+send me your config.log and a screen print, with a description of your problems
diff --git a/INSTALL.Win32 b/INSTALL.Win32
new file mode 100644
index 0000000..c7947d1
--- /dev/null
+++ b/INSTALL.Win32
@@ -0,0 +1,14 @@
+TinyCOBOL On Win32
+
+Note that the Win32 release has not been fully tested on all Win32 platforms.
+As a result you may not get the full functionality of the UN*X version.
+
+TinyCOBOL MinGW (Mingw32) edition (Win32 native port)
+-----------------------------------------------------------------------------
+See 'Readme.mingw32.txt' file.
+
+
+TinyCOBOL Cygwin edition (using the Cygwin UN*X / POSIX emulation layer)
+-----------------------------------------------------------------------------
+See 'Readme.cygwin.txt' file.
+
diff --git a/INSTALL.bin b/INSTALL.bin
new file mode 100644
index 0000000..722308a
--- /dev/null
+++ b/INSTALL.bin
@@ -0,0 +1,39 @@
+The TinyCOBOL Project.
+
+Binaries install instructions:
+-------------------------------------------------------------------------------
+LINUX and BSD:
+
+Release Notes for Linux and FreeBSD.
+
+Requirements:
+
+GCC:
+Since this compiler generates GAS compatible assembler code, the final
+compilation and linkage is done by GCC.
+
+db-1.85.4:
+This library is used to access indexed files. It is available on Metalab(1),
+both as a libc5 ELF binary and as source.
+
+1) Ibiblio (formely known as Sunsite Metalab)
+ http://www.ibiblio.org/pub/linux/libs/db
+ db-1.85.4-bin-ELF.tar.gz - shared lib of db 1.85.4
+ db-1.85.4-src.tar.gz - full source tree for db 1.85.4
+
+ncurses:
+The ncurses library is required. Used in screen I/O.
+
+
+To install(su access required):
+
+As su, in the root directory type make install.
+
+Note:
+Test programs found in test.code directories can be build and run without
+installing Tiny COBOL. See Readme.txt files in test.code directories for instructions.
+
+Binaries in utils directories are not installed by main make install. To install
+utils use utils directory Makefile.
+
+-------------------------------------------------------------------------------
diff --git a/KNOWN-BUGS.txt b/KNOWN-BUGS.txt
new file mode 100644
index 0000000..e3037cc
--- /dev/null
+++ b/KNOWN-BUGS.txt
@@ -0,0 +1,11 @@
+Bug na movimentação de campos com pic Z:
+----------------------------------------
+
+VAR1 PIC ZZZ.ZZZ.ZZZ,ZZ
+VAR2 PIC ZZZ.ZZZ.ZZZ,ZZ
+
+MOVE 1234,56 TO VAR1
+MOVE VAR1 TO VAR2
+DISPLAY VAR2
+
+mostra 1234,00 quando deveria ser 1.234,56
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..307fca8
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,45 @@
+SHELL=/bin/sh
+
+
+
+prefix=/usr/local
+exec_prefix=${prefix}
+subdirs=compiler lib cobrun cobroutines
+subdirs1=compiler lib cobrun cobpp cobroutines
+subdirs2=compiler
+subdirs3=lib
+
+all:
+ @for i in ${subdirs}; do \
+ echo Making all in $$i ; \
+ (cd $$i; ${MAKE} all) ; \
+ done
+
+devel:
+ @for i in ${subdirs2}; do \
+ echo Making all in $$i ; \
+ (cd $$i; ${MAKE} all) ; \
+ done
+ @for i in ${subdirs3}; do \
+ echo Making devel in $$i ; \
+ (cd $$i; ${MAKE} all) ; \
+ done
+
+install:
+ @for i in ${subdirs}; do \
+ echo Installing in $$i ; \
+ (cd $$i; ${MAKE} install) ; \
+ done
+
+clean:
+ @for i in ${subdirs1}; do \
+ echo Cleaning in $$i ; \
+ (cd $$i; ${MAKE} clean) ; \
+ done
+
+distclean cleandist: clean
+ @rm -f config.cache config.status config.log htconfig.h tcobol.iss Makefile \
+ compiler/htversion.h compiler/htcobolrc compiler/Makefile \
+ cobpp/tcppversion.h cobpp/Makefile \
+ lib/htcobolrt.rc lib/Makefile
+
diff --git a/Makefile-tiny.mk b/Makefile-tiny.mk
new file mode 100644
index 0000000..e137db5
--- /dev/null
+++ b/Makefile-tiny.mk
@@ -0,0 +1,109 @@
+#
+# There exist several targets which are by default empty and which can be
+# used for execution of your targets. These targets are usually executed
+# before and after some main targets. They are:
+#
+# .build-pre: called before 'build' target
+# .build-post: called after 'build' target
+# .clean-pre: called before 'clean' target
+# .clean-post: called after 'clean' target
+# .clobber-pre: called before 'clobber' target
+# .clobber-post: called after 'clobber' target
+# .all-pre: called before 'all' target
+# .all-post: called after 'all' target
+# .help-pre: called before 'help' target
+# .help-post: called after 'help' target
+#
+# Targets beginning with '.' are not intended to be called on their own.
+#
+# Main targets can be executed directly, and they are:
+#
+# build build a specific configuration
+# clean remove built files from a configuration
+# clobber remove all built files
+# all build all configurations
+# help print help mesage
+#
+# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+# .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+# Available make variables:
+#
+# CND_BASEDIR base directory for relative paths
+# CND_DISTDIR default top distribution directory (build artifacts)
+# CND_BUILDDIR default top build directory (object files, ...)
+# CONF name of current configuration
+# CND_PLATFORM_${CONF} platform name (current configuration)
+# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
+# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
+# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
+# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
+# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
+# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..6746dd5
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,98 @@
+SHELL=/bin/sh
+
+@SET_MAKE@
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+#subdirs=compiler lib utils
+#subdirs=compiler lib utils cobpp test.code
+subdirs=compiler lib cobrun test.code info
+subdirs1=utils test.code
+subdirs2=compiler lib cobrun utils test_suite test.code cobpp
+#subdirs3=compiler lib
+subdirs3=compiler lib cobrun cobpp info
+subdirs4=compiler lib cobrun info utils
+subdirs5=lockserver
+subdirs6=compiler test.code info
+subdirs7=lib
+
+all:
+ @for i in ${subdirs}; do \
+ echo Making all in $$i ; \
+ (cd $$i; ${MAKE} all) ; \
+ done
+
+devel:
+ @for i in ${subdirs}; do \
+ echo Making devel in $$i ; \
+ (cd $$i; ${MAKE} devel) ; \
+ done
+
+slibs:
+ @for i in ${subdirs6}; do \
+ echo Making in $$i ; \
+ (cd $$i; ${MAKE}) ; \
+ done
+ @for i in ${subdirs7}; do \
+ echo Making in $$i ; \
+ (cd $$i; ${MAKE} shared-libs) ; \
+ done
+
+install:
+ @for i in ${subdirs}; do \
+ echo Installing in $$i ; \
+ (cd $$i; ${MAKE} install) ; \
+ done
+
+install-slibs:
+ @for i in ${subdirs6}; do \
+ echo Installing in $$i ; \
+ (cd $$i; ${MAKE} install) ; \
+ done
+ @for i in ${subdirs7}; do \
+ echo Installing in $$i ; \
+ (cd $$i; ${MAKE} install-shared) ; \
+ done
+
+lockserver:
+ @for i in ${subdirs5}; do \
+ echo Making lock server in $$i ; \
+ (cd $$i; ${MAKE} all) ; \
+ done
+
+depend:
+ @for i in ${subdirs}; do \
+ echo Depending in $$i ; \
+ (cd $$i; ${MAKE} depend) ; \
+ done
+
+clean:
+ @for i in ${subdirs4}; do \
+ echo Cleaning in $$i ; \
+ (cd $$i; ${MAKE} clean) ; \
+ done
+
+distclean cleandist:
+ @for i in ${subdirs3}; do \
+ echo Cleaning in $$i ; \
+ (cd $$i; ${MAKE} clean; rm -f Makefile) ; \
+ done
+ @for i in ${subdirs1}; do \
+ echo Cleaning dist in $$i ; \
+ (cd $$i; ${MAKE} distclean; rm -f Makefile) ; \
+ done
+ @for i in ${subdirs5}; do \
+ echo Cleaning in $$i ; \
+ (cd $$i; ${MAKE} clean; rm -f Makefile) ; \
+ done
+ @rm -f config.cache config.status config.log htconfig.h Makefile \
+ compiler/htversion.h compiler/htcobolrc \
+ cobpp/tcppversion.h lib/htcobolrt.rc
+
+cleanall:
+ @for i in ${subdirs2}; do \
+ echo Cleaning in $$i ; \
+ (cd $$i; ${MAKE} clean) ; \
+ done
+ rm -f config.cache config.status config.log
+# find . -name Makefile -exec rm {} \; -print
diff --git a/Makefile.mingw b/Makefile.mingw
new file mode 100644
index 0000000..307fca8
--- /dev/null
+++ b/Makefile.mingw
@@ -0,0 +1,45 @@
+SHELL=/bin/sh
+
+
+
+prefix=/usr/local
+exec_prefix=${prefix}
+subdirs=compiler lib cobrun cobroutines
+subdirs1=compiler lib cobrun cobpp cobroutines
+subdirs2=compiler
+subdirs3=lib
+
+all:
+ @for i in ${subdirs}; do \
+ echo Making all in $$i ; \
+ (cd $$i; ${MAKE} all) ; \
+ done
+
+devel:
+ @for i in ${subdirs2}; do \
+ echo Making all in $$i ; \
+ (cd $$i; ${MAKE} all) ; \
+ done
+ @for i in ${subdirs3}; do \
+ echo Making devel in $$i ; \
+ (cd $$i; ${MAKE} all) ; \
+ done
+
+install:
+ @for i in ${subdirs}; do \
+ echo Installing in $$i ; \
+ (cd $$i; ${MAKE} install) ; \
+ done
+
+clean:
+ @for i in ${subdirs1}; do \
+ echo Cleaning in $$i ; \
+ (cd $$i; ${MAKE} clean) ; \
+ done
+
+distclean cleandist: clean
+ @rm -f config.cache config.status config.log htconfig.h tcobol.iss Makefile \
+ compiler/htversion.h compiler/htcobolrc compiler/Makefile \
+ cobpp/tcppversion.h cobpp/Makefile \
+ lib/htcobolrt.rc lib/Makefile
+
diff --git a/README b/README
new file mode 100644
index 0000000..0a42507
--- /dev/null
+++ b/README
@@ -0,0 +1,109 @@
+The TinyCOBOL Project:
+
+The TinyCOBOL project is a COBOL compiler being actively developed by
+members of the free software community.
+
+
+The long term goal is to produce a COBOL compiler which is 'COBOL 85 standard'
+compliant, or at least as close as reasonably possible.
+
+TinyCOBOL supports the IA32 (x86) architecture and the following platforms.
+
+- FreeBSD using the GCC compiler.
+- Linux using the GCC compiler.
+- Win32 using the GCC MinGW (Mingw32) compiler.
+- Win32 using the GCC Cygwin compiler and POSIX emulation layer.
+
+-------------------------------------------------------------------------------
+BUILD AND INSTALL INSTRUCTIONS:
+
+See INSTALL for Linux and BSD build, install instructions.
+
+See INSTALL.bin for Linux binary install instructions.
+
+See INSTALL.Win32 for Win32 systems build, install instructions.
+
+For Record Locking on Indexed IO, follow these steps
+- Use the option --enable-lockserv in configure script.
+- Use the option --enable-sync if you want to ensure muliple users all see the same data. It will run much slower as every write will be forced to disk.
+- Compile the Lockserver in the lockserver directory using the supplied
+Makefile.
+ex:
+$ cd lockserver
+$ make
+$ make install
+- Run the Lockserver process. (You can use ./lockserver -d for debugging)
+- Build the Compiler as Normal.
+
+Notes about lockserver:
+1). To start the lockserver.
+ cd
+ Then run the following command as root
+ $ ./lockserver
+2). To debug the lockserver process use the "-d" switch
+ $ ./lockserver -d
+ This way, lockserver will not start as a daemon and will display
+ all output on the screen.
+3). To stop the lockserver in debug mode press Control-C.
+ To stop the Lockserver in Daemon mode first get the pid.
+ Use the -SIGINT signal to shut it down gracefully.
+ $ kill -2
+ remove the .lf file in the Lockserver Home is it exists.
+
+Notes about the Behavior of Locking in TC:
+ On All Indexed IO ALWAYS check the FILE STATUS
+ to make sure your IO was successfull. If a Record was locked it will
+ return FILE STATUS 51. You will need to repeat your IO until the FILE Status
+ is NOT 51 (Failure to have Recovery/Repeat Code will render the Results of
+ your IO to be Undefined and Unexpected results). If one of your programs
+ crashes all the locks it had will still be defined. In order to clear this
+ Stop the Lockserver and remove the lockdump and .lf files if they exist
+ in /usr/local/lockserver. Then restart the Lockserver. We plan to add code
+ to Ignore a lock on records of programs that have crashed.
+ WARNING Once you turn on Locking your programs will not run unless the
+ Lockserver process is running.
+ To lock a Record use:-
+ READ ... WITH LOCK
+ To Read a Record Ignoring Locking use:-
+ READ ... WITH IGNORE LOCK
+ To Unlock a Record use:-
+ REWRITE ....
+ UNLOCK
+ or
+ DELETE the record.
+
+
+-------------------------------------------------------------------------------
+LINKS:
+
+Home pages:
+http://tiny-cobol.sourceforge.net/
+http://www.tinycobol.org/
+http://br.tinycobol.org/
+
+Download:
+http://tiny-cobol.sourceforge.net/download.html
+http://www.ibiblio.org/pub/Linux/devel/lang/cobol/
+http://br.tinycobol.org/download.html
+
+Mailing lists:
+http://lists.sourceforge.net/mailman/listinfo/tiny-cobol-users
+http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/cobol-br
+
+Mailing list archives:
+http://www.geocrawler.com/redir-sf.php3?list=tiny-cobol-users
+http://listas.cipsga.org.br/pipermail/cobol-br/
+
+Old mailing list archives:
+http://www.egroups.com/group/gnucobol/
+
+-------------------------------------------------------------------------------
+HOW TO DOWNLOAD A SOURCE SNAPSHOT FROM CVS:
+
+If you have CVS installed on your system, TinyCOBOL's CVS version can be
+checked out via the anonymous CVS (pserver) server, using the following commands.
+- cvs -d:pserver:anonymous@cvs.tiny-cobol.sourceforge.net:/cvsroot/tiny-cobol login
+- When prompted for a password for anonymous, simply press the Enter key.
+- cvs -d:pserver:anonymous@cvs.tiny-cobol.sourceforge.net:/cvsroot/tiny-cobol co development
+- The module you wish to check out must be specified as the module-name (development).
+
diff --git a/Raw.dat b/Raw.dat
new file mode 100644
index 0000000..31bf8c6
--- /dev/null
+++ b/Raw.dat
@@ -0,0 +1,11 @@
+
+001aaaaaaaaab
+002aaaaaaaaab
+003aaaaaaaaab
+004aaaaaaaaab
+005aaaaaaaaab
+006aaaaaaaaab
+007aaaaaaaaab
+008aaaaaaaaab
+009aaaaaaaaab
+010aaaaaaaaab
\ No newline at end of file
diff --git a/Readme.cygwin.txt b/Readme.cygwin.txt
new file mode 100644
index 0000000..728e858
--- /dev/null
+++ b/Readme.cygwin.txt
@@ -0,0 +1,98 @@
+TinyCOBOL Cygwin (POSIX/UN*X emulation layer) edition for Win32
+
+How to install and setup TinyCOBOL Cygwin edition using the binary distribution
+-----------------------------------------------------------------------------
+
+To run TinyCOBOL Cygwin edition the following must be installed on your system:
+- The Cygwin POSIX emulation layer from Cygnus.
+- GCC Cygwin version.
+- The Curses library (ncurses) Cygwin version.
+ Required by the SCREEN SECTION and some types of DISPLAY statements.
+- Berkeley's DB library (version db-1.85.4 or later) Cygwin version.
+ Required for all file I/O.
+
+How to install the TinyCOBOL Cygwin binary:
+- Install the binary files using one of the methods below.
+ Use the 'setup.exe' program, included with the Cygwin distribution,
+ and select the TinyCOBOL binary to install.
+ OR
+ Open a Cygwin command line and install the TinyCOBOL binaries using
+ the tar utility.
+ Example:
+ cd /
+ tar -xvzf tinycobol-x.xx-x.cygwin.tar.gz
+
+
+- Edit the compiler resource file 'htcobolrc'.
+ Example (set your paths):
+ LD_PATH: -L/usr/lib -L/usr/local/lib
+- Set the TinyCOBOL environment variables.
+ Example (DOS or CMD window):
+ set TCOB_OPTIONS_PATH=C:\cygwin\usr\local\share\htcobol
+ set TCOBRT_CONFIG_DIR=C:\cygwin\usr\local\share\htcobol
+ Example (shell resource file):
+ export TCOB_OPTIONS_PATH=/usr/local/share/htcobol
+ export TCOBRT_CONFIG_DIR=/usr/local/share/htcobol
+
+
+How to build and install the TinyCOBOL Cygwin edition from the source code
+-----------------------------------------------------------------------------
+- The Cygwin POSIX emulation layer from Cygnus.
+- GCC Cygwin version.
+- make (make).
+- flex (flex).
+- Bison or Berkeley's YACC (byacc) version 1.9.3.
+ Earlier versions of Berkeley's YACC will not work.
+- The Curses library (ncurses) Cygwin version.
+ Required by the SCREEN SECTION and some types of DISPLAY statements.
+- Berkeley's DB library (version db-1.85.4 or later) Cygwin version.
+ Required for all file I/O.
+
+How to configure and compile TinyCOBOL Cygwin edition.
+- Extract 'tinycobol-x.xx-x' TAR/GZIP archive.
+- Run the configure script 'configure' (1).
+- Type 'make' to compile the compiler and run-time (2).
+
+How to install TinyCOBOL Cygwin edition.
+- Configure and compile TinyCOBOL Cygwin edition.
+- Type 'make install' to install the compiler and run-time.
+
+Example:
+ ./configure
+ make
+ make install
+
+Notes:
+1)
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+ Some influential environment variables:
+ LDFLAGS linker flags, e.g. -L if you have libraries in a
+ nonstandard directory
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have
+ headers in a nonstandard directory
+2)
+ To build shared libraries (DLL) use 'make devel'.
+ Note that this has not been tested for the Cygwin platform
+ and will require manual modifications to the make file
+ in the 'lib' directory.
+
+
+Release notes
+-----------------------------------------------------------------------------
+To run the TinyCOBOL regression test suite for the Win32 MinGW release
+requires the following to be installed on your system.
+- Perl 5.x
+
+Binaries for BDB can be downloaded from the TinyCOBOL(1) page.
+
+The following are not included in binary distribution.
+- Regression test suite sources.
+- Utility programs binaries.
+- Sample COBOL code sources.
+
+Links
+-----------------------------------------------------------------------------
+1) TinyCOBOL
+http://tiny-cobol.sourceforge.net/download.html
+
diff --git a/Readme.mingw32.txt b/Readme.mingw32.txt
new file mode 100644
index 0000000..6050b04
--- /dev/null
+++ b/Readme.mingw32.txt
@@ -0,0 +1,99 @@
+TinyCOBOL MinGW (Mingw32) edition for Win32
+
+
+How to install and setup TinyCOBOL MinGW edition using INNO setup
+-----------------------------------------------------------------------------
+
+To run TinyCOBOL MinGW edition the following must be installed on your system:
+- GCC MinGW version.
+- Berkeley's DB library (MinGW) version 1.85.
+- PDcurses library (MinGW) version 2.4 or later.
+
+Installation using the setup binary:
+- Run the INNO setup (ex: tinycobol-0.62-1.mingw.exe) binary.
+- Edit the compiler resource file 'htcobolrc'.
+ Example (set your paths):
+ LD_PATH: -L/usr/lib -LD:/TinyCOBOL
+- Create a DOS or CMD window shortcut.
+- Set the TinyCOBOL and PATH environment variables.
+ Win9x users (DOS):
+ Use the enclosed batch file 'tcobol.bat' as a template.
+ Set the initial environment memory to 4096.
+ Win2K/XP users (CMD):
+ Use the properties sheet to set the values.
+
+Example:
+ set TCOB_OPTIONS_PATH=C:\TinyCOBOL
+ set TCOBRT_CONFIG_DIR=C:\TinyCOBOL
+ set PATH=C:\TinyCOBOL;C:\mingw\bin;%PATH%
+
+
+How to build and install the TinyCOBOL MinGW edition from the source code
+-----------------------------------------------------------------------------
+
+To build TinyCOBOL Win32 MinGW release requires the following to be
+installed on your system.
+- MSYS or some sort of POSIX shell.
+- GCC MinGW version.
+- make (make).
+- flex (flex).
+- Bison or Berkeley's YACC (byacc) version 1.9.3.
+ Earlier versions of Berkeley's YACC will not work.
+- Berkeley's DB library (MinGW) version 1.85.
+ Required for all file I/O.
+- PDcurses library (MinGW) version 2.4 or later.
+ Required by the SCREEN SECTION and some types of DISPLAY statements.
+
+How to configure and compile TinyCOBOL MinGW edition.
+- Extract 'tinycobol-x.xx-x' TAR/GZIP archive.
+- Run the MinGW configure script 'tconfig.mingw.sh' using the '-i' option
+ to set the install directory (1) (2).
+ Example:
+ sh tconfig.mingw.sh -i 'D:/TinyCOBOL'
+- Type 'make' to compile the compiler and run-time (3).
+
+How to install TinyCOBOL MinGW edition.
+- Configure and compile TinyCOBOL MinGW edition.
+- Type 'make install' to install the compiler and run-time (4).
+
+
+Notes:
+1)
+ Default install directory is 'C:/TinyCOBOL'.
+2)
+ Running the UN*X 'configure' script will on MSYS
+ will not properly setup all the variables.
+3)
+ To build the TC run-time as a static library and DLL use 'make devel'.
+4)
+ The install directory is set in the configure, step 1.
+
+
+How to create the TinyCOBOL MinGW edition INNO setup executable from the source code
+-----------------------------------------------------------------------------
+
+- Configure and compile TinyCOBOL MinGW edition as described above.
+- Use the INNO setup script 'tcobol.iss' to create the INNO setup executable.
+
+
+Release notes
+-----------------------------------------------------------------------------
+To run the TinyCOBOL regression test suite for the Win32 MinGW release
+requires the following to be installed on your system.
+- Perl 5.x
+
+Binaries for BDB and PDcurses can be downloaded from the TinyCOBOL(1) or GNUwin32(2) pages.
+
+The following are not included in binary distribution.
+- Regression test suite sources.
+- Utility programs binaries.
+- Sample COBOL code sources.
+
+Links
+-----------------------------------------------------------------------------
+1) TinyCOBOL
+http://tiny-cobol.sourceforge.net/download.html
+
+2) GNUwin32
+http://gnuwin32.sourceforge.net/
+
diff --git a/STATUS b/STATUS
new file mode 100644
index 0000000..22e72f4
--- /dev/null
+++ b/STATUS
@@ -0,0 +1,119 @@
+The TinyCOBOL Project STATUS:
+
+TinyCOBOL supports the IA32 (x86) architecture and the following platforms.
+
+- FreeBSD using the GCC compiler.
+- Linux using the GCC compiler.
+- Win32 using the GCC MinGW (Mingw32) compiler.
+- Win32 using the GCC Cygwin compiler and POSIX emulation layer.
+
+Currently the compiler will generate GNU assembler code. With the aid
+of GNU assembler and linker, a executable binary can be created to run
+on the above mentioned IA32 (x86) platforms.
+
+The compiler will work with COBOL sources which are in standard fixed
+column or X/Open free form formats. A conversion utility to convert fixed
+to free form COBOL source code is included in all sources.
+
+The term COBOL 85 standard as used by TinyCOBOL refers to the combination
+of the following standards.
+- ISO 1985.........: Programming Languages - COBOL.
+- ISO 1989-1.......: Programming Languages - Intrinsic Function Module - COBOL.
+- ANSI X3.23-1985..: Programming Languages - COBOL.
+- ANSI X3.23a-1989.: Programming Languages - Intrinsic Function Module - COBOL.
+- X/Open XPG3......: COBOL programming languages extensions.
+
+The current released snapshot has support for the following features and/or
+COBOL syntax.
+
+- ACCEPT, DISPLAY (including stdin, stderr, stdout).
+- ACCEPT, DISPLAY.
+ Line I/O (stdin, stderr, stdout).
+ Screen I/O (non COBOL 85 standard extension).
+ at LINE ... POSITION ... (non COBOL 85 standard extension).
+- CALL (including dynamic load).
+ BY REFERENCE.
+ BY VALUE.
+ BY CONTENT.
+ RETURNING variable (non COBOL 85 standard extension).
+- CHAIN (non COBOL 85 standard extension).
+- CURRENCY SIGN, DECIMAL-POINT.
+- Debugging facility using GDB (not fully functional).
+- Embedded SQL using vendor supplied SQL Pre-Processor.
+- External variables.
+- EVALUATE.
+- File I/O.
+ Includes OPEN, CLOSE, DELETE, READ, WRITE, REWRITE, START
+ READ .. WITH LOCK
+ READ .. WITH IGNORE LOCK
+ Variable record length file IO (preliminary).
+ Locking for relative files (preliminary).
+ Locking for Indexed files using Lockserver supplied (preliminary).
+- Floating point types (USAGE IS [ FLOAT-LONG | COMP-2 | FLOAT-SHORT | COMP-1 ]).
+- GO TO, GO TO ... DEPENDING ON.
+- GOBACK (non COBOL 85 standard extension).
+- IF/ELSE conditional statements (all options are implemented).
+- INITIALIZE.
+- INSPECT (not all options are implemented).
+- Integrated COBOL pre-processor.
+ Supports free and fixed syntax formats.
+ Supports all COPY statements including the REPLACING clause.
+ The REPLACE statements are not implemented.
+- Intrinsic Functions.
+- Linux extensions (return code, command line, environmental variables).
+- Math verbs (including [NOT] ON SIZE ERROR options).
+ ADD (including CORRESPONDING option).
+ COMPUTE (+ - * / ** operators implemented).
+ DIVIDE.
+ MULTIPLY.
+ SUBTRACT (including CORRESPONDING option).
+- MOVE(including CORRESPONDING option).
+- Multi dimensional arrays and tables.
+ Variable size arrays and tables (preliminary).
+- NEXT SENTENCE, CONTINUE (does not conform to COBOL 85 standard).
+- PERFORM (all options implemented).
+- POINTER types (USAGE IS POINTER).
+- Reference Modification.
+- Scope terminators for COBOL 85 (END-IF .... END-PERFORM).
+- Sequence of source programs.
+- SCREEN SECTION (COBOL 2002 draft standard).
+- SET.
+- STRING (Not all options are implemented).
+- SORT, RELEASE, RETURN.
+ USING and GIVING clauses only work on sequential files.
+ The sort work file is kept in memory and not written to disk.
+- SEARCH.
+- SEARCH ALL.
+- SELECT ... ASSIGN (not all options are implemented).
+ Supports non-standard external file name assignment in SELECT and FD statements.
+- Static variables.
+- TRACE, READY/RESET (not functional).
+- UNSTRING.
+- UNLOCK.
+- Variable length (1, 2, 4, 8) support for BINARY, COMP, COMP-5 fields.
+- Variable record length file IO (preliminary)
+- Variable size arrays (preliminary).
+
+The following features and/or COBOL syntax are currently under development.
+
+- CORRESPONDING options in the MOVE, ADD, SUBTRACT statements (preliminary).
+- DEBUG lines.
+- EXTERNAL semantics (preliminary).
+- Inline comments (2002 draft standard).
+- Intrinsic Functions (preliminary).
+- PROCEDURE DIVISION DECLARATIVES (preliminary).
+- The REPORT SECTION (preliminary).
+- Variable record length file IO (preliminary).
+- Variable size arrays (preliminary).
+
+The following features and/or COBOL syntax are not currently supported:
+
+- Any portion of the COMMUNICATION SECTION.
+- Non native IA32 types (big-endian).
+- Support for 33 digit precision for temporary variables in RTS.
+- Nested sequence of source programs.
+
+The following features and/or COBOL syntax are not likely to ever be
+supported.
+- The ALTER statement.
+
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..cb8ffac
--- /dev/null
+++ b/TODO
@@ -0,0 +1,5 @@
+* Include the sources of db-1.85 in our distribution to become
+ easier the life for users of RedHat, Caldera, and others Linux
+ distributions.
+ To avoid clashes with previous libdb installed, we could rename
+ our own library (?).
diff --git a/cbl2cob/cbl2cob.cob b/cbl2cob/cbl2cob.cob
new file mode 100644
index 0000000..01bf225
--- /dev/null
+++ b/cbl2cob/cbl2cob.cob
@@ -0,0 +1,599 @@
+ *
+ * Copyright (C) 2003, Hudson Reis,
+ * Infocont Sistemas Integrados Ltda.
+ *
+ * This program 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 2,
+ * or (at your option) any later version.
+ *
+ * This program 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 this software; see the file COPYING.
+ * If not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ identification division.
+ program-id. cbl2cob.
+ author. Hudson Reis.
+ date-written. 03/05/2003.
+ *
+ * Front-end para pré-processar o fonte de entrada e chamar o
+ * parser selecionado, mediante a escolha do usuário.
+ *
+ environment division.
+ configuration section.
+ input-output section.
+ file-control.
+ copy "entrada.sl".
+ copy "intermed.sl".
+ copy "saida.sl".
+
+ data division.
+ file section.
+ copy "entrada.fd".
+ copy "intermed.fd".
+ copy "saida.fd".
+
+ working-storage section.
+ copy "globals.ws".
+ copy "globals.ls".
+ 77 filler pic x(001) value spaces.
+ * Linha de comando para pegar a string digitada pelo usuario.
+ 77 ws77-linha-comando pic x(512) value spaces.
+ * Variáveis que serão usadas para quebrar a frase
+ * passada na linha de comando, pelo usuário.
+ * O número máximo argumentos supotados é 8.
+ 01 ws01-args.
+ 02 ws02-arg-a pic x(256) value spaces.
+ 02 ws02-arg-b pic x(256) value spaces.
+ 02 ws02-arg-c pic x(256) value spaces.
+ 02 ws02-arg-d pic x(256) value spaces.
+ 02 ws02-arg-e pic x(256) value spaces.
+ 02 ws02-arg-f pic x(256) value spaces.
+ 02 ws02-arg-g pic x(256) value spaces.
+ 02 ws02-arg-h pic x(256) value spaces.
+ * Lugar temporário para a switch do dialeto selecionado.
+ 77 ws77-dialeto-selecionado pic x(256) value spaces.
+ * Variáveis para os dialetos.
+ 77 ws77-dialeto-entrada pic x(003) value spaces.
+ 88 ws88-microbase value "mb".
+ 88 ws88-microfocus value "mf".
+ 88 ws88-rm value "rm".
+ * Variável para determinar se o dado a ser tratado é um valor
+ * ou uma switch.
+ 77 ws77-dado pic 9(001) value zeros.
+ 88 ws88-switch value 0.
+ 88 ws88-valor value 1.
+ * Opções do pre-processador.
+ 77 ws77-opcoes-pp pic 9(001) value zeros.
+ 88 ws88-abrir-copybooks value 0.
+ 88 ws88-fechar-copybooks value 1.
+ * Variáveis que vão armazenar o basename de cada arquivo, caso
+ * o usuário indique um diretório externo ao diretório corrente
+ 77 ws77-basename-entrada pic x(256) value spaces.
+ 77 ws77-basename-saida pic x(256) value spaces.
+ * Variáveis com o valor das switches selecionadas.
+ 77 ws77-escolher-dialeto pic x(002) value "-d".
+ 77 ws77-mostrar-ajuda pic x(002) value "-h".
+ 77 ws77-fonte-entrada pic x(002) value "-i".
+ 77 ws77-fonte-saida pic x(002) value "-o".
+ 77 ws77-modo-verboso pic x(002) value "-v".
+ 77 ws77-exibir-versao pic x(002) value "-V".
+ * A otimizar.
+ 77 ws77-linha-para-parsing pic x(256) value spaces.
+ 01 ws01-case.
+ 02 ws02-maiusculo pic x(26)
+ value "ABCDEFGHIJKLMNOPQRSTUVXYWZ".
+ 02 ws02-minusculo pic x(26)
+ value "abcdefghijklmnopqrstuvxywz".
+
+ procedure division.
+ perform ler-linha-de-comando
+ set ws88-abrir-copybooks to true
+ perform pre-processar-fonte
+ evaluate true
+ when ws88-microfocus
+ call "mfparser" using ws77-arquivo-entrada
+ ws77-arquivo-saida
+ ws77-processo
+ end-call
+ when ws88-microbase
+ call "mbparser" using ws77-arquivo-entrada
+ ws77-arquivo-saida
+ ws77-processo
+ end-call
+ end-evaluate
+ * set ws88-fechar-copybooks to true
+ * perform pre-processar-fonte
+ perform finalizar
+ .
+ *****************************************************************
+ * Rotinas principais *
+ *****************************************************************
+ ler-linha-de-comando.
+ * 1a. Etapa: Lendo as opções da linha de comando.
+ accept ws77-linha-comando from command-line
+ if return-code not equal zeros
+ display "Tamanho da linha de comando truncada!"
+ perform finalizar
+ end-if
+ if ws88-processo-verboso
+ display "Linha de comando: " ws77-linha-comando
+ end-if
+ unstring ws77-linha-comando delimited by ' ' into
+ ws02-arg-a
+ ws02-arg-b
+ ws02-arg-c
+ ws02-arg-d
+ ws02-arg-e
+ ws02-arg-f
+ ws02-arg-g
+ ws02-arg-h
+ end-unstring
+ if ws88-processo-verboso
+ perform varying ws02-i from 256 by -1
+ until ws02-arg-a(ws02-i:1)not equal spaces
+ or
+ ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "Argumento a: " ws02-arg-a(1:ws02-i)
+ perform varying ws02-i from 256 by -1
+ until ws02-arg-b(ws02-i:1) not equal spaces
+ or
+ ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "Argumento b: " ws02-arg-b(1:ws02-i)
+ perform varying ws02-i from 256 by -1
+ until ws02-arg-c(ws02-i:1)
+ not equal spaces or ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "Argumento c: " ws02-arg-c(1:ws02-i)
+
+ perform varying ws02-i from 256 by -1
+ until ws02-arg-d(ws02-i:1)
+ not equal spaces or ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "Argumento d: " ws02-arg-d(1:ws02-i)
+
+ perform varying ws02-i from 256 by -1
+ until ws02-arg-e(ws02-i:1)
+ not equal spaces or ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "Argumento e: " ws02-arg-e(1:ws02-i)
+
+ perform varying ws02-i from 256 by -1
+ until ws02-arg-f(ws02-i:1)
+ not equal spaces or ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "Argumento f: " ws02-arg-f(1:ws02-i)
+
+ perform varying ws02-i from 256 by -1
+ until ws02-arg-g(ws02-i:1)
+ not equal spaces or ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "Argumento g: " ws02-arg-g(1:ws02-i)
+
+ perform varying ws02-i from 256 by -1
+ until ws02-arg-h(ws02-i:1)
+ not equal spaces or ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "Argumento h: " ws02-arg-h(1:ws02-i)
+ end-if
+ if ws88-switch
+ evaluate ws02-arg-a
+ when ws77-escolher-dialeto
+ move ws02-arg-b to ws77-dialeto-selecionado
+ perform escolher-dialeto
+ when ws77-mostrar-ajuda
+ perform exibir-ajuda
+ when ws77-fonte-entrada
+ move ws02-arg-b to ws77-arquivo-entrada
+ perform verificar-arquivo-entrada
+ when ws77-modo-verboso
+ set ws88-processo-verboso to true
+ when ws77-exibir-versao
+ perform exibir-versao
+ when other
+ perform exibir-ajuda
+ end-evaluate
+ else
+ set ws88-valor to true
+ end-if
+ if ws88-switch
+ evaluate ws02-arg-b
+ when ws77-escolher-dialeto
+ move ws02-arg-c to ws77-dialeto-selecionado
+ perform escolher-dialeto
+ when ws77-mostrar-ajuda
+ perform exibir-ajuda
+ when ws77-fonte-entrada
+ move ws02-arg-c to ws77-arquivo-entrada
+ perform verificar-arquivo-entrada
+ when ws77-modo-verboso
+ set ws88-processo-verboso to true
+ when ws77-exibir-versao
+ perform exibir-versao
+ when other
+ perform exibir-ajuda
+ end-evaluate
+ else
+ set ws88-valor to true
+ end-if
+ if ws88-switch
+ evaluate ws02-arg-c
+ when ws77-escolher-dialeto
+ move ws02-arg-d to ws77-dialeto-selecionado
+ perform escolher-dialeto
+ when ws77-fonte-entrada
+ move ws02-arg-d to ws77-arquivo-entrada
+ perform verificar-arquivo-entrada
+ when ws77-modo-verboso
+ set ws88-processo-verboso to true
+ when other
+ perform exibir-ajuda
+ end-evaluate
+ else
+ set ws88-switch to true
+ end-if
+ if ws88-continua-parsing
+ if ws88-switch
+ evaluate ws02-arg-c
+ when ws77-modo-verboso
+ set ws88-processo-verboso to true
+ when ws77-fonte-entrada
+ move ws02-arg-d to ws77-arquivo-entrada
+ perform verificar-arquivo-entrada
+ when ws77-fonte-saida
+ move ws02-arg-d to ws77-arquivo-saida
+ perform verificar-arquivo-saida
+ when other
+ perform exibir-ajuda
+ end-evaluate
+ else
+ set ws88-switch to true
+ end-if
+ end-if
+ if ws88-continua-parsing
+ if ws88-switch
+ evaluate ws02-arg-d
+ when ws77-modo-verboso
+ set ws88-processo-verboso to true
+ when ws77-fonte-entrada
+ move ws02-arg-e to ws77-arquivo-entrada
+ perform verificar-arquivo-entrada
+ when ws77-fonte-saida
+ move ws02-arg-e to ws77-arquivo-saida
+ perform verificar-arquivo-saida
+ when other
+ perform exibir-ajuda
+ end-evaluate
+ else
+ set ws88-switch to true
+ end-if
+ end-if
+ if ws88-continua-parsing
+ if ws88-switch
+ evaluate ws02-arg-e
+ when ws77-fonte-entrada
+ move ws02-arg-f to ws77-arquivo-entrada
+ perform verificar-arquivo-entrada
+ when ws77-fonte-saida
+ move ws02-arg-f to ws77-arquivo-saida
+ perform verificar-arquivo-saida
+ when other
+ perform exibir-ajuda
+ end-evaluate
+ else
+ set ws88-switch to true
+ end-if
+ end-if
+ if ws88-continua-parsing
+ if ws88-switch
+ evaluate ws02-arg-f
+ when ws77-fonte-entrada
+ move ws02-arg-g to ws77-arquivo-entrada
+ perform verificar-arquivo-entrada
+ when ws77-fonte-saida
+ move ws02-arg-g to ws77-arquivo-saida
+ perform verificar-arquivo-saida
+ when other
+ perform exibir-ajuda
+ end-evaluate
+ else
+ set ws88-switch to true
+ end-if
+ end-if
+ if ws88-continua-parsing
+ if ws88-switch
+ evaluate ws02-arg-g
+ when ws77-fonte-saida
+ move ws02-arg-h to ws77-arquivo-saida
+ perform verificar-arquivo-saida
+ when other
+ perform exibir-ajuda
+ end-evaluate
+ else
+ set ws88-switch to true
+ end-if
+ end-if
+ if ws77-dialeto-entrada equal spaces
+ display "Erro na escolha do dialeto"
+ perform finalizar
+ else
+ if ws88-processo-verboso
+ evaluate true
+ when ws88-microbase
+ display "dialeto: Microbase COBOL"
+ when ws88-microfocus
+ display "dialeto: Microfocus COBOL"
+ when ws88-rm
+ display "dialeto: RM COBOL"
+ when other
+ display "Erro na escolha do dialeto"
+ perform finalizar
+ end-evaluate
+ end-if
+ end-if
+ if ws77-arquivo-entrada equal spaces
+ display "Não foi informado arquivo de entrada"
+ perform finalizar
+ else
+ if ws88-processo-verboso
+ move zeros to ws02-m
+ perform varying ws02-m from 256 by -1 until
+ ws77-arquivo-entrada(ws02-m:1) not equal spaces
+ continue
+ end-perform
+ display "input: " ws77-arquivo-entrada(1:ws02-m)
+ end-if
+ end-if
+ if ws77-arquivo-saida equal spaces
+ display "Nao foi informado arquivo de saida"
+ perform finalizar
+ else
+ if ws88-processo-verboso
+ move zeros to ws02-m
+ perform varying ws02-m from 256 by -1 until
+ ws77-arquivo-saida(ws02-m:1) not equal spaces
+ continue
+ end-perform
+ display "output: " ws77-arquivo-saida(1:ws02-m)
+ end-if
+ end-if
+ .
+ pre-processar-fonte.
+ move ws77-arquivo-entrada
+ to ws77-arquivo-intermediario
+ perform varying ws02-i from 256 by -1
+ until ws77-arquivo-intermediario(ws02-i:1)
+ not equal spaces
+ continue
+ end-perform
+ add 1 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ move ".pre" to ws77-arquivo-intermediario(ws02-i:ws02-j)
+ if ws88-processo-verboso
+ add 4 to ws02-i
+ display "Arquivo intermediario: "
+ ws77-arquivo-intermediario(1:ws02-i)
+ end-if
+ open input arquivo-entrada
+ if not ws88-ok
+ perform testar-file-status
+ end-if
+ open output arquivo-intermediario
+ perform until ws88-fim-arquivo
+ read arquivo-entrada
+ if not ws88-fim-arquivo
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " COPY "
+ if ws02-i > 0
+ perform testes-copy
+ else
+ write reg-arquivo-intermediario
+ from reg-arquivo-entrada
+ end-if
+ end-if
+ end-perform
+ close arquivo-entrada arquivo-intermediario
+ move ws77-arquivo-intermediario to ws77-arquivo-entrada
+ .
+ finalizar.
+ stop run
+ .
+ *****************************************************************
+ * Procedures secundárias *
+ *****************************************************************
+ verificar-arquivo-entrada.
+ set ws88-continua-parsing to true
+ set ws88-valor to true
+ open input arquivo-entrada
+ if not ws88-ok
+ perform testar-file-status
+ end-if
+ close arquivo-entrada
+ .
+ verificar-arquivo-saida.
+ * Pegar o basename do fonte de entrada.
+ perform varying ws02-i from 256 by -1
+ until ws77-arquivo-entrada(ws02-i:1)
+ not equal spaces
+ continue
+ end-perform
+ * Descobrir o início da string(que pode estar terminado com
+ * "/")
+ perform varying ws02-j from ws02-i by -1
+ until ws77-arquivo-entrada(ws02-j:1)
+ equal "/" or ws02-j equal zeros
+ continue
+ end-perform
+ if ws77-arquivo-entrada(ws02-j:1) equal "/"
+ add 1 to ws02-j
+ compute ws02-k = ws02-i - ws02-j
+ add 1 to ws02-k
+ move ws77-arquivo-entrada(ws02-j:ws02-k)
+ to ws77-basename-entrada
+ if ws88-processo-verboso
+ display "input a: "
+ ws77-arquivo-entrada(ws02-j:ws02-k)
+ end-if
+ else
+ if ws88-processo-verboso
+ perform varying ws02-i from 256 by -1
+ until ws77-arquivo-entrada(ws02-i:1)
+ not equal spaces or ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "input b: " ws77-arquivo-entrada(1:ws02-i)
+ end-if
+ move ws77-arquivo-entrada to ws77-basename-entrada
+ end-if
+
+ if ws77-arquivo-saida equal spaces
+ display "Arquivo de saída não informado"
+ perform finalizar
+ end-if
+
+ * Pegar o basename do fonte de saída.
+ perform varying ws02-l from 256 by -1
+ until ws77-arquivo-saida(ws02-l:1)
+ not equal spaces
+ continue
+ end-perform
+ if ws88-processo-verboso
+ display "ws02-l: " ws02-l
+ end-if
+ * Descobrir o início da string(que pode estar terminado com
+ * "/")
+ perform varying ws02-m from ws02-l by -1
+ until ws77-arquivo-saida(ws02-m:1)
+ equal "/" or ws02-m equal zeros
+ continue
+ end-perform
+ if ws88-processo-verboso
+ display "ws02-m: " ws02-m
+ end-if
+ if ws77-arquivo-saida(ws02-m:1) equal "/"
+ add 1 to ws02-m
+ compute ws02-n = ws02-l - ws02-m
+ add 1 to ws02-n
+ move ws77-arquivo-saida(ws02-m:ws02-n)
+ to ws77-basename-saida
+ if ws88-processo-verboso
+ display "output a: "
+ ws77-arquivo-saida(ws02-m:ws02-n)
+ end-if
+ else
+ if ws88-processo-verboso
+ perform varying ws02-i from 256 by -1
+ until ws77-arquivo-saida(ws02-i:1)
+ not equal spaces or ws02-i equal zeros
+ continue
+ end-perform
+ add 1 to ws02-i
+ display "output b: " ws77-arquivo-saida(1:ws02-i)
+ end-if
+ move ws77-arquivo-saida to ws77-basename-saida
+ end-if
+
+ set ws88-finaliza-parsing to true
+ set ws88-valor to true
+ if ws77-basename-entrada equal ws77-basename-saida
+ display "Arquivo de saída igual ao arquivo de entrada"
+ perform finalizar
+ end-if
+ .
+ escolher-dialeto.
+ set ws88-valor to true
+ evaluate ws77-dialeto-selecionado
+ when "mb "
+ set ws88-microbase to true
+ when "mf "
+ set ws88-microfocus to true
+ when "rm "
+ set ws88-rm to true
+ when other
+ display "Erro na escolha do dialeto"
+ perform finalizar
+ end-evaluate
+ .
+ testes-copy.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before ' "'
+ add 3 to ws02-i
+ perform varying ws02-j from 256 by -1
+ until ws77-linha-para-parsing(ws02-j:1)
+ not equal spaces and "."
+ continue
+ end-perform
+ compute ws02-k = ws02-j - ws02-i
+ move "*" to reg-arquivo-entrada(7:1)
+ write reg-arquivo-intermediario
+ from reg-arquivo-entrada
+ if ws88-processo-verboso
+ display "Copybook: " reg-arquivo-entrada(ws02-i:ws02-k)
+ end-if
+ move reg-arquivo-entrada(ws02-i:ws02-k)
+ to ws77-arquivo-intermediario2
+ open input arquivo-intermediario2
+ if not ws88-ok
+ perform testar-file-status
+ end-if
+ perform until ws88-fim-arquivo
+ read arquivo-intermediario2
+ if not ws88-fim-arquivo
+ write reg-arquivo-intermediario
+ from reg-arquivo-intermediario2
+ end-if
+ end-perform
+ close arquivo-intermediario2
+ .
+ exibir-versao.
+ display "Conversor de fontes CBL2COB - alpha 0.0.2 (lançado e
+ - "m 06/10/2003)"
+ display "Copyright (C) 2003 Hudson Reis"
+ perform finalizar
+ .
+ exibir-ajuda.
+ display "Uso: cbl2cob [-o ]"
+ display "opções:"
+ display " -d Escolhe dialeto"
+ display " -h Mostra ajuda"
+ display " -i Escolhe arquivo de entrada"
+ display " -o Escolhe arquivo de saida"
+ display " -v Modo verboso"
+ display " -V Mostra versão"
+ perform finalizar
+ .
+ copy "globals.pd".
diff --git a/cbl2cob/cbl2cob.exe b/cbl2cob/cbl2cob.exe
new file mode 100644
index 0000000..870d2ad
Binary files /dev/null and b/cbl2cob/cbl2cob.exe differ
diff --git a/cbl2cob/entrada.fd b/cbl2cob/entrada.fd
new file mode 100644
index 0000000..8cbdb2d
--- /dev/null
+++ b/cbl2cob/entrada.fd
@@ -0,0 +1,4 @@
+ fd arquivo-entrada
+ value of file-id is ws77-arquivo-entrada.
+ 01 reg-arquivo-entrada pic x(256).
+
diff --git a/cbl2cob/entrada.sl b/cbl2cob/entrada.sl
new file mode 100644
index 0000000..d195fec
--- /dev/null
+++ b/cbl2cob/entrada.sl
@@ -0,0 +1,5 @@
+ select arquivo-entrada assign to disk
+ organization is line sequential
+ access mode is sequential
+ file status is ws77-file-status.
+
diff --git a/cbl2cob/globals.ls b/cbl2cob/globals.ls
new file mode 100644
index 0000000..221b0a6
--- /dev/null
+++ b/cbl2cob/globals.ls
@@ -0,0 +1,10 @@
+ * Arquivos de entrada e saída
+ 77 ws77-arquivo-entrada pic x(256) value spaces.
+ 77 ws77-arquivo-saida pic x(256) value spaces.
+ 77 ws77-arquivo-intermediario pic x(256) value spaces.
+ 77 ws77-arquivo-intermediario2 pic x(256) value spaces.
+ * Variáveis para verificar se deve mostrar ou não alguma coisa.
+ 77 ws77-processo pic 9(001) value zeros.
+ 88 ws88-processo-nao-verboso value 0.
+ 88 ws88-processo-verboso value 1.
+
diff --git a/cbl2cob/globals.pd b/cbl2cob/globals.pd
new file mode 100644
index 0000000..6e082e3
--- /dev/null
+++ b/cbl2cob/globals.pd
@@ -0,0 +1,12 @@
+ testar-file-status.
+ evaluate true
+ when ws88-arquivo-inexistente
+ display "Arquivo inexistente"
+ when ws88-diretorio-inexistente
+ display "Diretorio inexistente"
+ when other
+ display "Erro sem report: " ws77-file-status
+ end-evaluate
+ close arquivo-entrada arquivo-saida
+ perform finalizar
+ .
diff --git a/cbl2cob/globals.ws b/cbl2cob/globals.ws
new file mode 100644
index 0000000..edc69b2
--- /dev/null
+++ b/cbl2cob/globals.ws
@@ -0,0 +1,33 @@
+ * Teste de file status.
+ 77 ws77-file-status pic x(002) value spaces.
+ 88 ws88-ok values are "00" "02" "04".
+ 88 ws88-diretorio-inexistente value "05".
+ 88 ws88-fim-arquivo value "10".
+ 88 ws88-inexiste-registro value "22".
+ 88 ws88-disco-cheio value "24".
+ 88 ws88-arquivo-inexistente value "35".
+ 88 ws88-layout-diferente value "39".
+ 88 ws88-arquivo-ja-aberto value "41".
+ 88 ws88-arquivo-nao-aberto values are "42" "47".
+ 88 ws88-arquivo-bloqueado value "9A".
+ 88 ws88-registro-bloqueado value "9D".
+ 88 ws88-indice-corrompido values are "9$" "9)" "9(".
+ * Variáveis para serem usadas como contadores.
+ 01 ws01-contadores.
+ 02 ws02-i pic 9(003) value zeros.
+ 02 ws02-j pic 9(003) value zeros.
+ 02 ws02-k pic 9(003) value zeros.
+ 02 ws02-l pic 9(003) value zeros.
+ 02 ws02-m pic 9(003) value zeros.
+ 02 ws02-n pic 9(003) value zeros.
+ 02 ws02-o pic 9(003) value zeros.
+ 02 ws02-p pic 9(003) value zeros.
+ 02 ws02-q pic 9(003) value zeros.
+ 02 ws02-r pic 9(003) value zeros.
+ 02 ws02-s pic 9(003) value zeros.
+ * Variável para determinar se continua ou não o parsing da
+ * instrucao ou linha de comando.
+ 77 ws77-parsing pic 9(001) value zeros.
+ 88 ws88-continua-parsing value 0.
+ 88 ws88-finaliza-parsing value 1.
+
diff --git a/cbl2cob/intermed.fd b/cbl2cob/intermed.fd
new file mode 100644
index 0000000..eb0f9b4
--- /dev/null
+++ b/cbl2cob/intermed.fd
@@ -0,0 +1,8 @@
+ fd arquivo-intermediario
+ value of file-id is ws77-arquivo-intermediario.
+ 01 reg-arquivo-intermediario pic x(256).
+
+ fd arquivo-intermediario2
+ value of file-id is ws77-arquivo-intermediario2.
+ 01 reg-arquivo-intermediario2 pic x(256).
+
diff --git a/cbl2cob/intermed.sl b/cbl2cob/intermed.sl
new file mode 100644
index 0000000..3273377
--- /dev/null
+++ b/cbl2cob/intermed.sl
@@ -0,0 +1,10 @@
+ select arquivo-intermediario assign to disk
+ organization is line sequential
+ access mode is sequential
+ file status is ws77-file-status.
+
+ select arquivo-intermediario2 assign to disk
+ organization is line sequential
+ access mode is sequential
+ file status is ws77-file-status.
+
diff --git a/cbl2cob/mbparser.cob b/cbl2cob/mbparser.cob
new file mode 100644
index 0000000..26ef15a
--- /dev/null
+++ b/cbl2cob/mbparser.cob
@@ -0,0 +1,1116 @@
+
+ *
+ * Copyright (C) 2003, Hudson Reis,
+ * Infocont Sistemas Integrados Ltda.
+ * Carlucio Lopes
+ *
+ *
+ * This program 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 2,
+ * or (at your option) any later version.
+ *
+ * This program 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 this software; see the file COPYING.
+ * If not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ identification division.
+ program-id. mbparser.
+ author. Carlucio Lopes.
+ date-written. 03/09/2003.
+ *
+ * Parser para dialeto MB COBOL.
+ *
+ environment division.
+ configuration section.
+ input-output section.
+ file-control.
+ select arquivo-entrada assign to disk
+ organization is line sequential
+ access mode is sequential
+ file status is ws77-file-status.
+
+ select arquivo-saida assign to disk
+ organization is line sequential
+ access mode is sequential
+ file status is ws77-file-status.
+
+ data division.
+ file section.
+ fd arquivo-entrada
+ value of file-id is ws77-arquivo-entrada.
+ 01 reg-arquivo-entrada pic x(256).
+
+ fd arquivo-saida
+ value of file-id is ws77-arquivo-saida.
+ 01 reg-arquivo-saida pic x(256).
+
+ working-storage section.
+ * Teste de file status.
+ 77 ws77-file-status pic x(002) value spaces.
+ 88 ws88-ok values are "00" "02" "04".
+ 88 ws88-diretorio-inexistente value "05".
+ 88 ws88-fim-arquivo value "10".
+ 88 ws88-inexiste-registro value "22".
+ 88 ws88-disco-cheio value "24".
+ 88 ws88-arquivo-inexistente value "35".
+ 88 ws88-layout-diferente value "39".
+ 88 ws88-arquivo-ja-aberto value "41".
+ 88 ws88-arquivo-nao-aberto values are "42" "47".
+ 88 ws88-arquivo-bloqueado value "9A".
+ 88 ws88-registro-bloqueado value "9D".
+ 88 ws88-indice-corrompido values are "9$" "9)" "9(".
+ * Linhas usadas para parsing do fonte.
+ 77 ws77-linha-para-parsing pic x(256) value spaces.
+ 77 ws77-linha-temporaria pic x(256) value spaces.
+ 77 ws77-buffer-temporario pic x(256) value spaces.
+ 77 ws77-troca pic 9(03) value zeros.
+ 77 ws77-troca2 pic 9(03) value zeros.
+ 77 ws77-linpos pic x(37)
+ value " LINE POSITION ".
+
+ 01 ws50troca redefines ws77-linha-para-parsing.
+ 02 ws50trocando occurs 256 times pic x.
+
+ 01 ws50linpos redefines ws77-linpos.
+ 02 ws50lineposi occurs 37 times pic x.
+
+
+ * Variáveis que serão usadas para quebrar a frase
+ * passada na linha de comando, pelo usuário.
+ * O número máximo argumentos supotados é 8.
+ 01 ws01-args.
+ 02 ws02-arg-a pic x(256) value spaces.
+ 02 ws02-arg-b pic x(256) value spaces.
+ 02 ws02-arg-c pic x(256) value spaces.
+ 02 ws02-arg-d pic x(256) value spaces.
+ 02 ws02-arg-e pic x(256) value spaces.
+ 02 ws02-arg-f pic x(256) value spaces.
+ 02 ws02-arg-g pic x(256) value spaces.
+ 02 ws02-arg-h pic x(256) value spaces.
+ * Variáveis para serem usadas como contadores.
+ 01 ws01-contadores.
+ 02 ws02-i pic 9(003) value zeros.
+ 02 ws02-j pic 9(003) value zeros.
+ 02 ws02-k pic 9(003) value zeros.
+ 02 ws02-l pic 9(003) value zeros.
+ 02 ws02-m pic 9(003) value zeros.
+ 02 ws02-n pic 9(003) value zeros.
+ * Flags condicionais para gravacao de linha.
+ 01 ws01-grava-linha pic 9(001) value zeros.
+ 88 ws88-grava-linha value 0.
+ 88 ws88-nao-grava-linha value 1.
+ * Flags de termino/nao termino de linha.
+ 01 ws01-termino-linha pic 9(001) value zeros.
+ 88 ws88-terminou-linha value 0.
+ 88 ws88-nao-terminou-linha value 1.
+ 01 ws01-status-linha pic 9(001) value zeros.
+ 88 ws88-linha-continuada value 0.
+ 88 ws88-ultima-linha value 1.
+ * Flags para o DISPLAY.
+ 01 ws01-display pic 9(001) value zeros.
+ 88 ws88-display-nao-terminado value 0.
+ 88 ws88-display-terminado value 1.
+ * Flags para o ACCEPT.
+ 01 ws01-accept pic 9(001) value zeros.
+ 88 ws88-accept-nao-terminado value 0.
+ 88 ws88-accept-terminado value 1.
+ * Flags para Identification division.
+ 77 ws77-linha-id pic 9(005) value zeros.
+ 77 ws77-id pic 9(001) value zeros.
+ 88 ws88-nao-existe-id value 0.
+ 88 ws88-existe-id value 1.
+ * Flags para Environment division.
+ 77 ws77-linha-ed pic 9(005) value zeros.
+ 77 ws77-ed pic 9(001) value zeros.
+ 88 ws88-nao-existe-ed value 0.
+ 88 ws88-existe-ed value 1.
+ * Crt Status clause.
+ 77 ws77-crt-status-field pic x(256) value spaces.
+ 77 ws77-crt-status-length pic 9(003) value zeros.
+ 01 ws01-precisa-crt-status pic 9(001) value zeros.
+ 88 ws88-nao-precisa-crt-status value 0.
+ 88 ws88-precisa-crt-status value 1.
+ * Case.
+ 01 ws01-case.
+ 02 ws02-maiusculo pic x(26)
+ value "ABCDEFGHIJKLMNOPQRSTUVXYWZ".
+ 02 ws02-minusculo pic x(26)
+ value "abcdefghijklmnopqrstuvxywz".
+ * Linhas armazenadas.
+ 01 ws01-linhas.
+ 03 ws03-registro-armazenado pic x(256) occurs 1000 times.
+ * Para debug.
+ 77 ws77-conta-linha pic 9(005) value 1.
+ * Verbos a serem parseados.
+ 01 ws01-verbos.
+ 02 ws02-tokens pic x(256) occurs 256 times.
+
+ linkage section.
+ * Arquivos de entrada e saída
+ *77 ws77-arquivo-entrada pic x(256) value spaces.
+ *77 ws77-arquivo-saida pic x(256) value spaces.
+ copy "globals.ls".
+
+ procedure division using ws77-arquivo-entrada
+ ws77-arquivo-saida
+ ws77-processo.
+ perform descobrir-informacoes
+ move 1 to ws77-conta-linha
+ open input arquivo-entrada
+ if not ws88-ok
+ display "Erro na abertura do arquivo"
+ exit program
+ end-if
+ open output arquivo-saida
+
+ if ws88-nao-existe-id
+ write reg-arquivo-saida from
+ " IDENTIFICATION DIVISION."
+ move spaces to reg-arquivo-saida
+ string " PROGRAM-ID. " ws77-arquivo-entrada(1:6)
+ "." into reg-arquivo-saida
+ write reg-arquivo-saida
+ write reg-arquivo-saida from spaces
+ if ws88-nao-existe-ed
+ if ws88-precisa-crt-status
+ write reg-arquivo-saida from
+ " ENVIRONMENT DIVISION."
+ write reg-arquivo-saida from
+ " CONFIGURATION SECTION."
+ write reg-arquivo-saida from
+ " SPECIAL-NAMES."
+ string " CRT STATUS IS "
+ ws77-crt-status-field(1:ws77-crt-status-length)
+ "." into reg-arquivo-saida
+ write reg-arquivo-saida
+ end-if
+ end-if
+ end-if
+
+ perform until ws88-fim-arquivo
+ read arquivo-entrada
+ if not ws88-fim-arquivo
+ display "No..: " ws77-conta-linha
+ display "Desc: " reg-arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ set ws88-grava-linha to true
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " LOCK "
+ if ws02-i > 0
+ perform testes-lock
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DATA "
+ if ws02-i > 0
+ perform testes-data
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ACCEPT "
+ if ws02-i > 0
+ perform testes-accept
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DISPLAY "
+ if ws02-i > 0
+ perform testes-display
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DELETE "
+ if ws02-i > 0
+ perform testes-delete
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " CALL "
+ if ws02-i > 0
+ perform testes-call
+ else
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i for all
+ " IDENTIFICATION "
+ if ws02-i > 0
+ perform testes-id
+ else
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i for all
+ " ENVIRONMENT "
+ if ws02-i > 0
+ perform testes-ed
+ else
+ perform mais-testes
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ add 1 to ws77-conta-linha
+ end-if
+ end-perform
+
+ close arquivo-entrada
+ close arquivo-saida
+ exit program.
+
+ testes-lock.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " MODE "
+ if ws02-i > 0
+ display "Encontrou clausula LOCK MODE"
+ display "Nao grava linha"
+ set ws88-nao-grava-linha to true
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ .
+ testes-data.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " RECORD "
+ if ws02-i > 0
+ display "Encontrou DATA RECORD!"
+ move " ." to reg-arquivo-entrada
+ set ws88-grava-linha to true
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ display "Encontrou DATA DIVISION!"
+ if ws88-nao-existe-ed
+ write reg-arquivo-saida from
+ " ENVIRONMENT DIVISION."
+ if ws88-precisa-crt-status
+ write reg-arquivo-saida from
+ " CONFIGURATION SECTION."
+ write reg-arquivo-saida from
+ " SPECIAL-NAMES."
+ string " CRT STATUS IS "
+ ws77-crt-status-field
+ (1:ws77-crt-status-length)
+ "." into reg-arquivo-saida
+ write reg-arquivo-saida
+ end-if
+ end-if
+ write reg-arquivo-saida from spaces
+ end-if
+ end-if
+ if ws88-grava-linha
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-display.
+ set ws88-display-nao-terminado to true
+ perform until ws88-display-terminado
+ move zeros to ws02-i
+ * Substituir (xx, xx) por line xx position xx
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ("
+ if ws02-i > 0
+ move zeros to ws02-i
+ perform substituir-accept
+ move spaces to reg-arquivo-entrada
+ move ws77-linha-para-parsing to reg-arquivo-entrada
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ move spaces to ws77-linha-para-parsing
+ move ws77-linpos to ws77-linha-para-parsing
+ move ws77-linha-para-parsing to reg-arquivo-entrada
+ * Substituir (xx, xx) por line xx position xx
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " LINE "
+ if ws02-i > 0
+ display "Encontrou LINE, vai retirar o AT."
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " AT "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:4)
+ ws77-linha-para-parsing(ws02-i:4)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " PROMPT "
+ if ws02-i > 0
+ display "Encontrou o PROMPT, vai remove-lo"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " PROMPT "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:8)
+ ws77-linha-para-parsing(ws02-i:8)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " BACKGROUND-COLOR "
+ if ws02-i > 0
+ display " Encontrou o BACKGROUND-COLOR vai
+ - " remove-lo"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " BACKGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:18)
+ ws77-linha-para-parsing
+ (ws02-i:18)
+ add 18 to ws02-i
+ perform varying ws02-j
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-j:1)
+ not equal spaces or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i
+ from ws02-j by 1
+ until ws77-linha-para-parsing
+ (ws02-i:1)
+ equal spaces or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing
+ (ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:1)
+ end-perform
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " FOREGROUND-COLOR "
+ if ws02-i > 0
+ display " Encontrou o FOREGROUND-COLOR
+ - " vai remove-lo"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " FOREGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:18)
+ ws77-linha-para-parsing
+ (ws02-i:18)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " AUTO-SKIP "
+ if ws02-i > 0
+ display " Encontrou o AUTO-SKIP
+ - " sera substituido pelo
+ - " AUTO"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " AUTO-SKIP "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:10)
+ ws77-linha-para-parsing
+ (ws02-i:10)
+ move " AUTO "
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ end-if
+ else
+ set ws88-display-terminado to true
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ end-if
+ end-if
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ set ws88-display-terminado to true
+ end-if
+ end-perform
+ .
+ testes-accept.
+ set ws88-accept-nao-terminado to true
+ perform until ws88-accept-terminado
+ move zeros to ws02-i
+ * Substituir (xx, xx) por line xx position xx
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ("
+ if ws02-i > 0
+ move zeros to ws02-i
+ perform substituir-accept
+ move spaces to reg-arquivo-entrada
+ move ws77-linha-para-parsing to reg-arquivo-entrada
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ move spaces to ws77-linha-para-parsing
+ move ws77-linpos to ws77-linha-para-parsing
+ move ws77-linha-para-parsing to reg-arquivo-entrada
+ * Substituir (xx, xx) por line xx position xx
+
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " LINE "
+ if ws02-i > 0
+ display "Encontrou LINE, vai retirar o AT.498"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " AT "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:4)
+ ws77-linha-para-parsing(ws02-i:4)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " PROMPT "
+ if ws02-i > 0
+ display "Encontrou o PROMPT, vai remove-lo"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " PROMPT "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:8)
+ ws77-linha-para-parsing(ws02-i:8)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " BACKGROUND-COLOR "
+ if ws02-i > 0
+ display " Encontrou o BACKGROUND-COLOR vai
+ - " remove-lo"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " BACKGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:18)
+ ws77-linha-para-parsing
+ (ws02-i:18)
+ add 18 to ws02-i
+ perform varying ws02-j
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-j:1)
+ not equal spaces or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i
+ from ws02-j by 1
+ until ws77-linha-para-parsing
+ (ws02-i:1)
+ equal spaces or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing
+ (ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:1)
+ end-perform
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " FOREGROUND-COLOR "
+ if ws02-i > 0
+ display " Encontrou o FOREGROUND-COLOR
+ - " vai remove-lo"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " FOREGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:18)
+ ws77-linha-para-parsing
+ (ws02-i:18)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " AUTO-SKIP "
+ if ws02-i > 0
+ display " Encontrou o AUTO-SKIP
+ - " sera substituido pelo
+ - " AUTO"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " AUTO-SKIP "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:10)
+ ws77-linha-para-parsing
+ (ws02-i:10)
+ move " AUTO "
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ end-if
+ else
+ set ws88-accept-terminado to true
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ end-if
+ end-if
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FROM "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ESCAPE "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " KEY"
+ if ws02-i > 0
+ set ws88-accept-terminado to true
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ set ws88-accept-terminado to true
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ set ws88-accept-terminado to true
+ end-if
+ end-if
+ end-perform
+ .
+ descobrir-informacoes.
+ open input arquivo-entrada
+ if not ws88-ok
+ display "Erro na abertura do arquivo"
+ exit program
+ end-if
+ perform until ws88-fim-arquivo
+ read arquivo-entrada
+ if not ws88-fim-arquivo
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ACCEPT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FROM "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " ESCAPE "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " KEY"
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " ACCEPT "
+ add 8 to ws02-i
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters
+ before " FROM "
+ compute ws02-k = ws02-j - ws02-i
+ add 1 to ws02-k
+ move ws77-linha-para-parsing
+ (ws02-i:ws02-k)
+ to ws77-crt-status-field
+ move ws02-k to ws77-crt-status-length
+ set ws88-precisa-crt-status to true
+ end-if
+ end-if
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " IDENTIFICATION "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ set ws88-existe-id to true
+ move ws77-conta-linha to ws77-linha-id
+ end-if
+ else
+ If not ws88-existe-id
+ set ws88-nao-existe-id to true
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ENVIRONMENT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ set ws88-existe-ed to true
+ move ws77-conta-linha to ws77-linha-ed
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ add 1 to ws77-conta-linha
+ end-perform
+ close arquivo-entrada
+ .
+ testes-delete.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DELETE "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FILE "
+ if ws02-i > 0
+ set ws88-nao-grava-linha to true
+ end-if
+ end-if
+ if ws88-grava-linha
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-call.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before " CALL "
+ add 6 to ws02-i
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for all " USING "
+ if ws02-j > 0
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters before " USING "
+ if ws02-j > 0
+ compute ws02-k = ws02-j - ws02-i
+ move zeros to ws02-l
+ inspect ws77-linha-para-parsing
+ tallying ws02-l for all 'X"AF"'
+ if ws02-l > 0
+ set ws88-nao-grava-linha to true
+ else
+ move zeros to ws02-l
+ inspect ws77-linha-para-parsing
+ tallying ws02-l for all 'X"91"'
+ if ws02-l > 0
+ set ws88-nao-grava-linha to true
+ else
+ inspect reg-arquivo-entrada(ws02-i:ws02-k)
+ converting ws02-minusculo
+ to ws02-maiusculo
+ end-if
+ end-if
+ end-if
+ end-if
+ if ws88-grava-linha
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-id.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ display "Encontrou IDENTIFICATION DIVISION!"
+ write reg-arquivo-saida from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " PROGRAM-ID"
+ if ws02-i <= 0
+ display "Nao encontrou PROGRAM-ID!"
+ string " PROGRAM-ID. " ws77-arquivo-entrada(1:6)
+ "." into reg-arquivo-saida
+ write reg-arquivo-saida
+ else
+ display "Encontrou PROGRAM-ID!"
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-ed.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ display "Encontrou ENVIRONMENT DIVISION!"
+ write reg-arquivo-saida from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " CONFIGURATION "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " SECTION"
+ if ws02-i > 0
+ display "Encontrou CONFIGURATION SECTION!"
+ write reg-arquivo-saida from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " SOURCE-COMPUTER"
+ if ws02-i > 0
+ display "Encontrou SOURCE-COMPUTER!"
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " SPECIAL-NAMES"
+ if ws02-i > 0
+ display "Encontrou SPECIAL-NAMES!"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " DECIMAL-POINT"
+ if ws02-i > 0
+ display "Encontrou DECIMAL-POINT na mesma
+ - " linha da SPECIAL-NAMES"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " DECIMAL-POINT"
+ if ws02-i > 0
+ move spaces
+ to reg-arquivo-saida
+ move reg-arquivo-entrada
+ (1:ws02-i)
+ to reg-arquivo-saida
+ write reg-arquivo-saida
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ move spaces to reg-arquivo-saida
+ if ws88-precisa-crt-status
+ display "Precisa de CRT STATUS!"
+ string " CRT STATUS IS "
+ ws77-crt-status-field
+ (1:ws77-crt-status-length)
+ into reg-arquivo-saida
+ write reg-arquivo-saida
+ set ws88-nao-grava-linha to true
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " DECIMAL-POINT"
+ if ws02-i > 0
+ display "Encontrou DECIMAL-POINT na mesma
+ - " linha da SPECIAL-NAMES"
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " DECIMAL-POINT"
+ if ws02-i > 0
+ add 2 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ move spaces
+ to reg-arquivo-saida
+ move reg-arquivo-entrada
+ (ws02-i:ws02-j)
+ to reg-arquivo-saida(12:242)
+ write reg-arquivo-saida
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ .
+ mais-testes.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all ' "'
+ if ws02-i > 0
+ perform testes-aspas-duplas
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all ' -'
+ if ws02-i > 0
+ perform testes-hifen
+ else
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ end-if
+ .
+ testes-aspas-duplas.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before ' "'
+ if ws02-i = 6
+ display "Encontrou aspas duplas, acertando-as para a colu
+ - "una 12"
+ add 2 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ move spaces to reg-arquivo-saida(1:11)
+ move reg-arquivo-entrada(ws02-i:ws02-j)
+ to reg-arquivo-saida(12:244)
+ if reg-arquivo-saida(73:183) not equal spaces
+ display "Linha não acabou, os testes devem ser feitos
+ - "pelo testes-hifen"
+ set ws88-nao-terminou-linha to true
+ move reg-arquivo-saida(73:183)
+ to ws77-linha-temporaria
+ move spaces to reg-arquivo-saida(73:183)
+ end-if
+ write reg-arquivo-saida
+ else
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters before ' -'
+ if ws02-j = 5
+ perform testes-hifen
+ else
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ end-if
+ .
+ testes-hifen.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before " -"
+ if ws02-i = 5
+ display "Encontrado hifen"
+ set ws88-linha-continuada to true
+ move zeros to ws02-m
+ inspect ws77-linha-para-parsing
+ tallying ws02-m for all '"'
+ if ws02-m >= 2
+ display "Ultima linha!"
+ set ws88-ultima-linha to true
+ end-if
+ add 3 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ move spaces to reg-arquivo-saida
+ move " - " to reg-arquivo-saida(1:11)
+ if ws88-terminou-linha
+ display "Linha terminada"
+ move reg-arquivo-entrada(ws02-i:ws02-j)
+ to reg-arquivo-saida(12:244)
+ else
+ display "Linha nao terminada"
+ move '"' to reg-arquivo-saida(12:1)
+ perform varying ws02-k from 256 by -1
+ until ws77-linha-temporaria(ws02-k:1)
+ not equal spaces
+ continue
+ end-perform
+ move ws77-linha-temporaria(1:ws02-k)
+ to reg-arquivo-saida(13:ws02-k)
+ compute ws02-l = 13 + ws02-k
+ display "Linha ant." reg-arquivo-saida(1:ws02-l)
+ add 1 to ws02-i
+ subtract 1 from ws02-j
+ compute ws02-m = 256 - ws02-l
+ display "I: " ws02-i
+ display "J: " ws02-j
+ display "L: " ws02-l
+ display "K: " ws02-k
+ display "M: " ws02-m
+ move reg-arquivo-entrada(ws02-i:ws02-j)
+ to reg-arquivo-saida(ws02-l:ws02-m)
+ display "Linha atual: " reg-arquivo-saida
+ end-if
+ if reg-arquivo-saida(73:183) not equal spaces
+ display "Linha nao terminou.. testes-hifen"
+ set ws88-nao-terminou-linha to true
+ move reg-arquivo-saida(73:183)
+ to ws77-linha-temporaria
+ move spaces to reg-arquivo-saida(73:183)
+ else
+ display "Linha terminou.."
+ set ws88-terminou-linha to true
+ end-if
+ write reg-arquivo-saida
+ if ws88-ultima-linha
+ if ws88-nao-terminou-linha
+ display "Ultima linha desta instrucao!"
+ move spaces to reg-arquivo-saida
+ move zeros to ws02-i
+ inspect ws77-linha-temporaria
+ tallying ws02-i for all '"'
+ if ws02-i >= 1
+ move ' - "'
+ to reg-arquivo-saida(1:12)
+ move 13 to ws02-k
+ else
+ move 12 to ws02-k
+ end-if
+ perform varying ws02-i from 256 by -1
+ until ws77-linha-temporaria(ws02-i:1)
+ not equal spaces
+ continue
+ end-perform
+ move ws77-linha-temporaria(1:ws02-i)
+ to reg-arquivo-saida(ws02-k:243)
+ perform varying ws02-i from 256 by -1
+ until reg-arquivo-saida(ws02-i:1)
+ not equal '"'
+ continue
+ end-perform
+ compute ws02-j = 256 - ws02-i
+ move reg-arquivo-saida(ws02-i:ws02-j)
+ to ws77-linha-temporaria
+ move spaces to reg-arquivo-saida(ws02-i:ws02-j)
+ write reg-arquivo-saida
+ move spaces to reg-arquivo-saida
+ move ws77-linha-temporaria
+ to reg-arquivo-saida(ws02-k:244)
+ write reg-arquivo-saida
+ set ws88-terminou-linha to true
+ end-if
+ end-if
+ end-if
+ .
+
+ substituir-accept.
+ move 1 to ws77-troca.
+ perform sub-accept1 thru sub-accept-exit.
+
+ sub-accept1.
+ if ws50trocando (ws77-troca) not = "("
+ compute ws77-troca = ws77-troca + 1
+ go to sub-accept1.
+ move spaces to ws50trocando (ws77-troca).
+ compute ws77-troca = ws77-troca + 1.
+ move 17 to ws77-troca2.
+
+ sub-accept2.
+ if ws50trocando (ws77-troca) = ")"
+ move spaces to ws50trocando (ws77-troca)
+ move 256 to ws77-troca
+ go to sub-accept3.
+
+ if ws50trocando (ws77-troca) = ","
+ move spaces to ws50trocando (ws77-troca)
+ compute ws77-troca = ws77-troca + 1
+ go to sub-accept2.
+
+ if ws50trocando (ws77-troca) = " "
+ move spaces to ws50trocando (ws77-troca)
+ compute ws77-troca = ws77-troca + 1
+ move 32 to ws77-troca2
+ go to sub-accept2.
+
+ move ws50trocando (ws77-troca) to
+ ws50lineposi (ws77-troca2).
+ move spaces to ws50trocando (ws77-troca).
+ compute ws77-troca2 = ws77-troca2 + 1.
+ compute ws77-troca = ws77-troca + 1.
+ go to sub-accept2.
+
+
+ sub-accept3.
+ if ws50trocando (ws77-troca) = " "
+ compute ws77-troca = ws77-troca - 1
+ go to sub-accept3.
+
+ if ws50trocando (ws77-troca) = "."
+ move 37 to ws77-troca2
+ move "." to ws50lineposi (ws77-troca2)
+ move spaces to ws50trocando (ws77-troca)
+ go to sub-accept-exit.
+
+ move " " to ws50lineposi (ws77-troca2).
+
+ sub-accept-exit.
+ exit.
diff --git a/cbl2cob/mbparser.dll b/cbl2cob/mbparser.dll
new file mode 100644
index 0000000..b7036c7
Binary files /dev/null and b/cbl2cob/mbparser.dll differ
diff --git a/cbl2cob/mfparser.cob b/cbl2cob/mfparser.cob
new file mode 100644
index 0000000..7d3a07f
--- /dev/null
+++ b/cbl2cob/mfparser.cob
@@ -0,0 +1,3017 @@
+ *
+ * Copyright (C) 2003, Hudson Reis,
+ * Infocont Sistemas Integrados Ltda.
+ *
+ * This program 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 2,
+ * or (at your option) any later version.
+ *
+ * This program 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 this software; see the file COPYING.
+ * If not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ identification division.
+ program-id. mfparser.
+ author. Hudson Reis.
+ date-written. 03/09/2003.
+ *
+ * Parser para dialeto MicroFocus COBOL.
+ *
+ environment division.
+ configuration section.
+ input-output section.
+ file-control.
+ copy "entrada.sl".
+ copy "saida.sl".
+
+ data division.
+ file section.
+ copy "entrada.fd".
+ copy "saida.fd".
+
+ working-storage section.
+ 01 filler pic 9(01).
+ copy "globals.ws".
+ * Linhas usadas para parsing do fonte.
+ 01 W01-PARA PIC X(01) VALUE SPACES.
+ 01 W01-CONT1 PIC 9(03) VALUE ZEROS.
+ 01 W01-CONT2 PIC 9(03) VALUE ZEROS.
+ 01 W01-TIPO PIC 9(01) VALUE ZEROS.
+ 88 W88-PRIMEIRO VALUE 1.
+ 88 W88-ESPACO VALUE 2.
+ 88 W88-CARACTER VALUE 3.
+ 01 W01-TEMP1 PIC X(256) VALUE SPACES.
+ 01 FILLER REDEFINES W01-TEMP1.
+ 03 W03-OCCURS-TEMP1 OCCURS 256 TIMES PIC X(01).
+ 01 W01-TEMP2 PIC X(256) VALUE SPACES.
+ 01 FILLER REDEFINES W01-TEMP2.
+ 03 W03-OCCURS-TEMP2 OCCURS 256 TIMES PIC X(01).
+ 77 ws77-linha-para-parsing pic x(256) value spaces.
+ 77 ws77-linha-temporaria pic x(256) value spaces.
+ 77 ws77-buffer-temporario pic x(256) value spaces.
+ ******************************************************************
+ *Linhas acrescidas por Fernando Wuthstrack em 09/07/2004
+ *Linhas usadas para identificar tipos de variaveis
+ ******************************************************************
+ 77 ws77-busca-variaveis pic 9(001) value zeros.
+ 88 ws88-busca-variaveis value 0.
+ 88 ws88-nao-busca-variaveis value 1.
+ 77 ws77-tipo-variavel pic 9(001) value zeros.
+ 88 ws88-tipo-alfa value 0.
+ 88 ws88-tipo-numerico value 1.
+ 77 ws77-linha-anterior pic x(256) value spaces.
+ 77 ws77-count-from pic 9(003) value zeros.
+ 77 ws77-count-to pic 9(003) value zeros.
+ 01 ws01-nome-arq-variaveis.
+ 03 ws03-hora-arq-var pic 9(008) value zeros.
+ 03 filler pic x(004) value ".tmp".
+ 01 ws01-dados-ante-pic pic x(256) value spaces.
+ 01 filler redefines ws01-dados-ante-pic.
+ 03 ws03-digito-ante-pic pic x(001) occurs 256 times.
+ 01 ws01-dados-pos-pic pic x(256) value spaces.
+ 01 filler redefines ws01-dados-pos-pic.
+ 03 ws03-digito-pos-pic pic x(001) occurs 256 times.
+ 01 ws01-dados-pos-accept pic x(256) value spaces.
+ 01 filler redefines ws01-dados-pos-accept.
+ 03 ws03-digito-pos-accept pic x(001) occurs 256 times.
+ 01 ws01-dados-pos-at pic x(256) value spaces.
+ 01 filler redefines ws01-dados-pos-at.
+ 03 ws03-digito-pos-at pic x(001) occurs 256 times.
+ 01 ws01-nome-variavel pic x(030) value spaces.
+ 01 filler redefines ws01-nome-variavel.
+ 03 ws03-digito-nome-variavel pic x(001) occurs 30 times.
+ 01 ws01-tipo-variavel pic x(020) value spaces.
+ 01 filler redefines ws01-tipo-variavel.
+ 03 ws03-digito-tipo-variavel pic x(001) occurs 20 times.
+ 01 ws01-posicao-cursor pic x(030) value spaces.
+ 01 filler redefines ws01-posicao-cursor.
+ 03 ws03-digito-posicao-cursor pic x(001) occurs 30 times.
+ 01 ws01-indice-occurs pic x(030) value spaces.
+ 01 filler redefines ws01-indice-occurs.
+ 03 ws03-digito-indice-occurs pic x(001) occurs 30 times.
+ ******************************************************************
+ * Flags condicionais para gravacao de linha.
+ 01 ws01-grava-linha pic 9(001) value zeros.
+ 88 ws88-grava-linha value 0.
+ 88 ws88-nao-grava-linha value 1.
+ * Flags de termino/nao termino de linha.
+ 01 ws01-termino-linha pic 9(001) value zeros.
+ 88 ws88-terminou-linha value 0.
+ 88 ws88-nao-terminou-linha value 1.
+ 01 ws01-status-linha pic 9(001) value zeros.
+ 88 ws88-linha-continuada value 0.
+ 88 ws88-ultima-linha value 1.
+ * Flags para o DISPLAY.
+ 01 ws01-display pic 9(001) value zeros.
+ 88 ws88-display-nao-terminado value 0.
+ 88 ws88-display-terminado value 1.
+ * Flags para o ACCEPT.
+ 01 ws01-accept pic 9(001) value zeros.
+ 88 ws88-accept-nao-terminado value 0.
+ 88 ws88-accept-terminado value 1.
+ * Flags para Identification division.
+ 77 ws77-linha-id pic 9(005) value zeros.
+ 77 ws77-id pic 9(001) value zeros.
+ 88 ws88-nao-existe-id value 0.
+ 88 ws88-existe-id value 1.
+ * Flags para Environment division.
+ 77 ws77-linha-ed pic 9(005) value zeros.
+ 77 ws77-ed pic 9(001) value zeros.
+ 88 ws88-nao-existe-ed value 0.
+ 88 ws88-existe-ed value 1.
+ * Crt Status clause.
+ 77 ws77-crt-status-field pic x(256) value spaces.
+ 77 ws77-crt-status-length pic 9(003) value zeros.
+ 01 ws01-precisa-crt-status pic 9(001) value zeros.
+ 88 ws88-nao-precisa-crt-status value 0.
+ 88 ws88-precisa-crt-status value 1.
+ * Bgcolor e Fgcolor.
+ 77 ws77-bgcolor pic 9(001) value zeros.
+ 88 ws88-nao-encontrou-bgcolor value 0.
+ 88 ws88-encontrou-bgcolor value 1.
+ 77 ws77-fgcolor pic 9(001) value zeros.
+ 88 ws88-nao-encontrou-fgcolor value 0.
+ 88 ws88-encontrou-fgcolor value 1.
+ * Case.
+ 01 ws01-case.
+ 02 ws02-maiusculo pic x(26)
+ value "ABCDEFGHIJKLMNOPQRSTUVXYWZ".
+ 02 ws02-minusculo pic x(26)
+ value "abcdefghijklmnopqrstuvxywz".
+ * Linhas armazenadas.
+ 01 ws01-linhas.
+ 03 ws03-registro-armazenado pic x(256) occurs 1000 times.
+ * Para debug.
+ 77 ws77-conta-linha pic 9(005) value 1.
+ * Verbos a serem parseados.
+ 01 ws01-verbos.
+ 02 ws02-tokens pic x(256) occurs 256 times.
+ * Informações sobre FD e VALUE OF FILE-ID.
+ 01 ws01-fd.
+ 02 ws02-nomefd pic x(031) occurs 256 times.
+ 02 ws02-fileidfd pic x(031) occurs 256 times.
+ 02 ws02-indexed pic x(001) occurs 256 times.
+ 77 ws77-count-fd pic 9(003) value zeros.
+ * Informações para laços de repetição, onde se procura um token.
+ 77 ws77-token pic 9(001) value zeros.
+ 88 ws88-token-nao-encontrado value 0.
+ 88 ws88-token-encontrado value 1.
+
+ linkage section.
+ copy "globals.ls".
+
+ procedure division using ws77-arquivo-entrada
+ ws77-arquivo-saida
+ ws77-processo.
+ perform descobrir-informacoes
+ perform parsear-fonte
+ perform finalizar
+ .
+ ******************************************************************
+ * Procedures principais *
+ ******************************************************************
+ descobrir-informacoes.
+ perform varying ws02-i from 1 by 1
+ until ws02-i >= 256
+ move spaces to ws02-nomefd(ws02-i) ws02-fileidfd(ws02-i)
+ move "N" to ws02-indexed(ws02-i)
+ end-perform
+ open input arquivo-entrada
+ if not ws88-ok
+ perform testar-file-status
+ end-if
+ perform until ws88-fim-arquivo
+ read arquivo-entrada
+ if not ws88-fim-arquivo
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ACCEPT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FROM "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " ESCAPE "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " KEY"
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " ACCEPT "
+ add 8 to ws02-i
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters
+ before " FROM "
+ compute ws02-k = ws02-j - ws02-i
+ add 1 to ws02-k
+ move ws77-linha-para-parsing
+ (ws02-i:ws02-k)
+ to ws77-crt-status-field
+ move ws02-k to ws77-crt-status-length
+ set ws88-precisa-crt-status to true
+ end-if
+ end-if
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " IDENTIFICATION "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ set ws88-existe-id to true
+ move ws77-conta-linha to ws77-linha-id
+ end-if
+ else
+ if not ws88-existe-id
+ set ws88-nao-existe-id to true
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ENVIRONMENT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ set ws88-existe-ed to true
+ move ws77-conta-linha to ws77-linha-ed
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " SELECT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " NOT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " OPTIONAL "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " OPTIONAL "
+ add 10 to ws02-i
+ end-if
+ else
+ *> move zeros to ws02-i
+ *> inspect ws77-linha-para-parsing
+ *> tallying ws02-i for all " OPTIONAL "
+ *> if ws02-i > 0
+ *> move zeros to ws02-i
+ *> inspect ws77-linha-para-parsing
+ *> tallying ws02-i for characters
+ *> before " OPTIONAL "
+ *> add 10 to ws02-i
+ *> else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " SELECT "
+ add 8 to ws02-i
+ *> end-if
+ end-if
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for all " ASSIGN "
+ if ws02-j > 0
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters
+ before " ASSIGN "
+ add 2 to ws02-j
+ add 1 to ws77-count-fd
+ perform varying ws02-l
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-l:1)
+ not equal spaces
+ continue
+ end-perform
+ perform varying ws02-m
+ from ws02-j by -1
+ until ws77-linha-para-parsing
+ (ws02-m:1)
+ not equal spaces
+ continue
+ end-perform
+ compute ws02-k = ws02-m - ws02-l
+ move reg-arquivo-entrada
+ (ws02-l:ws02-k)
+ to ws02-nomefd(ws77-count-fd)
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " TO "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " TO "
+ add 4 to ws02-i
+ perform varying ws02-l
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-l:1)
+ not equal spaces
+ continue
+ end-perform
+ perform varying ws02-m
+ from 256 by -1
+ until ws77-linha-para-parsing
+ (ws02-m:1)
+ not equal spaces
+ continue
+ end-perform
+ compute ws02-n = 256 - ws02-m
+ compute ws02-o =
+ (ws02-m + 1) - ws02-l
+ if ws88-processo-verboso
+ display "L: " ws02-l
+ display "M: " ws02-m
+ display "N; " ws02-n
+ display "O: " ws02-o
+ end-if
+ move reg-arquivo-entrada
+ (ws02-l:ws02-o)
+ to ws02-fileidfd(ws77-count-fd)
+ if ws88-processo-verboso
+ display "File-id: "
+ ws02-fileidfd(ws77-count-fd)
+ end-if
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " ORGANIZATION "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i for all
+ " INDEXED "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Tem indexed"
+ end-if
+ move "Y" to
+ ws02-indexed
+ (ws77-count-fd)
+ else
+ if ws88-processo-verboso
+ display "ñ tem indexed"
+ end-if
+ move "N" to
+ ws02-indexed
+ (ws77-count-fd)
+ end-if
+ else
+ move "N" to
+ ws02-indexed(ws77-count-fd)
+ end-if
+ end-if
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FD "
+ if ws02-i > 0
+ perform testes-fd
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ add 1 to ws77-conta-linha
+ end-perform
+ add 1 to ws77-count-fd
+ if ws88-processo-verboso
+ perform varying ws02-i from 1 by 1
+ until ws02-i >= 256
+ or ws02-nomefd(ws02-i) equal spaces
+ display "NomeFD " ws02-i ":" ws02-nomefd(ws02-i)
+ display "FileID " ws02-i ":" ws02-fileidfd(ws02-i)
+ display "Indexed?" ws02-i ":" ws02-indexed(ws02-i)
+ end-perform
+ end-if
+ close arquivo-entrada
+ .
+ parsear-fonte.
+ move 1 to ws77-conta-linha
+ open input arquivo-entrada
+ if not ws88-ok
+ perform testar-file-status
+ end-if
+ open output arquivo-saida
+
+ if ws88-nao-existe-id
+ write reg-arquivo-saida from
+ " IDENTIFICATION DIVISION."
+ move spaces to reg-arquivo-saida
+ string " PROGRAM-ID. " ws77-arquivo-entrada(1:6)
+ "." into reg-arquivo-saida
+ write reg-arquivo-saida
+ write reg-arquivo-saida from spaces
+ if ws88-nao-existe-ed
+ if ws88-precisa-crt-status
+ write reg-arquivo-saida from
+ " ENVIRONMENT DIVISION."
+ write reg-arquivo-saida from
+ " CONFIGURATION SECTION."
+ write reg-arquivo-saida from
+ " SPECIAL-NAMES."
+ string " CRT STATUS IS "
+ ws77-crt-status-field(1:ws77-crt-status-length)
+ "." into reg-arquivo-saida
+ write reg-arquivo-saida
+ end-if
+ end-if
+ end-if
+
+ perform until ws88-fim-arquivo
+ read arquivo-entrada
+ if not ws88-fim-arquivo
+ if ws88-processo-verboso
+ display "No..: " ws77-conta-linha
+ display "Desc: " reg-arquivo-entrada
+ end-if
+ inspect reg-arquivo-entrada
+ replacing all " COMP-X"
+ by " COMP "
+ inspect reg-arquivo-entrada
+ replacing all " comp-x"
+ by " COMP "
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ perform testes-geral
+ end-if
+ end-perform
+
+ close arquivo-entrada
+ close arquivo-saida
+ .
+ mais-testes.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all ' SELECT '
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Testes de select"
+ end-if
+ perform testes-select
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all ' CANCEL '
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Testes de cancel"
+ end-if
+ perform testes-cancel
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " VALUE "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Testes de VALUE"
+ end-if
+ perform testes-value
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " MOVE "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Testes de move"
+ end-if
+ perform testes-move
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all ' "'
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Testes de aspas duplas"
+ end-if
+ perform testes-aspas-duplas
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " -"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Testes de hifen"
+ end-if
+ perform testes-hifen
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " LABEL "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Teste de label"
+ end-if
+ perform testes-label
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ .
+ finalizar.
+ exit program
+ .
+ *****************************************************************
+ * Procedures secundarias *
+ *****************************************************************
+ testes-lock.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " MODE "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou clausula LOCK MODE"
+ display "Nao grava linha"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all "."
+ if ws02-i > 0
+ move " ." to reg-arquivo-saida
+ write reg-arquivo-saida
+ else
+ set ws88-nao-grava-linha to true
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ .
+ testes-label.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " RECORD "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou clausula LABEL RECORD."
+ display "Nao grava linha"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all "."
+ if ws02-i > 0
+ move " ." to reg-arquivo-saida
+ write reg-arquivo-saida
+ else
+ set ws88-nao-grava-linha to true
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ .
+ testes-data.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " RECORD "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou DATA RECORD!"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all "."
+ if ws02-i > 0
+ move " ." to reg-arquivo-entrada
+ set ws88-grava-linha to true
+ else
+ set ws88-nao-grava-linha to true
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " RECORDS "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou DATA RECORDS!"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all "."
+ if ws02-i > 0
+ move " ." to reg-arquivo-entrada
+ set ws88-grava-linha to true
+ else
+ set ws88-nao-grava-linha to true
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou DATA DIVISION!"
+ end-if
+ if ws88-nao-existe-ed
+ write reg-arquivo-saida from
+ " ENVIRONMENT DIVISION."
+ if ws88-precisa-crt-status
+ write reg-arquivo-saida from
+ " CONFIGURATION SECTION."
+ write reg-arquivo-saida from
+ " SPECIAL-NAMES."
+ string " CRT STATUS IS "
+ ws77-crt-status-field
+ (1:ws77-crt-status-length)
+ "." into reg-arquivo-saida
+ write reg-arquivo-saida
+ end-if
+ end-if
+ write reg-arquivo-saida from spaces
+ end-if
+ end-if
+ end-if
+ if ws88-grava-linha
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-display.
+ set ws88-display-nao-terminado to true
+ perform until ws88-display-terminado
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " AT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " LINE "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou LINE, vai retirar o AT."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " AT "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:4)
+ ws77-linha-para-parsing(ws02-i:4)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " PROMPT "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou o PROMPT, vai remove-lo"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " PROMPT "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:8)
+ ws77-linha-para-parsing(ws02-i:8)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " BACKGROUND-COLOR "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o BACKGROUND-COLOR
+ - " vai remove-lo"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " BACKGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:18)
+ ws77-linha-para-parsing
+ (ws02-i:18)
+ add 18 to ws02-i
+ perform varying ws02-j
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-j:1)
+ not equal spaces or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i
+ from ws02-j by 1
+ until ws77-linha-para-parsing
+ (ws02-i:1)
+ equal spaces or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing
+ (ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:1)
+ end-perform
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " FOREGROUND-COLOR "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o FOREGROUND-C
+ - "OLOR vai remove-lo"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " FOREGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:18)
+ ws77-linha-para-parsing
+ (ws02-i:18)
+ end-if
+ add 18 to ws02-i
+ perform varying ws02-j from ws02-i by 1
+ until ws77-linha-para-parsing(ws02-j:1)
+ not equal spaces
+ or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i from ws02-j by 1
+ until ws77-linha-para-parsing(ws02-i:1)
+ equal spaces
+ or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing(ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada(ws02-i:1)
+ end-perform
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " AUTO-SKIP "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o AUTO-SKI
+ - "P sera substituido pe
+ - "lo AUTO"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " AUTO-SKIP "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:10)
+ ws77-linha-para-parsing
+ (ws02-i:10)
+ move " AUTO "
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " WITH "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o WITH
+ - " que sera removido."
+ end-if
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i
+ for characters
+ before " WITH "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ end-if
+ else
+ perform tmp-display-bgfgcolor
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ set ws88-display-terminado to true
+ end-if
+ end-perform
+ .
+ testes-accept.
+ set ws88-accept-nao-terminado to true
+ perform until ws88-accept-terminado
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " AT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " LINE "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou LINE, vai retirar o AT."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " AT "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:4)
+ ws77-linha-para-parsing(ws02-i:4)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " PROMPT "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou o PROMPT, vai remove-lo"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " PROMPT "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:8)
+ ws77-linha-para-parsing(ws02-i:8)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " BACKGROUND-COLOR "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o BACKGROUND-COLO
+ - "R vai remove-lo"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " BACKGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada(ws02-i:18)
+ ws77-linha-para-parsing
+ (ws02-i:18)
+ add 18 to ws02-i
+ perform varying ws02-j
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-j:1)
+ not equal spaces or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i
+ from ws02-j by 1
+ until ws77-linha-para-parsing
+ (ws02-i:1)
+ equal spaces or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing
+ (ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:1)
+ end-perform
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " FOREGROUND-COLOR "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o FOREGROUND-C
+ - "OLOR vai remove-lo"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " FOREGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:18)
+ ws77-linha-para-parsing
+ (ws02-i:18)
+ end-if
+ add 18 to ws02-i
+ perform varying ws02-j
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-j:1)
+ not equal spaces or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i
+ from ws02-j by 1
+ until ws77-linha-para-parsing
+ (ws02-i:1)
+ equal spaces or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing
+ (ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:1)
+ end-perform
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " AUTO-SKIP "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o AUTO-SKI
+ - "P sera substituido pe
+ - "lo AUTO"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " AUTO-SKIP "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:10)
+ ws77-linha-para-parsing
+ (ws02-i:10)
+ move " AUTO "
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " WITH "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o WITH
+ - " que sera removido."
+ end-if
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i
+ for characters
+ before " WITH "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " BEEP"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o
+ - " BEEP que sera removi
+ - "do."
+ end-if
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i
+ for characters
+ before " BEEP"
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ move spaces
+ to reg-arquivo-entrada
+ (ws02-i:6)
+ ws77-linha-para-parsing
+ (ws02-i:6)
+ end-if
+ else
+ perform tmp-accept-bgfgcolor
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FROM "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ESCAPE "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " KEY"
+ if ws02-i > 0
+ set ws88-accept-terminado to true
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ set ws88-accept-terminado to true
+ end-if
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ set ws88-accept-terminado to true
+ end-if
+ end-if
+ end-perform
+ .
+ testes-delete.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DELETE "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FILE "
+ if ws02-i > 0
+ set ws88-nao-grava-linha to true
+ end-if
+ end-if
+ if ws88-grava-linha
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-call.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before " CALL "
+ add 6 to ws02-i
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for all " USING "
+ if ws02-j > 0
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters before " USING "
+ if ws02-j > 0
+ compute ws02-k = ws02-j - ws02-i
+ move zeros to ws02-l
+ inspect ws77-linha-para-parsing
+ tallying ws02-l for all 'X"AF"'
+ if ws02-l > 0
+ set ws88-nao-grava-linha to true
+ else
+ move zeros to ws02-l
+ inspect ws77-linha-para-parsing
+ tallying ws02-l for all 'X"91"'
+ if ws02-l > 0
+ set ws88-nao-grava-linha to true
+ else
+ inspect reg-arquivo-entrada(ws02-i:ws02-k)
+ converting ws02-maiusculo
+ to ws02-minusculo
+ end-if
+ end-if
+ end-if
+ end-if
+ if ws88-grava-linha
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-id.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou IDENTIFICATION DIVISION!"
+ end-if
+ write reg-arquivo-saida from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " PROGRAM-ID"
+ if ws02-i <= 0
+ if ws88-processo-verboso
+ display "Nao encontrou PROGRAM-ID!"
+ end-if
+ string " PROGRAM-ID. " ws77-arquivo-entrada(1:6)
+ "." into reg-arquivo-saida
+ inspect reg-arquivo-saida
+ converting ws02-maiusculo
+ to ws02-minusculo
+ write reg-arquivo-saida
+ else
+ if ws88-processo-verboso
+ display "Encontrou PROGRAM-ID!"
+ end-if
+ inspect reg-arquivo-entrada
+ converting ws02-maiusculo
+ to ws02-minusculo
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-ed.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DIVISION"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou ENVIRONMENT DIVISION!"
+ end-if
+ write reg-arquivo-saida from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " CONFIGURATION "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " SECTION"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou CONFIGURATION SECTION!"
+ end-if
+ write reg-arquivo-saida from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " SOURCE-COMPUTER"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou SOURCE-COMPUTER!"
+ end-if
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ else
+ set ws88-finaliza-parsing to true
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " SPECIAL-NAMES"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou SPECIAL-NAMES!"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " DECIMAL-POINT"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou DECIMAL-POINT na m
+ - "esma linha da SPECIAL-NAMES"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " DECIMAL-POINT"
+ if ws02-i > 0
+ move spaces
+ to reg-arquivo-saida
+ move reg-arquivo-entrada
+ (1:ws02-i)
+ to reg-arquivo-saida
+ write reg-arquivo-saida
+ end-if
+ else
+ if ws88-continua-parsing
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ end-if
+ move spaces to reg-arquivo-saida
+ if ws88-precisa-crt-status
+ if ws88-processo-verboso
+ display "Precisa de CRT STATUS!"
+ end-if
+ string " CRT STATUS IS "
+ ws77-crt-status-field
+ (1:ws77-crt-status-length)
+ into reg-arquivo-saida
+ write reg-arquivo-saida
+ set ws88-nao-grava-linha to true
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " DECIMAL-POINT"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou DECIMAL-POINT na
+ - "mesma linha da SPECIAL-NAM
+ - "ES"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " DECIMAL-POINT"
+ if ws02-i > 0
+ add 2 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ move spaces
+ to reg-arquivo-saida
+ move reg-arquivo-entrada
+ (ws02-i:ws02-j)
+ to reg-arquivo-saida(12:242)
+ write reg-arquivo-saida
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ .
+
+ testes-aspas-duplas.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before ' "'
+ if ws02-i = 6
+ if ws88-processo-verboso
+ display "Encontrou aspas duplas, acertando-as para a
+ - " coluna 12"
+ end-if
+ add 2 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ move spaces to reg-arquivo-saida(1:11)
+ move reg-arquivo-entrada(ws02-i:ws02-j)
+ to reg-arquivo-saida(12:244)
+ if reg-arquivo-saida(73:183) not equal spaces
+ if ws88-processo-verboso
+ display "Linha não acabou, os testes devem ser fe
+ - "itos pelo testes-hifen"
+ end-if
+ set ws88-nao-terminou-linha to true
+ move reg-arquivo-saida(73:183)
+ to ws77-linha-temporaria
+ move spaces to reg-arquivo-saida(73:183)
+ end-if
+ write reg-arquivo-saida
+ move zeros to ws02-i
+ inspect ws77-linha-temporaria
+ tallying ws02-i for all '"'
+ if ws02-i > 0
+ move spaces to reg-arquivo-saida
+ move ' - "' to reg-arquivo-saida(1:12)
+ move ws77-linha-temporaria
+ to reg-arquivo-saida(13:)
+ write reg-arquivo-saida
+ move spaces to ws77-linha-temporaria
+ set ws88-terminou-linha to true
+ end-if
+ else
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters before ' -'
+ if ws02-j = 5
+ perform testes-hifen
+ else
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ end-if
+ .
+ testes-hifen.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before " -"
+ if ws02-i = 5
+ if ws88-processo-verboso
+ display "Encontrado hifen"
+ end-if
+ set ws88-linha-continuada to true
+ move zeros to ws02-m
+ inspect ws77-linha-para-parsing
+ tallying ws02-m for all '"'
+ if ws02-m >= 2
+ if ws88-processo-verboso
+ display "Ultima linha!"
+ end-if
+ set ws88-ultima-linha to true
+ end-if
+ move zeros to ws02-n
+ inspect ws77-linha-para-parsing
+ tallying ws02-n for characters before '"'
+ if ws02-n < 11
+ if ws88-processo-verboso
+ display "Precisa ser modificado posicionamento"
+ display "N: " ws02-n
+ end-if
+ add 3 to ws02-i
+ set ws88-continua-parsing to true
+ else
+ if ws88-processo-verboso
+ display "Não precisa modificar posicionamento"
+ display "N: " ws02-n
+ end-if
+ move reg-arquivo-entrada to reg-arquivo-saida
+ set ws88-finaliza-parsing to true
+ end-if
+ if ws88-continua-parsing
+ compute ws02-j = 256 - ws02-i
+ move spaces to reg-arquivo-saida
+ move " - " to reg-arquivo-saida(1:11)
+ if ws88-terminou-linha
+ if ws88-processo-verboso
+ display "Linha terminada"
+ end-if
+ move reg-arquivo-entrada(ws02-i:ws02-j)
+ to reg-arquivo-saida(12:244)
+ else
+ if ws88-processo-verboso
+ display "Linha nao terminada"
+ end-if
+ move '"' to reg-arquivo-saida(12:1)
+ perform varying ws02-k from 256 by -1
+ until ws77-linha-temporaria(ws02-k:1)
+ not equal spaces
+ continue
+ end-perform
+ move ws77-linha-temporaria(1:ws02-k)
+ to reg-arquivo-saida(13:ws02-k)
+ compute ws02-l = 13 + ws02-k
+ if ws88-processo-verboso
+ display "Linha ant."
+ reg-arquivo-saida(1:ws02-l)
+ end-if
+ add 1 to ws02-i
+ subtract 1 from ws02-j
+ compute ws02-m = 256 - ws02-l
+ if ws88-processo-verboso
+ display "I: " ws02-i
+ display "J: " ws02-j
+ display "L: " ws02-l
+ display "K: " ws02-k
+ display "M: " ws02-m
+ end-if
+ move reg-arquivo-entrada(ws02-i:ws02-j)
+ to reg-arquivo-saida(ws02-l:ws02-m)
+ if ws88-processo-verboso
+ display "Linha atual: " reg-arquivo-saida
+ end-if
+ end-if
+ end-if
+ if reg-arquivo-saida(73:183) not equal spaces
+ if ws88-processo-verboso
+ display "Linha nao terminou.. testes-hifen"
+ end-if
+ set ws88-nao-terminou-linha to true
+ move reg-arquivo-saida(73:183)
+ to ws77-linha-temporaria
+ move spaces to reg-arquivo-saida(73:183)
+ else
+ if ws88-processo-verboso
+ display "Linha terminou.."
+ end-if
+ set ws88-terminou-linha to true
+ end-if
+ write reg-arquivo-saida
+ if ws88-ultima-linha
+ if ws88-nao-terminou-linha
+ if ws88-processo-verboso
+ display "Ultima linha desta instrucao!"
+ end-if
+ move spaces to reg-arquivo-saida
+ move zeros to ws02-i
+ inspect ws77-linha-temporaria
+ tallying ws02-i for all '"'
+ if ws02-i >= 1
+ move ' - "'
+ to reg-arquivo-saida(1:12)
+ move 13 to ws02-k
+ else
+ move 12 to ws02-k
+ end-if
+ perform varying ws02-i from 256 by -1
+ until ws77-linha-temporaria(ws02-i:1)
+ not equal spaces
+ continue
+ end-perform
+ move ws77-linha-temporaria(1:ws02-i)
+ to reg-arquivo-saida(ws02-k:243)
+ perform varying ws02-i from 256 by -1
+ until reg-arquivo-saida(ws02-i:1)
+ not equal '"'
+ continue
+ end-perform
+ compute ws02-j = 256 - ws02-i
+ move reg-arquivo-saida(ws02-i:ws02-j)
+ to ws77-linha-temporaria
+ move spaces to reg-arquivo-saida(ws02-i:ws02-j)
+ write reg-arquivo-saida
+ move spaces to reg-arquivo-saida
+ move ws77-linha-temporaria
+ to reg-arquivo-saida(ws02-k:244)
+ write reg-arquivo-saida
+ set ws88-terminou-linha to true
+ end-if
+ end-if
+ else
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-value.
+ move reg-arquivo-entrada to reg-arquivo-saida
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " OF "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FILE-ID "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FD "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before
+ " VALUE "
+ if ws02-i > 0
+ add 1 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ move spaces to reg-arquivo-saida
+ (ws02-i:ws02-j)
+ move "." to reg-arquivo-saida(ws02-i:1)
+ write reg-arquivo-saida
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all "."
+ if ws02-i > 0
+ * DANILO(
+ MOVE ZEROS TO W01-CONT1
+ INSPECT ws77-linha-para-parsing
+ TALLYING W01-CONT1 FOR ALL '"'
+ IF W01-CONT1 EQUAL 2 AND
+ ws02-i NOT EQUAL 2
+ CONTINUE
+ ELSE
+ * DANILO)
+ move " ." to reg-arquivo-saida
+ write reg-arquivo-saida
+ END-IF
+ *> else
+ *> write reg-arquivo-saida from spaces
+ end-if
+ end-if
+ else
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ else
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-select.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ASSIGN "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou ASSIGN ..."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " SELECT "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou SELECT dentro do teste do ASSI
+ - "GN"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " NOT "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou NOT "
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " OPTIONAL "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou OPTIONAL "
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " OPTIONAL "
+ add 10 to ws02-i
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters
+ before " ASSIGN "
+ add 1 to ws02-j
+ perform varying ws02-k
+ from ws02-i by 1
+ until ws77-linha-para-parsing(ws02-k:1)
+ not equal spaces
+ continue
+ end-perform
+ perform varying ws02-l
+ from ws02-j by -1
+ until ws77-linha-para-parsing(ws02-l:1)
+ not equal spaces
+ continue
+ end-perform
+ compute ws02-m = (ws02-l + 1) - ws02-k
+ if ws88-processo-verboso
+ display "Indice I: " ws02-i
+ display "Indice M: " ws02-m
+ display "Indice K: " ws02-k
+ display "Indice L: " ws02-l
+ display "nome: "
+ reg-arquivo-entrada(ws02-k:ws02-m)
+ end-if
+ perform varying ws02-n from 1 by 1
+ until ws02-n >= ws77-count-fd
+ if ws88-processo-verboso
+ display "Registro: "
+ reg-arquivo-entrada(ws02-k:ws02-m)
+ display "Tabela: " ws02-nomefd(ws02-n)
+ end-if
+ if reg-arquivo-entrada(ws02-k:ws02-m)
+ equal ws02-nomefd(ws02-n)
+ set ws88-nao-grava-linha to true
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " TO "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou TO"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DISK "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou DISK"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " DISK "
+ move reg-arquivo-entrada
+ (1:ws02-i)
+ to reg-arquivo-saida
+ add 1 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ string " EXTERNAL "
+ ws02-fileidfd(ws02-n)
+ delimited by size
+ into reg-arquivo-saida
+ (ws02-i:ws02-j)
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " NOT "
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-saida(ws02-i:4)
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " OPTIONAL "
+ if ws02-indexed(ws02-n)
+ equal "N"
+ if ws88-processo-verboso
+ display "ñ adiciona opt
+ - "ional"
+ end-if
+ move spaces
+ to reg-arquivo-saida
+ (ws02-i:10)
+ end-if
+ if ws88-processo-verboso
+ display "saida: "
+ reg-arquivo-saida
+ end-if
+ * DANILO
+ MOVE reg-arquivo-saida TO
+ W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO
+ reg-arquivo-saida
+ * DANILO
+ write reg-arquivo-saida
+ move ws77-count-fd to ws02-n
+ else
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i for all
+ " PRINTER"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou PRI
+ - "NTER"
+ end-if
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " PRINTER"
+ move reg-arquivo-entrada
+ (1:ws02-i)
+ to reg-arquivo-saida
+ add 1 to ws02-i
+ compute ws02-j =
+ 256 - ws02-i
+ string " EXTERNAL "
+ ws02-fileidfd(ws02-n)
+ delimited by size
+ into reg-arquivo-saida
+ (ws02-i:ws02-j)
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i
+ for characters
+ before " NOT "
+ add 1 to ws02-i
+ move spaces
+ to reg-arquivo-saida
+ (ws02-i:4)
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " OPTIONAL "
+ move spaces
+ to reg-arquivo-saida
+ (ws02-i:10)
+ if ws88-processo-verboso
+ display "saida: "
+ reg-arquivo-saida
+ end-if
+ * DANILO
+ MOVE reg-arquivo-saida TO
+ W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO
+ reg-arquivo-saida
+ * DANILO
+ write reg-arquivo-saida
+ move ws77-count-fd
+ to ws02-n
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " NOT "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for
+ characters before " NOT "
+ add 1 to ws02-i
+ move spaces to reg-arquivo-entrada
+ (ws02-i:5)
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " OPTIONAL "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for
+ characters before " OPTIONAL "
+ add 1 to ws02-i
+ if ws02-indexed(ws02-n)
+ equal "N"
+ if ws88-processo-verboso
+ display "ñ adiciona opti
+ - "onal"
+ end-if
+ move spaces to
+ reg-arquivo-entrada
+ (ws02-i:10)
+ end-if
+ end-if
+ end-if
+ * DANILO( TIRANDO EXCESSO DE ESPACOS
+ MOVE reg-arquivo-entrada TO W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO reg-arquivo-entrada
+ * DANILO)
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ end-if
+ end-if
+ else
+ set ws88-grava-linha to true
+ end-if
+ end-perform
+ if ws88-grava-linha
+ * DANILO( TIRANDO EXCESSO DE ESPACOS
+ MOVE reg-arquivo-entrada TO W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO reg-arquivo-entrada
+ * DANILO)
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ end-if
+ else
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i for all " OPTIONAL "
+ * if ws02-i > 0
+ * if ws88-processo-verboso
+ * display "Encontrou OPTIONAL"
+ * end-if
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i for characters
+ * before " OPTIONAL "
+ * add 10 to ws02-i
+ * move zeros to ws02-j
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-j for characters
+ * before " ASSIGN "
+ * add 1 to ws02-j
+ * perform varying ws02-k
+ * from ws02-i by 1
+ * until ws77-linha-para-parsing(ws02-k:1)
+ * not equal spaces
+ * continue
+ * end-perform
+ * perform varying ws02-l
+ * from ws02-j by -1
+ * until ws77-linha-para-parsing(ws02-l:1)
+ * not equal spaces
+ * continue
+ * end-perform
+ * compute ws02-m = (ws02-l + 1) - ws02-k
+ * if ws88-processo-verboso
+ * display "Indice I: " ws02-i
+ * display "Indice M: " ws02-m
+ * display "Indice K: " ws02-k
+ * display "Indice L: " ws02-l
+ * display "nome: "
+ * reg-arquivo-entrada(ws02-k:ws02-m)
+ * end-if
+ * perform varying ws02-n from 1 by 1
+ * until ws02-n >= ws77-count-fd
+ * if reg-arquivo-entrada(ws02-k:ws02-m)
+ * equal ws02-nomefd(ws02-n)
+ * set ws88-nao-grava-linha to true
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i for all " TO "
+ * if ws02-i > 0
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i for all " DISK "
+ * if ws02-i > 0
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i
+ * for characters before
+ * " DISK "
+ * move reg-arquivo-entrada
+ * (1:ws02-i)
+ * to reg-arquivo-saida
+ * add 1 to ws02-i
+ * compute ws02-j = 256 - ws02-i
+ * string " EXTERNAL "
+ * ws02-fileidfd(ws02-n)
+ * delimited by size
+ * into
+ * reg-arquivo-saida(ws02-i:ws02-j)
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i for characters
+ * before " OPTIONAL "
+ * add 1 to ws02-i
+ * move spaces
+ * to reg-arquivo-saida(ws02-i:10)
+ * if ws88-processo-verboso
+ * display "saida; "
+ * reg-arquivo-saida
+ * end-if
+ * write reg-arquivo-saida
+ * move ws77-count-fd to ws02-n
+ * else
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i for all
+ * " PRINTER"
+ * if ws02-i > 0
+ * move zeros to ws02-i
+ * inspect
+ * ws77-linha-para-parsing
+ * tallying ws02-i
+ * for characters before
+ * " PRINTER"
+ * move reg-arquivo-entrada
+ * (1:ws02-i)
+ * to reg-arquivo-saida
+ * add 1 to ws02-i
+ * compute ws02-j =
+ * 256 - ws02-i
+ * string " EXTERNAL "
+ * ws02-fileidfd(ws02-n)
+ * delimited by size
+ * into reg-arquivo-saida
+ * (ws02-i:ws02-j)
+ * move zeros to ws02-i
+ * inspect
+ * ws77-linha-para-parsing
+ * tallying ws02-i
+ * for characters before
+ * " OPTIONAL "
+ * add 1 to ws02-i
+ * move spaces
+ * to reg-arquivo-saida
+ * (ws02-i:10)
+ * if ws88-processo-verboso
+ * display "saida; "
+ * reg-arquivo-saida
+ * end-if
+ * write reg-arquivo-saida
+ * move ws77-count-fd to ws02-n
+ * else
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i for all
+ * " OPTIONAL "
+ * if ws02-i > 0
+ * move zeros to ws02-i
+ * inspect ws77-linha-para-parsing
+ * tallying ws02-i for
+ * characters before " OPTIONAL "
+ * add 1 to ws02-i
+ * move spaces
+ * to
+ * reg-arquivo-entrada(ws02-i:10)
+ * end-if
+ * set ws88-grava-linha to true
+ * end-if
+ * end-if
+ * end-if
+ * else
+ * set ws88-grava-linha to true
+ * end-if
+ * end-perform
+ * if ws88-grava-linha
+ * write reg-arquivo-saida
+ * from reg-arquivo-entrada
+ * end-if
+ * else
+ if ws88-processo-verboso
+ display "Select simples"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " SELECT "
+ add 08 to ws02-i
+ move zeros to ws02-j
+ inspect ws77-linha-para-parsing
+ tallying ws02-j for characters
+ before " ASSIGN "
+ add 1 to ws02-j
+ perform varying ws02-k
+ from ws02-i by 1
+ until ws77-linha-para-parsing(ws02-k:1)
+ not equal spaces
+ continue
+ end-perform
+ perform varying ws02-l
+ from ws02-j by -1
+ until ws77-linha-para-parsing(ws02-l:1)
+ not equal spaces
+ continue
+ end-perform
+ if ws88-processo-verboso
+ display "Indice I: " ws02-i
+ display "Indice M: " ws02-m
+ display "Indice K: " ws02-k
+ display "Indice L: " ws02-l
+ end-if
+ compute ws02-m = (ws02-l + 1) - ws02-k
+ if ws88-processo-verboso
+ display "nome: "
+ reg-arquivo-entrada(ws02-k:ws02-m)
+ end-if
+ perform varying ws02-n from 1 by 1
+ until ws02-n >= ws77-count-fd
+ if reg-arquivo-entrada(ws02-k:ws02-m)
+ equal ws02-nomefd(ws02-n)
+ set ws88-nao-grava-linha to true
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " TO "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DISK "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " SELECT "
+ add 8 to ws02-i
+ move reg-arquivo-entrada
+ (1:ws02-i)
+ to reg-arquivo-saida
+ if ws88-processo-verboso
+ display "registro 1: "
+ reg-arquivo-saida
+ end-if
+ perform varying ws02-j
+ from 256 by -1 until
+ reg-arquivo-saida
+ (ws02-j:1)
+ not equal spaces
+ continue
+ end-perform
+ add 1 to ws02-j
+ if ws02-indexed(ws02-n)
+ equal "Y"
+ compute ws02-k =
+ 256 - ws02-j
+ move " OPTIONAL "
+ to reg-arquivo-saida
+ (ws02-j:ws02-k)
+ end-if
+ if ws88-processo-verboso
+ display "registro 2: "
+ reg-arquivo-saida
+ end-if
+ add 10 to ws02-j
+ move zeros to ws02-l
+ inspect ws77-linha-para-parsing
+ tallying ws02-l for all
+ " TO "
+ if ws02-l > 0
+ move zeros to ws02-l
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-l for
+ characters before " TO "
+ add 4 to ws02-l
+ compute ws02-m =
+ ws02-l - ws02-i
+ move reg-arquivo-entrada
+ (ws02-i:ws02-m)
+ to reg-arquivo-saida
+ (ws02-j:)
+ if ws88-processo-verboso
+ display "registro 3: "
+ reg-arquivo-saida
+ end-if
+ end-if
+ perform varying ws02-j
+ from 256 by -1
+ until reg-arquivo-saida
+ (ws02-j:1)
+ not equal spaces
+ continue
+ end-perform
+ add 1 to ws02-j
+ move zeros to ws02-s
+ inspect ws02-fileidfd(ws02-n)
+ tallying ws02-s
+ for all '\'
+ if ws02-s > 0
+ move zeros to ws02-s
+ move ws02-fileidfd(ws02-n)
+ to ws77-linha-temporaria
+ inspect
+ ws02-fileidfd(ws02-n)
+ tallying ws02-s for
+ characters before
+ "\"
+ add 1 to ws02-s
+ move "/"
+ to ws77-linha-temporaria
+ (ws02-s:1)
+ move ws77-linha-temporaria
+ to ws02-fileidfd(ws02-n)
+ end-if
+ string " EXTERNAL "
+ ws02-fileidfd(ws02-n)
+ delimited by size
+ into reg-arquivo-saida
+ (ws02-j:)
+ if ws88-processo-verboso
+ display "Saida: "
+ reg-arquivo-saida
+ end-if
+ * DANILO(TIRANDO EXCESSO DE ESPACOS
+ MOVE reg-arquivo-saida TO
+ W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO
+ reg-arquivo-saida
+ * DANILO)
+ write reg-arquivo-saida
+ move ws77-count-fd to ws02-n
+ else
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i for all
+ " PRINTER"
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " PRINTER"
+ move reg-arquivo-entrada
+ (1:ws02-i)
+ to reg-arquivo-saida
+ add 1 to ws02-i
+ compute ws02-j = 256 - ws02-i
+ * DANILO
+ MOVE ZEROS TO W01-CONT1
+ INSPECT WS02-FILEIDFD(WS02-N)
+ TALLYING W01-CONT1 FOR ALL "."
+ IF W01-CONT1 EQUAL ZEROS
+ STRING WS02-FILEIDFD(WS02-N)
+ DELIMITED BY " "
+ "." DELIMITED SIZE
+ INTO WS02-FILEIDFD(WS02-N)
+ END-IF
+ * DANILO
+ string " EXTERNAL "
+ ws02-fileidfd(ws02-n)
+ delimited by size
+ into reg-arquivo-saida
+ (ws02-i:ws02-j)
+ if ws88-processo-verboso
+ display "Saida: "
+ reg-arquivo-saida
+ end-if
+ * DANILO( TIRANDO EXCESSO DE ESPACOS
+ MOVE reg-arquivo-saida TO
+ W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO
+ reg-arquivo-saida
+ * DANILO)
+ write reg-arquivo-saida
+ move ws77-count-fd to ws02-n
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " SELECT "
+ add 8 to ws02-i
+ move reg-arquivo-entrada
+ (1:ws02-i)
+ to reg-arquivo-saida
+ if ws88-processo-verboso
+ display "registro 1: "
+ reg-arquivo-saida
+ end-if
+ perform varying ws02-j
+ from 256 by -1 until
+ reg-arquivo-saida
+ (ws02-j:1)
+ not equal spaces
+ continue
+ end-perform
+ add 1 to ws02-j
+ if ws02-indexed(ws02-n)
+ equal "Y"
+ compute ws02-k =
+ 256 - ws02-j
+ move " OPTIONAL "
+ to reg-arquivo-saida
+ (ws02-j:ws02-k)
+ end-if
+ if ws88-processo-verboso
+ display "registro 2: "
+ reg-arquivo-saida
+ end-if
+ add 10 to ws02-j
+ move zeros to ws02-l
+ inspect ws77-linha-para-parsing
+ tallying ws02-l for all
+ " TO "
+ if ws02-l > 0
+ move zeros to ws02-l
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-l for
+ characters before " TO "
+ add 4 to ws02-l
+ compute ws02-m =
+ ws02-l - ws02-i
+ move reg-arquivo-entrada
+ (ws02-i:ws02-m)
+ to reg-arquivo-saida
+ (ws02-j:)
+ if ws88-processo-verboso
+ display "registro 3: "
+ reg-arquivo-saida
+ end-if
+ end-if
+ perform varying ws02-j
+ from 256 by -1
+ until reg-arquivo-saida
+ (ws02-j:1)
+ not equal spaces
+ continue
+ end-perform
+ add 1 to ws02-j
+ compute ws02-r
+ = 256 - ws02-i
+ string " EXTERNAL "
+ ws02-fileidfd(ws02-n)
+ delimited by size
+ into reg-arquivo-saida
+ (ws02-j:ws02-r)
+ if ws88-processo-verboso
+ display "Saida: "
+ reg-arquivo-saida
+ end-if
+ * DANILO( TIRANDO EXCESSO DE ESPACOS
+ MOVE reg-arquivo-saida TO
+ W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO
+ reg-arquivo-saida
+ * DANILO)
+ write reg-arquivo-saida
+ move ws77-count-fd
+ to ws02-n
+ end-if
+ end-if
+ end-if
+ else
+ set ws88-grava-linha to true
+ end-if
+ end-perform
+ if ws88-grava-linha
+ * DANILO( TIRANDO EXCESSO DE ESPACOS
+ MOVE reg-arquivo-entrada TO W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO reg-arquivo-entrada
+ * DANILO)
+ write reg-arquivo-saida
+ from reg-arquivo-entrada
+ end-if
+ * end-if
+ end-if
+ end-if
+ else
+ * DANILO( TIRANDO EXCESSO DE ESPACOS
+ MOVE reg-arquivo-entrada TO W01-TEMP1
+ PERFORM TIRA-ESPACO
+ MOVE W01-TEMP2 TO reg-arquivo-entrada
+ * DANILO)
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-move.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all '"$'
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before '"$'
+ if ws02-i > 0
+ move spaces to reg-arquivo-entrada(ws02-i:1)
+ add 1 to ws02-i
+ move ' "' to reg-arquivo-entrada(ws02-i:2)
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all "\"
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before "\"
+ if ws02-i > 0
+ add 1 to ws02-i
+ move "/" to reg-arquivo-entrada(ws02-i:1)
+ end-if
+ end-if
+ write reg-arquivo-saida from reg-arquivo-entrada
+ else
+ write reg-arquivo-saida from reg-arquivo-saida
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all ' "'
+ if ws02-i > 0
+ perform testes-aspas-duplas
+ else
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ end-if
+ .
+ testes-cancel.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before ' "'
+ if ws02-i > 0 and ws02-i not equal 256
+ add 3 to ws02-i
+ perform varying ws02-j from 256 by -1
+ until ws77-linha-para-parsing(ws02-j:1)
+ equal '"'
+ continue
+ end-perform
+ inspect reg-arquivo-entrada(ws02-i:ws02-j)
+ converting ws02-maiusculo
+ to ws02-minusculo
+ write reg-arquivo-saida from reg-arquivo-entrada
+ else
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-geral.
+ set ws88-grava-linha to true
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " LOCK "
+ if ws02-i > 0
+ perform testes-lock
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DATA "
+ if ws02-i > 0
+ perform testes-data
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ACCEPT "
+ if ws02-i > 0
+ perform testes-accept
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DISPLAY "
+ if ws02-i > 0
+ perform testes-display
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DELETE "
+ if ws02-i > 0
+ perform testes-delete
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " CALL "
+ if ws02-i > 0
+ perform testes-call
+ else
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i for all
+ " IDENTIFICATION "
+ if ws02-i > 0
+ perform testes-id
+ else
+ move zeros to ws02-i
+ inspect
+ ws77-linha-para-parsing
+ tallying ws02-i for all
+ " ENVIRONMENT "
+ if ws02-i > 0
+ perform testes-ed
+ else
+ perform mais-testes
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ add 1 to ws77-conta-linha
+ .
+ tmp-display-bgfgcolor.
+ move zeros to ws02-s
+ write reg-arquivo-saida from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ perform 3 times
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " DISPLAY "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Tem DISPLAY"
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FOREGROUND-COLOR "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o FOREGROUND-COLOR vai remove
+ - "-lo"
+ end-if
+ set ws88-encontrou-fgcolor to true
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " FOREGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces to reg-arquivo-entrada(ws02-i:18)
+ ws77-linha-para-parsing(ws02-i:18)
+ add 18 to ws02-i
+ perform varying ws02-j from ws02-i by 1
+ until ws77-linha-para-parsing(ws02-j:1)
+ not equal spaces
+ or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i from ws02-j by 1
+ until ws77-linha-para-parsing(ws02-i:1)
+ equal spaces
+ or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing(ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada(ws02-i:1)
+ end-perform
+ end-if
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " BACKGROUND-COLOR "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o BACKGROUND-COLOR vai re
+ - "move-lo"
+ end-if
+ set ws88-encontrou-bgcolor to true
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " BACKGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces to reg-arquivo-entrada(ws02-i:18)
+ ws77-linha-para-parsing(ws02-i:18)
+ add 18 to ws02-i
+ perform varying ws02-j from ws02-i by 1
+ until ws77-linha-para-parsing(ws02-j:1)
+ not equal spaces
+ or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i from ws02-j by 1
+ until ws77-linha-para-parsing(ws02-i:1)
+ equal spaces
+ or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing(ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada(ws02-i:1)
+ end-perform
+ else
+ if ws88-processo-verboso
+ display "Não encontrou BACKGROUND-COLOR e
+ - "ira gravar o registro"
+ end-if
+ set ws88-display-terminado to true
+ perform testes-geral
+ end-if
+ else
+ if ws88-processo-verboso
+ display "Não encontrou BACKGROUND-COLOR e nao
+ - "irá gravar o arquivo"
+ end-if
+ set ws88-display-terminado to true
+ add 1 to ws02-s
+ end-if
+ end-if
+ end-if
+ end-perform
+ if ws88-encontrou-fgcolor or ws88-encontrou-bgcolor
+ set ws88-nao-encontrou-fgcolor to true
+ set ws88-nao-encontrou-bgcolor to true
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ if ws02-s = 3
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ tmp-accept-bgfgcolor.
+ move zeros to ws02-s
+ write reg-arquivo-saida from reg-arquivo-entrada
+ read arquivo-entrada
+ move reg-arquivo-entrada to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ perform 3 times
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " ACCEPT "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Tem ACCEPT"
+ end-if
+ else
+ if ws88-processo-verboso
+ display "Não tem ACCEPT"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FOREGROUND-COLOR"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o FOREGROUND-COLOR vai remov
+ - "e-lo"
+ end-if
+ set ws88-encontrou-fgcolor to true
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " FOREGROUND-COLOR"
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces to reg-arquivo-entrada(ws02-i:18)
+ ws77-linha-para-parsing(ws02-i:18)
+ add 18 to ws02-i
+ perform varying ws02-j from ws02-i by 1
+ until ws77-linha-para-parsing(ws02-j:1)
+ not equal spaces
+ or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i from ws02-j by 1
+ until ws77-linha-para-parsing(ws02-i:1)
+ equal spaces
+ or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing(ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada(ws02-i:1)
+ end-perform
+ end-if
+ else
+ if ws88-processo-verboso
+ display "Não encontrou FOREGROUND-COLOR"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " BACKGROUND-COLOR "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display " Encontrou o BACKGROUND-COLOR vai re
+ - "move-lo"
+ end-if
+ set ws88-encontrou-bgcolor to true
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i
+ for characters before
+ " BACKGROUND-COLOR "
+ if ws02-i > 0
+ add 1 to ws02-i
+ move spaces to reg-arquivo-entrada(ws02-i:18)
+ ws77-linha-para-parsing(ws02-i:18)
+ add 18 to ws02-i
+ perform varying ws02-j from ws02-i by 1
+ until ws77-linha-para-parsing(ws02-j:1)
+ not equal spaces
+ or ws02-j >= 256
+ continue
+ end-perform
+ perform varying ws02-i from ws02-j by 1
+ until ws77-linha-para-parsing(ws02-i:1)
+ equal spaces
+ or ws02-j >= 256
+ move spaces
+ to ws77-linha-para-parsing(ws02-i:1)
+ move spaces
+ to reg-arquivo-entrada(ws02-i:1)
+ end-perform
+ else
+ if ws88-processo-verboso
+ display "Não encontrou BACKGROUND-COLOR e
+ - "ira gravar o registro"
+ end-if
+ set ws88-accept-terminado to true
+ perform testes-geral
+ end-if
+ else
+ if ws88-processo-verboso
+ display "Não encontrou BACKGROUND-COLOR e nao
+ - "irá gravar o arquivo"
+ end-if
+ set ws88-accept-terminado to true
+ add 1 to ws02-s
+ end-if
+ end-if
+ end-if
+ end-perform
+ if ws88-encontrou-fgcolor or ws88-encontrou-bgcolor
+ set ws88-nao-encontrou-fgcolor to true
+ set ws88-nao-encontrou-bgcolor to true
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ if ws02-s = 3
+ write reg-arquivo-saida from reg-arquivo-entrada
+ end-if
+ .
+ testes-fd.
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters before " FD "
+ add 4 to ws02-i
+ perform varying ws02-l from ws02-i by 1
+ until ws77-linha-para-parsing(ws02-l:1)
+ not equal spaces
+ continue
+ end-perform
+ if ws88-processo-verboso
+ display "Linha...: " ws77-linha-para-parsing
+ display "Indice L: " ws02-l
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " VALUE "
+ if ws02-i > 0
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " VALUE "
+ move ws02-i to ws02-j
+ else
+ move 256 to ws02-j
+ end-if
+ if ws88-processo-verboso
+ display "Indice J: " ws02-j
+ end-if
+ perform varying ws02-m from ws02-j by -1
+ until ws77-linha-para-parsing(ws02-m:1)
+ not equal spaces and "."
+ continue
+ end-perform
+ if ws88-processo-verboso
+ display "Indice M: " ws02-m
+ end-if
+ compute ws02-k = (ws02-m + 1) - ws02-l
+ if ws88-processo-verboso
+ display "Indice K: " ws02-k
+ display "Tamanho count-fd :" ws77-count-fd
+ end-if
+ perform varying ws02-n from 1 by 1
+ until ws02-n > ws77-count-fd
+ if reg-arquivo-entrada(ws02-l:ws02-k)
+ equal ws02-nomefd(ws02-n)
+ if ws88-processo-verboso
+ display "FD igual :" ws02-nomefd(ws02-n)
+ ", indice " ws02-n
+ end-if
+ if ws02-fileidfd(ws02-n) equal "disk" or "DISK" or
+ "printer" or "PRINTER" or "printer." or "PRINTER."
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " VALUE "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou VALUE na mesma linha da
+ - "FD"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " OF "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou OF na mesma linha da
+ - " FD"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FILE-ID"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou FILE-ID ..."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " IS "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou IS ..."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " IS "
+ add 4 to ws02-i
+ perform varying ws02-o
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-o:1)
+ not equal spaces
+ continue
+ end-perform
+ perform varying ws02-p
+ from 256 by -1
+ until ws77-linha-para-parsing
+ (ws02-p:1)
+ not equal spaces
+ continue
+ end-perform
+ move ws02-fileidfd(ws02-n)
+ to ws77-linha-temporaria
+ move zeros to ws02-q
+ inspect ws77-linha-temporaria
+ tallying ws02-q for all "."
+ if ws02-q > 0
+ add 1 to ws02-p
+ compute ws02-r = ws02-o + ws02-p
+ move "."
+ to reg-arquivo-entrada(ws02-r:1)
+ end-if
+ move zeros to ws02-q
+ compute ws02-q = (ws02-p + 1) - ws02-o
+ if ws88-processo-verboso
+ display "file-id: "
+ reg-arquivo-entrada(ws02-o:ws02-q)
+ end-if
+ move reg-arquivo-entrada(ws02-o:ws02-p)
+ to ws02-fileidfd(ws02-n)
+ else
+ if ws88-processo-verboso
+ display "Encontrou FILE-ID ..."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " FILE-ID "
+ add 9 to ws02-i
+ perform varying ws02-o
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-o:1)
+ not equal spaces
+ continue
+ end-perform
+ perform varying ws02-p
+ from 256 by -1
+ until ws77-linha-para-parsing
+ (ws02-p:1)
+ not equal spaces and "."
+ continue
+ end-perform
+ move ws02-fileidfd(ws02-n)
+ to ws77-linha-temporaria
+ move zeros to ws02-q
+ inspect ws77-linha-temporaria
+ tallying ws02-q for all "."
+ if ws02-q > 0
+ add 1 to ws02-p
+ compute ws02-r = ws02-o + ws02-p
+ move "."
+ to reg-arquivo-entrada(ws02-r:1)
+ end-if
+ move zeros to ws02-q
+ compute ws02-q = (ws02-p + 1) - ws02-o
+ if ws88-processo-verboso
+ display "file-id: "
+ reg-arquivo-entrada(ws02-o:ws02-q)
+ end-if
+ move reg-arquivo-entrada(ws02-o:ws02-q)
+ to ws02-fileidfd(ws02-n)
+ end-if
+ end-if
+ end-if
+ else
+ set ws88-token-nao-encontrado to true
+ perform until ws88-token-encontrado
+ read arquivo-entrada
+ move reg-arquivo-entrada
+ to ws77-linha-para-parsing
+ inspect ws77-linha-para-parsing
+ converting ws02-minusculo
+ to ws02-maiusculo
+ if ws88-processo-verboso
+ display "registro: "
+ ws77-linha-para-parsing
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all
+ " DATA "
+ if ws02-i > 0
+ set ws88-token-nao-encontrado to true
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " LABEL "
+ if ws02-i > 0
+ set ws88-token-nao-encontrado
+ to true
+ else
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " VALUE "
+ if ws02-i > 0
+ set ws88-token-encontrado
+ to true
+ else
+ set ws88-token-nao-encontrado
+ to true
+ end-if
+ end-if
+ end-if
+ end-perform
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " VALUE "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou VALUE na outra linha
+ - "."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " OF "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou OF na outra linh
+ - "a"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " FILE-ID"
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou FILE-ID ..."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for all " IS "
+ if ws02-i > 0
+ if ws88-processo-verboso
+ display "Encontrou IS ..."
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " IS "
+ add 4 to ws02-i
+ perform varying ws02-o
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-o:1)
+ not equal spaces
+ continue
+ end-perform
+ perform varying ws02-p
+ from 256 by -1
+ until ws77-linha-para-parsing
+ (ws02-p:1)
+ not equal spaces and "."
+ continue
+ end-perform
+ move ws02-fileidfd(ws02-n)
+ to ws77-linha-temporaria
+ move zeros to ws02-q
+ inspect ws77-linha-temporaria
+ tallying ws02-q for all "."
+ if ws02-q > 0
+ * DANILO(
+ * MOVE ZEROS TO W01-CONT1
+ * INSPECT ws77-linha-temporaria
+ * TALLYING W01-CONT1 FOR ALL '"'
+ * IF W01-CONT1 EQUAL 2 AND
+ * ws02-q NOT EQUAL 2
+ * CONTINUE
+ * ELSE
+ * DANILO)
+ compute ws02-r = ws02-o + ws02-p
+ move "."
+ to reg-arquivo-entrada(ws02-r:1)
+ * END-IF
+ end-if
+ move zeros to ws02-q
+ compute ws02-q = (ws02-p + 1) - ws02-o
+ if ws88-processo-verboso
+ display "file-id: "
+ reg-arquivo-entrada(ws02-o:ws02-q)
+ end-if
+ move reg-arquivo-entrada(ws02-o:ws02-q)
+ to ws02-fileidfd(ws02-n)
+ else
+ if ws88-processo-verboso
+ display "Encontrou FILE-ID"
+ end-if
+ move zeros to ws02-i
+ inspect ws77-linha-para-parsing
+ tallying ws02-i for characters
+ before " FILE-ID "
+ add 9 to ws02-i
+ perform varying ws02-o
+ from ws02-i by 1
+ until ws77-linha-para-parsing
+ (ws02-o:1)
+ not equal spaces
+ continue
+ end-perform
+ perform varying ws02-p
+ from 256 by -1
+ until ws77-linha-para-parsing
+ (ws02-p:1)
+ not equal spaces and "."
+ continue
+ end-perform
+ move ws02-fileidfd(ws02-n)
+ to ws77-linha-temporaria
+ move zeros to ws02-q
+ inspect ws77-linha-temporaria
+ tallying ws02-q for all "."
+ if ws02-q > 0
+ add 1 to ws02-p
+ compute ws02-r = ws02-o + ws02-p
+ move "."
+ to reg-arquivo-entrada(ws02-r:1)
+ end-if
+ move zeros to ws02-q
+ compute ws02-q = (ws02-p + 1) - ws02-o
+ if ws88-processo-verboso
+ display "file-id: "
+ reg-arquivo-entrada(ws02-o:ws02-q)
+ end-if
+ move reg-arquivo-entrada(ws02-o:ws02-q)
+ to ws02-fileidfd(ws02-n)
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ end-if
+ else
+ if ws88-processo-verboso
+ display "FD diferente - tabela :"
+ ws02-nomefd(ws02-n)
+ display "FD diferente - arquivo :"
+ reg-arquivo-entrada(ws02-l:ws02-k)
+ end-if
+ end-if
+ end-perform
+ .
+ TIRA-ESPACO.
+ MOVE ZEROS TO W01-CONT1 W01-CONT2.
+ SET W88-PRIMEIRO TO TRUE.
+ MOVE SPACES TO W01-TEMP2.
+ PERFORM UNTIL W01-CONT1 EQUAL 256
+ ADD 1 TO W01-CONT1
+ IF W88-PRIMEIRO AND W03-OCCURS-TEMP1(W01-CONT1)
+ NOT EQUAL SPACES
+ SET W88-CARACTER TO TRUE
+ END-IF
+ IF W88-ESPACO AND W03-OCCURS-TEMP1(W01-CONT1)
+ NOT EQUAL SPACES
+ SET W88-CARACTER TO TRUE
+ END-IF
+ IF W88-CARACTER AND W03-OCCURS-TEMP1(W01-CONT1)
+ EQUAL SPACES
+ SET W88-ESPACO TO TRUE
+ ADD 1 TO W01-CONT2
+ MOVE " " TO W03-OCCURS-TEMP2(W01-CONT2)
+ END-IF
+ IF NOT W88-ESPACO
+ ADD 1 TO W01-CONT2
+ MOVE W03-OCCURS-TEMP1(W01-CONT1) TO
+ W03-OCCURS-TEMP2(W01-CONT2)
+ END-IF
+ END-PERFORM.
+ copy "globals.pd".
diff --git a/cbl2cob/mfparser.dll b/cbl2cob/mfparser.dll
new file mode 100644
index 0000000..a577eb3
Binary files /dev/null and b/cbl2cob/mfparser.dll differ
diff --git a/cbl2cob/saida.fd b/cbl2cob/saida.fd
new file mode 100644
index 0000000..b1699ed
--- /dev/null
+++ b/cbl2cob/saida.fd
@@ -0,0 +1,4 @@
+ fd arquivo-saida
+ value of file-id is ws77-arquivo-saida.
+ 01 reg-arquivo-saida pic x(256).
+
diff --git a/cbl2cob/saida.sl b/cbl2cob/saida.sl
new file mode 100644
index 0000000..28f088d
--- /dev/null
+++ b/cbl2cob/saida.sl
@@ -0,0 +1,5 @@
+ select arquivo-saida assign to disk
+ organization is line sequential
+ access mode is sequential
+ file status is ws77-file-status.
+
diff --git a/cobpp/AUTHORS b/cobpp/AUTHORS
new file mode 100644
index 0000000..a65c93a
--- /dev/null
+++ b/cobpp/AUTHORS
@@ -0,0 +1,11 @@
+List is in alphabetic order.
+
+Author:
+David Essex
+
+Contributors:
+Bernard Giroud
+Ferran Pegueroles
+Laura Tweedy
+Keisuke Nishida
+Rildo Pragana
diff --git a/cobpp/COPYING b/cobpp/COPYING
new file mode 100644
index 0000000..a43ea21
--- /dev/null
+++ b/cobpp/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C) 19yy
+
+ This program 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 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/cobpp/COPYRIGHT b/cobpp/COPYRIGHT
new file mode 100644
index 0000000..2318502
--- /dev/null
+++ b/cobpp/COPYRIGHT
@@ -0,0 +1,12 @@
+The TinyCOBOL pre-processor will convert from fixed to free-form COBOL format,
+and handle the COPY and REPLACE syntax.
+
+Some of these files, are derived form what was originally part of the Cob2C
+project. They were modified to create the TinyCOBOL pre-processor.
+
+Copyright (C) 1999-2002 David Essex.
+Copyright (C) 1998, 1999 Laura Tweedy.
+
+The htcobolpp program is licensed under the GNU General Public License.
+
+See COPYING for details.
diff --git a/cobpp/Makefile b/cobpp/Makefile
new file mode 100644
index 0000000..1b95e8d
--- /dev/null
+++ b/cobpp/Makefile
@@ -0,0 +1,95 @@
+# Generated automatically from Makefile.in by configure.
+#
+# Makefile.in for cobolpp, the COBOL pre-processor
+#
+
+SHELL=/bin/sh
+
+
+
+prefix=/usr/local
+exec_prefix=${prefix}
+
+#INSTALL=/usr/bin/install -c
+#INSTALL_DATA=${INSTALL} -m 644
+INSTALL=install.exe
+INSTALL_DATA=${INSTALL}
+
+#YACC=yacc193
+YACC=bison
+LEX=flex
+CCX=gcc
+
+EXEEXT=.exe
+
+RM= rm -f
+MKDIR=mkdir -p
+
+#INSTBIN=/usr/local/bin
+#INSTRC=/usr/local/share/htcobol
+INSTBIN=C:/TinyCOBOL
+INSTRC=C:/TinyCOBOL
+
+#
+INCLUDES=-I/usr/local/include -I../lib -I../
+CCXFLAGS=${INCLUDES} -g -Wall
+CCXFLAGS1=${INCLUDES} -g
+#LIBS=-L/usr/lib -lm
+LIBS=-L/usr/local/lib -lgetopt -lm
+LDFLAGS=
+
+MAKEDEPEND=@MAKEDEPEND@
+
+#
+# Rules for compiling .c .l sources
+#
+.SUFFIX: .c .o .y .l
+.c.o:
+ $(CCX) $(CCXFLAGS) -c $<
+
+#
+.y.c:
+ $(YACC) -dv -b parser -p pp_yy $<
+#
+.l.c:
+ $(LEX) -o$@ -Ppp_yy $<
+#
+
+SRCS = parser.tab.c scanner.c cobpp.c
+
+OBJS = $(SRCS:.c=.o)
+
+PROG = htcobolpp.exe
+
+
+all: $(PROG)
+devel: all
+
+
+${PROG}: ${OBJS}
+ $(CCX) -o $@ ${OBJS} $(LDFLAGS) $(LIBS)
+# strip $@
+
+
+scanner.c: scanner.l
+# $(LEX) -o$@ -Ppp_yy $<
+
+parser.tab.c: parser.y scanner.c
+ $(YACC) -dv -b parser -p pp_yy $<
+
+parser.tab.o: parser.tab.c
+ $(CCX) $(CCXFLAGS1) -c parser.tab.c
+
+scanner.o: scanner.c
+ $(CCX) $(CCXFLAGS1) -c scanner.c
+
+clean:
+ @$(RM) $(PROG) $(OBJS) scanner.c \
+ parser.output parser.tab.c parser.tab.h \
+ core
+
+install: $(PROG)
+ $(MKDIR) $(INSTRC)
+ strip $(PROG)
+ ${INSTALL} $(PROG) $(INSTRC)/$(PROG)
+# ${INSTALL_DATA} $(PROG) $(INSTRC)/$(PROG)
diff --git a/cobpp/Makefile.in b/cobpp/Makefile.in
new file mode 100644
index 0000000..1c873b9
--- /dev/null
+++ b/cobpp/Makefile.in
@@ -0,0 +1,84 @@
+#
+# Makefile.in for cobolpp, the COBOL pre-processor
+#
+
+SHELL=/bin/sh
+
+@SET_MAKE@
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+
+INSTALL=@INSTALL@
+INSTALL_DATA=@INSTALL_DATA@
+
+YACC=@YACC@
+LEX=@LEX@
+CCX=@CC@
+
+EXEEXT=@exeext@
+
+RM= rm -f
+
+INSTBIN=@cobbin_default@
+INSTRC=@cobdir_default@
+
+#
+INCLUDES=@INCLUDES@
+CCXFLAGS=${INCLUDES} @CCXFLAGS@ -Wall
+CCXFLAGS1=${INCLUDES} @CCXFLAGS@
+LIBS=@LIBS@
+LDFLAGS=@LDFLAGS@
+MAKEDEPEND=@MAKEDEPEND@
+
+#
+# Rules for compiling .c .l sources
+#
+.SUFFIX: .c .o .y .l
+.c.o:
+ $(CCX) $(CCXFLAGS) -c $<
+
+#
+.y.c:
+ $(YACC) -dv -b parser -p pp_yy $<
+#
+.l.c:
+ $(LEX) -o$@ -Ppp_yy $<
+#
+
+SRCS = parser.tab.c scanner.c cobpp.c
+
+OBJS = $(SRCS:.c=.o)
+
+PROG = htcobolpp@exeext@
+
+
+all: $(PROG)
+devel: all
+
+${PROG}: ${OBJS}
+ $(CCX) -g -o $@ ${OBJS} $(LDFLAGS) $(LIBS)
+# strip $@
+
+
+scanner.c: scanner.l
+# $(LEX) -o$@ -Ppp_yy $<
+
+parser.tab.c: parser.y scanner.c
+ $(YACC) -dv -b parser -p pp_yy $<
+
+parser.tab.o: parser.tab.c
+ $(CCX) $(CCXFLAGS1) -c parser.tab.c
+
+scanner.o: scanner.c
+ $(CCX) $(CCXFLAGS1) -c scanner.c
+
+clean:
+ @$(RM) $(PROG) $(OBJS) scanner.c \
+ parser.output parser.tab.c parser.tab.h \
+ core
+
+install: $(PROG)
+ strip $(PROG)
+ ${INSTALL} -m 755 $(PROG) $(INSTRC)/$(PROG)
+# ${INSTALL_DATA} $(PROG) $(INSTRC)/$(PROG)
diff --git a/cobpp/Makefile.mingw b/cobpp/Makefile.mingw
new file mode 100644
index 0000000..064b72f
--- /dev/null
+++ b/cobpp/Makefile.mingw
@@ -0,0 +1,95 @@
+# Generated automatically from Makefile.in by configure.
+#
+# Makefile.in for cobolpp, the COBOL pre-processor
+#
+
+SHELL=/bin/sh
+
+
+
+prefix=/usr/local
+exec_prefix=${prefix}
+
+#INSTALL=/usr/bin/install -c
+#INSTALL_DATA=${INSTALL} -m 644
+INSTALL=install.exe
+INSTALL_DATA=${INSTALL}
+
+#YACC=yacc193
+YACC=bison
+LEX=flex
+CCX=gcc
+
+EXEEXT=.exe
+
+RM= rm -f
+MKDIR=mkdir -p
+
+#INSTBIN=/usr/local/bin
+#INSTRC=/usr/local/share/htcobol
+INSTBIN=@install_dir@
+INSTRC=@install_dir@
+
+#
+INCLUDES=-I/usr/local/include -I../lib -I../
+CCXFLAGS=${INCLUDES} -g -Wall
+CCXFLAGS1=${INCLUDES} -g
+#LIBS=-L/usr/lib -lm
+LIBS=-L/usr/local/lib -lgetopt -lm
+LDFLAGS=
+
+MAKEDEPEND=@MAKEDEPEND@
+
+#
+# Rules for compiling .c .l sources
+#
+.SUFFIX: .c .o .y .l
+.c.o:
+ $(CCX) $(CCXFLAGS) -c $<
+
+#
+.y.c:
+ $(YACC) -dv -b parser -p pp_yy $<
+#
+.l.c:
+ $(LEX) -o$@ -Ppp_yy $<
+#
+
+SRCS = parser.tab.c scanner.c cobpp.c
+
+OBJS = $(SRCS:.c=.o)
+
+PROG = htcobolpp.exe
+
+
+all: $(PROG)
+devel: all
+
+
+${PROG}: ${OBJS}
+ $(CCX) -o $@ ${OBJS} $(LDFLAGS) $(LIBS)
+# strip $@
+
+
+scanner.c: scanner.l
+# $(LEX) -o$@ -Ppp_yy $<
+
+parser.tab.c: parser.y scanner.c
+ $(YACC) -dv -b parser -p pp_yy $<
+
+parser.tab.o: parser.tab.c
+ $(CCX) $(CCXFLAGS1) -c parser.tab.c
+
+scanner.o: scanner.c
+ $(CCX) $(CCXFLAGS1) -c scanner.c
+
+clean:
+ @$(RM) $(PROG) $(OBJS) scanner.c \
+ parser.output parser.tab.c parser.tab.h \
+ core
+
+install: $(PROG)
+ $(MKDIR) $(INSTRC)
+ strip $(PROG)
+ ${INSTALL} $(PROG) $(INSTRC)/$(PROG)
+# ${INSTALL_DATA} $(PROG) $(INSTRC)/$(PROG)
diff --git a/cobpp/Readme.txt b/cobpp/Readme.txt
new file mode 100644
index 0000000..5afc3d2
--- /dev/null
+++ b/cobpp/Readme.txt
@@ -0,0 +1,107 @@
+The TinyCOBOL pre-processor has been merged into the main compiler.
+The pre-processor scanner and parser step will still be executed, but run
+in the same process as the main compiler.
+
+Consequently the source in the 'cobpp' directory sources are obsolete, and
+will be removed at a later date.
+
+See the 'compiler' directory for the new pre-processor sources.
+
+-------------------------------------------------------------------------------
+
+What the TinyCOBOL pre-processor does.
+- convert from fixed to free-form COBOL format.
+- Process the COPY command.
+- Process the REPLACE command (not functional in current version).
+
+Usage:
+htcobolpp [-o ]
+where are:
+ -h Help (display this listing)
+ -V Display version and exit
+ -v Verbose mode
+ -d Turn on debugging mode
+ -t Expand tabs to space(s)
+ -o Output file name (default: standard output)
+ -p Listing file name
+ -x Input source is in X/Open free format
+ -f Input source is in standard fixed column format
+ -I Copybooks search directories
+
+Note that the -t command option will expand tabs found in main programs and copybooks.
+If this option is not used, any tabs in programs and/or copybooks will cause an error.
+
+The 'expand' program can be used to permanently remove these tabs as the following
+example illustrates.
+expand -t 8 program-name > new-program-name
+
+-------------------------------------------------------------------------------
+
+Copy statement usage.
+
+COPY { Text-CopyName | Literal }
+ [ {IN|OFF} { Text-LibName | Literal } ]
+ [ REPLACING
+ ( { Text | Literal | Pseudo-Text } BY { Text | Literal | Pseudo-Text } ) ...
+ ]
+Where:
+[ ] = optional
+{ | } = OR
+... = repeat
+
+Example:
+COPY 'TEST02.cpy' IN TEST-LIB REPLACING
+ W01-COMPUTE-0 BY W01-COMPUTE-00
+ 'W01-1XXX' BY 'W01-2'
+ ==9(5)== BY ==9(04)== .
+
+-------------------------------------------------------------------------------
+
+Copybook search sequences.
+
+The locations of copybooks can be given in the following ways.
+- Using the -I path(s) command line directives.
+- Using the library name.
+- Using an relative or absolute path in the copybook name.
+
+This results in an complex search sequence which is resolved as follows.
+- If there is an absolute path in the copybook name (i.e. '/usr/share/tc/a.cpy'), then
+ command line and library name paths are ignored.
+- If the library name is given then command line paths are ignored.
+ When the library name is given as a literal, the literal is used a the search paths.
+ When the library name is given as a text name, the name is used to lookup the
+ environment variable and if found the result is used a the search paths.
+ The paths are then concatenated with the copybook name and searched.
+- If only the copybook name is given, then the include command line directives are
+ the search paths.
+ When the copybook name is given as a literal, the literal is used.
+ When the copybook name is given as a text name, suffixes are added to the name.
+ The default suffixes are ".cpy:.CPY:.cob:.COB:.cbl:.CBL::". The last entry indicates no suffix.
+ The paths are then concatenated with the copybook name and suffixes and then searched.
+
+
+Notes on valid copybook and library names.
+- Valid copybook names are a valid COBOL words (text) or literals.
+ Thus t1.cpy is not and 't1.cpy' is valid.
+- Valid library names are a valid COBOL words (text) or literals.
+ Library name is given as a text and containing '-' are converted to '_' since
+ valid environment variables names can not contain the character '-'.
+
+Examples:
+- The following are equivalent.
+ COPY 't1.cpy' IN TEST-LIB.
+ COPY 't1.cpy'. - with the -I $TEST_LIB command line option.
+- The text name suffix search sequence.
+ COPY TT1. - will search for TT1.cpy, TT1.CPY, TT1.cob, TT1.COB, TT1.cbl, TT1.CBL, TT1 files.
+
+-------------------------------------------------------------------------------
+
+Integration with the main compiler.
+- The new pre-processor will be executed by default.
+ To ensure backward compatibility, the original PP has not been removed from
+ the main compiler.
+ Further integration will be done once the pre-processor is deemed to be stable.
+- The main compiler does require that the full path of the pre-processor be known.
+ This is problematic as the test and install directories are different. To circumvent
+ this problem the -t command line option as been added so that the main compiler will
+ seek the PP in the cobpp directory.
diff --git a/cobpp/cobpp.c b/cobpp/cobpp.c
new file mode 100644
index 0000000..60cf06d
--- /dev/null
+++ b/cobpp/cobpp.c
@@ -0,0 +1,930 @@
+/*
+ Copyright (C) 1999-2004 David Essex, Rildo Pragana
+
+ This program 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 2, or (at your option)
+ any later version.
+
+ This program 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 this software; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307 USA
+
+ TinyCOBOL Pre-Processor program used as a front end to the main compiler.
+
+*/
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#include "cobpp.h"
+#include "htconfig.h"
+#include "tcppversion.h"
+#include "tcpphelp.h"
+#include "mwindows.h"
+
+
+extern FILE *pp_yyin;
+extern FILE *pp_yyout;
+FILE *yylist;
+
+extern int pp_yyparse(void);
+extern char *filename;
+
+char HTG_COPYDIR[PATHMAX3 + 2] = "";
+char HTG_FNAME_SUFFIX[PATHMAX1] = "";
+char fpath[PATHMAX3 + 2] = "";
+char fsuffix[PATHMAX] = "";
+
+char *prg_name;
+
+/* #define DEBUG_COBPP_PP 1 */
+
+#ifdef DEBUG_COBPP_PP
+
+char errppbuf[1024*8];
+
+void debug_pp_rtn (const char *s1, const char *s2, const char *s3, int w1, int cw);
+
+#define DEBUG_PPRTN_STR1(msg1) debug_pp_rtn (msg1, NULL, NULL, 0, 1);
+#define DEBUG_PPRTN_STR3(msg1, msg2) debug_pp_rtn (msg1, msg2, NULL, 0, 3);
+#define DEBUG_PPRTN_STR7(msg1, i1) debug_pp_rtn (msg1, NULL, NULL, i1, 7);
+#define DEBUG_PPRTN_STR15(msg1, msg2, msg3) debug_pp_rtn (msg1, msg2, msg3, 0, 15);
+#define DEBUG_PPRTN_STR21(msg1, msg2, i1) debug_pp_rtn (msg1, msg2, NULL, i1, 21);
+#define DEBUG_PPRTN_STR105(msg1, msg2, msg3, i1) debug_pp_rtn (msg1, msg2, msg3, i1, 105);
+
+#else
+
+#define DEBUG_PPRTN_STR1(msg1)
+#define DEBUG_PPRTN_STR3(msg1, msg2)
+#define DEBUG_PPRTN_STR7(msg1, i1)
+#define DEBUG_PPRTN_STR15(msg1, msg2, msg3)
+#define DEBUG_PPRTN_STR21(msg1, msg2, i1)
+#define DEBUG_PPRTN_STR105(msg1, msg2, msg3, i1)
+
+#endif
+
+/* Global Env struct due to yywrap, yylex */
+
+int main( int argc , char** argv ) {
+
+ int rc = 0;
+
+ prg_name = argv[0];
+
+ globalEnvPtr = &globalEnv;
+
+ setDefaults();
+
+ /* error, or help/version printed */
+ rc = setOptions(&globalEnv, argc, argv);
+ if (rc != 0) {
+ if ((rc > 0) && (rc < 100)) {
+ printHelp();
+ CleanUp();
+ }
+ return rc;
+ }
+
+ /* If everything is OK parse file */
+
+ filename = strdup (globalEnv.ifname);
+ pp_yyin = fopen(globalEnv.ifname, "r");
+ if ( pp_yyin == NULL ) {
+ fprintf(stderr, "Error opening input file: %s\n", globalEnv.ifname);
+ rc = 3;
+ return rc;
+ }
+
+ if (globalEnv.ofname != NULL) {
+ pp_yyout = fopen(globalEnv.ofname, "w");
+ if ( pp_yyout == NULL ) {
+ fprintf(stderr,
+ "Error opening output file: %s\n"
+ ,globalEnv.ofname
+ );
+ fclose(pp_yyin);
+ rc = 9;
+ return rc;
+ }
+ }
+ else {
+ pp_yyout = stdout;
+ }
+
+ if (globalEnv.lfname != NULL) {
+ yylist = fopen(globalEnv.lfname, "w");
+ if ( yylist == NULL ) {
+ fprintf(stderr,
+ "Error opening listing file: %s\n"
+ ,globalEnv.lfname
+ );
+ fclose(pp_yyin);
+ if ( pp_yyout != stdout ) {
+ fclose(pp_yyout);
+ }
+ rc = 11;
+ return rc;
+ }
+ }
+
+ setup_scanner_state();
+/* pp_yylex(); */
+/* rc = pp_yyparse(); */
+ (void) pp_yyparse();
+
+ rc = globalEnv.errFlag;
+
+ DEBUG_PPRTN_STR7("Program return code=%d\n", rc)
+
+ return rc;
+}
+
+
+/*
+ * Initalize the Env struct passed to this function
+ */
+void setDefaults(void) {
+
+ Env *gEnv = globalEnvPtr;
+
+ gEnv->codeFormat = -1; /* 1 is free , 0 is fixed */
+
+ gEnv->debugFlag = 0; /* debug flag */
+
+ gEnv->IncDebugLines = 0;
+ gEnv->verboseFlag = 0; /* set verbose flag off */
+ gEnv->errFlag = 0; /* no error state by default */
+ gEnv->tab2space = 0; /* expand tabs to 0 spaces */
+ gEnv->progName = NULL;
+ gEnv->ofname = NULL;
+ gEnv->ifname = NULL;
+ gEnv->lfname = NULL;
+
+}
+
+/*
+ * Function to clean up memory allocated in program.
+ *
+ */
+void CleanUp(void) {
+
+ Env *gEnv = globalEnvPtr;
+
+ globalEnvPtr = NULL;
+ if (gEnv->progName != NULL)
+ free(gEnv->progName);
+
+ if (gEnv->ifname != NULL)
+ free(gEnv->ifname);
+
+ if (gEnv->ofname != NULL)
+ free(gEnv->ofname);
+
+ if (gEnv->lfname != NULL)
+ free(gEnv->lfname);
+
+}
+
+/*
+ * Read in command line options and set up the Env struct passed in
+ * Alloc memory for program name string in Env struct.
+ *
+ */
+int setOptions(Env* gEnv, int argc, char** argv) {
+
+ /* Read in args for option settings. */
+
+ int r = 0, len, sw, i;
+ char tbuf[PATHMAX1] = "";
+
+
+ len = strlen(argv[0]);
+ gEnv->progName = malloc(len + 1);
+ if (gEnv->progName == NULL) {
+ gEnv->errFlag++;
+ r = 2;
+ return r;
+ }
+ strncpy(gEnv->progName, argv[0], len);
+
+ /*
+ * Check argc for number of args
+ */
+/* if (( argc < 2 ) || (argc > 5 )){ */
+ if ( argc < 2 ){
+ /* printHelp(); */
+ gEnv->errFlag++;
+ r = 1;
+ return r;
+ }
+
+/* opterr = 0; */
+ while ((sw = getopt(argc, argv, option_list)) != EOF) {
+
+ switch (sw) {
+
+ /* Include debug lines from sources */
+ case TCOBPP_CMDOPT_INC_DEBUG:
+ gEnv->IncDebugLines = 1;
+ break;
+
+ /* Not currently used */
+ case TCOBPP_CMDOPT_DEBUG:
+ gEnv->debugFlag = 1;
+ break;
+
+ /* Set input file format to FIXED */
+ case TCOBPP_CMDOPT_FRM_FIXED:
+ if (gEnv->ifname != NULL) {
+ fprintf(stderr, "error: duplicate input file name '%s' ... aborting\n", optarg);
+ gEnv->errFlag++;
+ r = 20;
+ return r;
+ }
+ len = strlen(optarg);
+/* fprintf(stderr, "cobpp debug: optarg=%s: len=%d\n", optarg, len); */
+ gEnv->ifname = (char*)malloc(len + 2);
+ if (gEnv->ifname == NULL) {
+ gEnv->errFlag++;
+ r = 21;
+ return r;
+ }
+ strncpy(gEnv->ifname, optarg, len+1);
+/* fprintf(stderr, "cobpp debug: input file name :%s:, len=%d\n", gEnv->ifname, len); */
+ gEnv->codeFormat = 0; /* 1 is free, 0 is fixed */
+ break;
+
+ /* Add path to copybooks search path */
+ case TCOBPP_CMDOPT_INC_PATH:
+ append_include_path(optarg);
+ break;
+
+ /* Set output file name */
+ case TCOBPP_CMDOPT_OUTFILE:
+ if (gEnv->ofname != NULL) {
+ fprintf(stderr, "error: duplicate output file name '%s' ... aborting\n", optarg);
+ gEnv->errFlag++;
+ r = 40;
+ return r;
+ }
+ len = strlen(optarg);
+ gEnv->ofname = (char*)malloc(len + 2);
+ if (gEnv->ofname == NULL) {
+ gEnv->errFlag++;
+ r = 41;
+ return r;
+ }
+ strncpy(gEnv->ofname, optarg, len+1);
+/* fprintf(stderr, "cobpp debug: output file name '%s', len=%d\n", gEnv->ofname, len); */
+ break;
+
+ /* Set output listinf file name */
+ case TCOBPP_CMDOPT_LIST:
+ if (gEnv->lfname != NULL) {
+ fprintf(stderr, "error: duplicate listing file name '%s' ... aborting\n", optarg);
+ gEnv->errFlag++;
+ r = 50;
+ return r;
+ }
+ len = strlen(optarg);
+ gEnv->lfname = (char*)malloc(len + 2);
+ if (gEnv->lfname == NULL) {
+ gEnv->errFlag++;
+ r = 51;
+ return r;
+ }
+ strncpy(gEnv->lfname, optarg, len+1);
+/* fprintf(stderr, "cobpp debug: print file name '%s', len=%d\n", gEnv->lfname, len); */
+ break;
+
+ /* Set tab to space conversion length */
+ case TCOBPP_CMDOPT_TAB_LEN:
+ if (gEnv->tab2space != 0) {
+ fprintf(stderr, "error: duplicate tabs2space argument '%s' specified ... aborting\n", optarg);
+ gEnv->errFlag++;
+ r = 60;
+ return r;
+ }
+ strcpy(tbuf, optarg);
+/* len = strlen(optarg); */
+ len = strlen(tbuf);
+ for (i=0; ierrFlag++;
+ r = 61;
+ return r;
+ }
+ }
+/* sscanf(optarg, "%d", &gEnv->tab2space); */
+ sscanf(tbuf, "%d", &gEnv->tab2space);
+ if ((gEnv->tab2space < 1) || (gEnv->tab2space > 99)) {
+ fprintf(stderr, "error: invalid tabs2space argument '%s' specified, max=99 min=1 ... aborting\n", optarg);
+ gEnv->errFlag++;
+ r = 62;
+ return r;
+ }
+/*
+ fprintf(stderr, "cobpp debug: input tab string :%s:, gEnv->tab2space=%d\n", optarg, gEnv->tab2space);
+ fprintf(stderr, "cobpp debug: input tab string :%s:, gEnv->tab2space=%d\n", tbuf, gEnv->tab2space);
+*/
+ break;
+
+ /* Set input file format to FREE */
+ case TCOBPP_CMDOPT_FRM_FREE:
+ if (gEnv->ifname != NULL) {
+ fprintf(stderr, "error: duplicate input file name '%s' ... aborting\n", optarg);
+ gEnv->errFlag++;
+ r = 70;
+ return r;
+ }
+ len = strlen(optarg);
+/* fprintf(stderr, "cobpp debug: optarg=%s: len=%d\n", optarg, len); */
+ gEnv->ifname = (char*)malloc(len + 2);
+/* gEnv->ifname = malloc(len + 2); */
+ if (gEnv->ifname == NULL) {
+ gEnv->errFlag++;
+ r = 71;
+ return r;
+ }
+ strncpy(gEnv->ifname, optarg, len+1);
+/* strcpy(gEnv->ifname, optarg); */
+/* fprintf(stderr, "cobpp debug: input file name=%s:, len=%d\n", gEnv->ifname, len); */
+ gEnv->codeFormat = 1; /* 1 is free, 0 is fixed */
+ break;
+
+ /* Display version number */
+ case TCOBPP_CMDOPT_VERSION:
+ printVersion();
+ r = 197;
+ break;
+
+ /* Set verbose option on */
+ case TCOBPP_CMDOPT_VERBOSE:
+ gEnv->verboseFlag = 1;
+ break;
+
+ /* Display command line help */
+ case TCOBPP_CMDOPT_HELP1:
+ case TCOBPP_CMDOPT_HELP:
+ default:
+ r = 5;
+/* printHelp(); */
+ break;
+
+ }
+ }
+
+ if (r == 0) {
+ if (gEnv->ifname == NULL) {
+ fprintf(stderr, "error: no input file name selected ... aborting\n");
+ gEnv->errFlag++;
+ r = 80;
+ }
+ }
+
+ /* If tabs not set default to 8 spaces */
+ if (gEnv->tab2space == 0)
+ gEnv->tab2space = 8;
+
+ return r;
+
+}
+
+
+/*
+ Print out extended help
+*/
+void printHelp(void){
+
+/* fprintf (stdout, */
+ fprintf (stderr,
+ "Usage: %s %s%s",
+ globalEnvPtr->progName,
+ usage_list0,
+ usage_list1
+ );
+}
+
+/*
+ * Print pre-processor version and copyright
+*/
+void printVersion(void) {
+
+ fprintf(stdout, "%s - %s\n%s\n",
+ TCOBPP_TITLE,
+ TCOBPP_PGM_VERSION,
+ TCOBPP_COPYWR
+ );
+}
+
+int find_copybook_file (char *fname, char *lname)
+{
+ int r = 1, len, sw = 0;
+ char *pt,
+ tpath[PATHMAX1],
+ fname1[PATHMAX],
+ lname1[PATHMAX1];
+
+ if (lname == NULL) {
+ if ((*fname == CHR_SQUOTE) || (*fname == CHR_DQUOTE)) {
+ sw = STATE_FLIT_LNONE;
+ strcpy(fname1, fname+1);
+ len = strlen(fname1);
+ fname1[len - 1] = CHR_EOS;
+ r = find_filename_literal(fname1, HTG_COPYDIR);
+
+ }
+ else {
+ sw = STATE_FNAME_LNONE;
+ strcpy(fname1, fname);
+ strcpy(HTG_FNAME_SUFFIX, STR_SEARCH_SUFFIXES);
+ r = find_filename_text(fname1, HTG_COPYDIR, HTG_FNAME_SUFFIX);
+ }
+ }
+ else {
+ if ((*lname == CHR_SQUOTE) || (*lname == CHR_DQUOTE)) {
+ strcpy(lname1, lname+1);
+ len = strlen(lname1);
+ lname1[len - 1] = CHR_EOS;
+ strcpy(tpath, lname1);
+ len = strlen(tpath);
+ if (len > 0) {
+ if (tpath[len - 1] != CHR_COLEN) {
+ strcat(tpath, STR_COLEN);
+ }
+ }
+ if ((*fname == CHR_SQUOTE) || (*fname == CHR_DQUOTE)) {
+ sw = STATE_FLIT_LLIT;
+ strcpy(fname1, fname+1);
+ len = strlen(fname1);
+ fname1[len - 1] = CHR_EOS;
+ r = find_filename_literal(fname1, tpath);
+ }
+ else {
+ sw = STATE_FNAME_LLIT;
+ strcpy(fname1, fname);
+ strcpy(HTG_FNAME_SUFFIX, STR_SEARCH_SUFFIXES);
+ r = find_filename_text(fname1, tpath, HTG_FNAME_SUFFIX);
+ }
+ }
+ else {
+ if ((*fname == CHR_SQUOTE) || (*fname == CHR_DQUOTE)) {
+ sw = STATE_FLIT_LNAME;
+ strcpy(fname1, fname+1);
+ len = strlen(fname1);
+ fname1[len - 1] = CHR_EOS;
+ strcpy(lname1, lname);
+ pt = find_env_variable(lname1);
+ if (pt != NULL) {
+ strcpy(tpath, pt);
+ }
+ else {
+ strcpy(tpath, "");
+ }
+ len = strlen(tpath);
+ if (len > 0) {
+ if (tpath[len - 1] != CHR_COLEN) {
+ strcat(tpath, STR_COLEN);
+ }
+ }
+ r = find_filename_literal(fname1, tpath);
+ }
+ else {
+ sw = STATE_FNAME_LNAME;
+ strcpy(fname1, fname);
+ strcpy(lname1, lname);
+ strcpy(HTG_FNAME_SUFFIX, STR_SEARCH_SUFFIXES);
+ pt = find_env_variable(lname1);
+ if (pt != NULL) {
+ strcpy(tpath, pt);
+ }
+ else {
+ strcpy(tpath, "");
+ }
+ len = strlen(tpath);
+ if (len > 0) {
+ if (tpath[len - 1] != CHR_COLEN) {
+ strcat(tpath, STR_COLEN);
+ }
+ }
+ r = find_filename_text(fname1, tpath, HTG_FNAME_SUFFIX);
+ }
+ }
+ }
+
+ return r;
+}
+
+int find_filename_literal (char *fname, char *fp)
+{
+ int r = 1, len, sw1=0;
+ char *pt1;
+ struct stat sbuf;
+
+ strcpy(fpath, fp);
+
+ len = strlen(fpath);
+ if (len == 0) {
+ sprintf(include_full_filename, "%s", fname);
+ if (stat(include_full_filename, &sbuf) == 0) {
+ if (S_ISREG(sbuf.st_mode) &&
+ ((S_IRUSR & sbuf.st_mode) || (S_IRGRP & sbuf.st_mode) || (S_IROTH & sbuf.st_mode))) {
+ r = 0;
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("found copybook name \'%s\'\n", include_full_filename);
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not readable\n", include_full_filename);
+ }
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not found\n", include_full_filename);
+ }
+ }
+ }
+ else {
+ // If filename is an absolute path ignore library path
+ if (*fname == CHR_SLASH) {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("warning: ignoring other search path(s) in absolute path copybook name \'%s\'\n", fname);
+ }
+ sprintf(include_full_filename, "%s", fname);
+ if (stat(include_full_filename, &sbuf) == 0) {
+ if (S_ISREG(sbuf.st_mode) &&
+ ((S_IRUSR & sbuf.st_mode) || (S_IRGRP & sbuf.st_mode) || (S_IROTH & sbuf.st_mode))) {
+ r = 0;
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("found copybook name \'%s\'\n", include_full_filename);
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not readable\n", include_full_filename);
+ }
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not found\n", include_full_filename);
+ }
+ }
+ }
+ else {
+ sw1 = 0;
+ strcpy(fpath, fp);
+ pt1 = find_token(fpath, STR_COLEN, 0);
+ if (pt1 == NULL) {
+ pt1 = fpath;
+ }
+ while (sw1 == 0) {
+ sprintf(include_full_filename, "%s", pt1);
+ if (stat(include_full_filename, &sbuf) == 0) {
+ if (S_ISDIR(sbuf.st_mode) &&
+ ((S_IRUSR & sbuf.st_mode) || (S_IRGRP & sbuf.st_mode) || (S_IROTH & sbuf.st_mode))) {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("searching directory path \'%s\'\n", include_full_filename);
+ }
+ sprintf(include_full_filename, "%s/%s", pt1, fname);
+ if (stat(include_full_filename, &sbuf) == 0) {
+ if (S_ISREG(sbuf.st_mode) &&
+ ((S_IRUSR & sbuf.st_mode) || (S_IRGRP & sbuf.st_mode) || (S_IROTH & sbuf.st_mode))) {
+ r = 0;
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("found copybook name \'%s\'\n", include_full_filename);
+ }
+ sw1 = 1;
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not readable\n", include_full_filename);
+ }
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not found\n", include_full_filename);
+ }
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("directory path \'%s\' not readable\n", include_full_filename);
+ }
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("directory path \'%s\' not found\n", include_full_filename);
+ }
+ }
+ pt1 = find_token(pt1, STR_COLEN, 1);
+ if (pt1 == NULL) {
+ sw1 = 1;
+ }
+ }
+ }
+ }
+
+ return r;
+}
+
+int find_filename_text (char *fname, char *fp, char *fs)
+{
+ int r = 1, len, sw1, sw2;
+ char *pt1, *pt2;
+ struct stat sbuf;
+
+ strcpy(fpath, fp);
+ strcpy(fsuffix, fs);
+
+ len = strlen(fpath);
+ if (len == 0) {
+ sw1 = 0;
+ pt1 = find_token(fsuffix, STR_COLEN, 0);
+ if (pt1 == NULL) {
+ pt1 = fsuffix;
+ }
+ while (sw1 == 0) {
+ sprintf(include_full_filename, "%s%s", fname, pt1);
+ if (stat(include_full_filename, &sbuf) == 0) {
+ if (S_ISREG(sbuf.st_mode) &&
+ ((S_IRUSR & sbuf.st_mode) || (S_IRGRP & sbuf.st_mode) || (S_IROTH & sbuf.st_mode))) {
+ r = 0;
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("found copybook name \'%s\'\n", include_full_filename);
+ }
+ sw1 = 1;
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not readable\n", include_full_filename);
+ }
+ }
+ sw1 = 1;
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not found\n", include_full_filename);
+ }
+ }
+ pt1 = find_token(pt1, STR_COLEN, 1);
+ if (pt1 == NULL) {
+ sw1 = 1;
+ }
+ }
+ }
+ else {
+ sw1 = 0;
+ sw2 = 0;
+ strcpy(fpath, fp);
+ strcpy(fsuffix, fs);
+ pt1 = find_token(fpath, STR_COLEN, 0);
+ if (pt1 == NULL) {
+ pt1 = fpath;
+ }
+ while (sw1 == 0) {
+ sprintf(include_full_filename, "%s", pt1);
+ if (stat(include_full_filename, &sbuf) == 0) {
+ if (S_ISDIR(sbuf.st_mode) &&
+ ((S_IRUSR & sbuf.st_mode) || (S_IRGRP & sbuf.st_mode) || (S_IROTH & sbuf.st_mode))) {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("searching directory path \'%s\'\n", include_full_filename);
+ }
+ strcpy(fsuffix, fs);
+ sw2 = 0;
+ pt2 = find_token(fsuffix, STR_COLEN, 0);
+ while (sw2 == 0) {
+ sprintf(include_full_filename, "%s/%s%s", pt1, fname, pt2);
+ if (stat(include_full_filename, &sbuf) == 0) {
+ if (S_ISREG(sbuf.st_mode) &&
+ ((S_IRUSR & sbuf.st_mode) || (S_IRGRP & sbuf.st_mode) || (S_IROTH & sbuf.st_mode))) {
+ r = 0;
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("found copybook name \'%s\'\n", include_full_filename);
+ }
+ sw1 = 1;
+ sw2 = 1;
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not readable\n", include_full_filename);
+ }
+ }
+ sw2 = 1;
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("copybook file \'%s\' not found\n", include_full_filename);
+ }
+ }
+ pt2 = find_token(pt2, STR_COLEN, 1);
+ if (pt2 == NULL) {
+ sw2 = 1;
+ }
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("directory path \'%s\' not readable\n", include_full_filename);
+ }
+ }
+ }
+ else {
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("directory path \'%s\' not found\n", include_full_filename);
+ }
+ }
+ pt1 = find_token(pt1, STR_COLEN, 1);
+ if (pt1 == NULL) {
+ sw1 = 1;
+ }
+ }
+ }
+
+ return r;
+}
+
+char *find_env_variable (char *ev)
+{
+ char *pt, ev1[PATHMAX];
+ int i, len;
+
+ len = strlen(ev);
+ for (i=0; iverboseFlag == 1) {
+ printf("envoromental variable \'%s\' found, setting search path(s) to \'%s\'\n", ev1, pt);
+ }
+ return pt;
+ }
+
+ if (globalEnvPtr->verboseFlag == 1) {
+ printf("warning: envoromental variable \'%s\' not found\n", ev1);
+ }
+
+ return NULL;
+}
+
+char *find_token(char *p, const char *d, int sw)
+{
+ int i, len;
+
+ DEBUG_PPRTN_STR105("find_token trace(1): p=%s; d=%s, sw=%d\n", p, d, sw)
+
+ if (sw == 0) {
+
+ len = strlen(p);
+ *(p+len+1) = CHR_EOS;
+ for (i=0; iverboseFlag == 1) {
+ fprintf (stdout, "Appending '%s' to include (copybooks) search path\n", ap);
+ }
+
+ if (rc != 0) {
+ fprintf (stderr, "%s: *** Buffer overflow error while appending '%s' to include (copybooks) search path. Abort.\n", prg_name, ap);
+ exit(rc);
+ }
+
+}
+
+#ifdef DEBUG_COBPP_PP
+
+void debug_pp_rtn (const char *s1, const char *s2, const char *s3, int w1, int cw)
+{
+ switch (cw)
+ {
+ case 3:
+ sprintf(errppbuf, s1, s2);
+ break;
+
+ case 5:
+ sprintf(errppbuf, s1, s3);
+ break;
+
+ case 7:
+ sprintf(errppbuf, s1, w1);
+ break;
+
+ case 15:
+ sprintf(errppbuf, s1, s2, s3);
+ break;
+
+ case 21:
+ sprintf(errppbuf, s1, s2, w1);
+ break;
+
+ case 35:
+ sprintf(errppbuf, s1, s3, w1);
+ break;
+
+ case 105:
+ sprintf(errppbuf, s1, s2, s3, w1);
+ break;
+
+ default:
+ sprintf(errppbuf, "%s", s1);
+ break;
+ }
+
+ fprintf(stderr, "%s", errppbuf);
+}
+
+#endif
diff --git a/cobpp/cobpp.h b/cobpp/cobpp.h
new file mode 100644
index 0000000..2bb0787
--- /dev/null
+++ b/cobpp/cobpp.h
@@ -0,0 +1,137 @@
+/*
+ Copyright (C) 1999-2004 David Essex, Rildo Pragana
+
+ This program 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 2, or (at your option)
+ any later version.
+
+ This program 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 this software; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307 USA
+
+*/
+
+
+#ifndef _COBPP_H
+#define _COBPP_H
+
+#include
+#include
+
+#define PATHMAX 120
+#define PATHMAX1 1024
+#define PATHMAX2 256
+#define PATHMAX3 (1024 * 4)
+#define CHR_SQUOTE '\''
+#define CHR_DQUOTE '"'
+#define CHR_EOS '\0'
+#define CHR_ASTERIX '*'
+#define CHR_CR '\r'
+#define CHR_LF '\n'
+#define STR_DASH '-'
+#define STR_UNDERSCORE '_'
+#define CHR_SLASH '/'
+
+//#define DEBUG_COBPP 1
+#ifdef DEBUG_COBPP
+#define DEBUG_COBPP_PP 1
+#define DEBUG_COBPP_SCANNER 1
+#define DEBUG_COBPP_PARSER 1
+#endif
+
+#ifndef __MINGW32__
+#define STR_SEARCH_SUFFIXES ".cpy:.CPY:.cob:.COB:.cbl:.CBL::"
+#define CHR_COLEN ':'
+#define STR_COLEN ":"
+#else
+#define STR_SEARCH_SUFFIXES ".cpy;.CPY;.cob;.COB;.cbl;.CBL;;"
+#define CHR_COLEN ';'
+#define STR_COLEN ";"
+#endif
+
+#define FORMAT_FIXED 0
+#define FORMAT_FREE 1
+
+#define STATE_FLIT_LNONE 1
+#define STATE_FNAME_LNONE 2
+#define STATE_FLIT_LLIT 3
+#define STATE_FLIT_LNAME 4
+#define STATE_FNAME_LLIT 5
+#define STATE_FNAME_LNAME 6
+
+#define TCOBPP_CMDOPTION_LIST "f:x:o:p:t:I:vV?hdg"
+#define TCOBPP_CMDOPT_FRM_FIXED 'f'
+#define TCOBPP_CMDOPT_FRM_FREE 'x'
+#define TCOBPP_CMDOPT_OUTFILE 'o'
+#define TCOBPP_CMDOPT_LIST 'p'
+#define TCOBPP_CMDOPT_TAB_LEN 't'
+#define TCOBPP_CMDOPT_INC_PATH 'I'
+#define TCOBPP_CMDOPT_VERBOSE 'v'
+#define TCOBPP_CMDOPT_VERSION 'V'
+#define TCOBPP_CMDOPT_HELP1 '?'
+#define TCOBPP_CMDOPT_HELP 'h'
+#define TCOBPP_CMDOPT_INC_DEBUG 'd'
+#define TCOBPP_CMDOPT_DEBUG 'g'
+
+#define TCOBPP_TITLE "TinyCOBOL pre-processor"
+#define TCOBPP_COPYWR "Copyright (C) 1999-2002 David Essex"
+
+extern char HTG_COPYDIR[];
+
+typedef short bool;
+
+struct s_Env {
+ bool codeFormat; /* 1 is free , 0 is fixed */
+ int debugFlag;
+ int IncDebugLines;
+ int errFlag;
+ int verboseFlag;
+ int tab2space;
+ char *progName;
+ char *ifname;
+ char *ofname;
+ char *lfname;
+};
+
+typedef struct s_Env Env;
+
+Env globalEnv;
+Env *globalEnvPtr;
+
+/* command line options */
+static char option_list[] = { TCOBPP_CMDOPTION_LIST };
+
+/* parser.tab.c */
+void yyerror(char *s);
+int yyparse(void);
+
+/* scanner.c */
+int yylex(void);
+int yywrap(void);
+void yyrestart(FILE *input_file);
+int lex_fgets(char *buf, int maxsize);
+
+extern void setup_scanner_state();
+extern char include_full_filename[];
+int find_copybook_file(char *fname, char *lname);
+int find_copybook_file2 (char *fname, char *lname);
+int find_filename_text (char *fname, char *fp, char *fs);
+int find_filename_literal (char *fname, char *fp);
+char *find_env_variable (char *ev);
+char *find_token(char *p, const char *d, int sw);
+void append_include_path(char *ap);
+
+int setOptions(Env*, int, char**);
+void setDefaults(void);
+void printVersion(void);
+void printHelp(void);
+void CleanUp(void);
+
+#endif
diff --git a/cobpp/copybooks/TEST02.cpy b/cobpp/copybooks/TEST02.cpy
new file mode 100644
index 0000000..f24e661
--- /dev/null
+++ b/cobpp/copybooks/TEST02.cpy
@@ -0,0 +1,16 @@
+
+* 01 W01-COMPUTE-0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE PIC X(2) VALUE "**".
+ 01 W01-COMPUTE-0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-1 PIC Z(5),Z(3).
+ 01 W01-COMPUTE-2 PIC *Z,ZZZ,ZZZ.
+ 01 W01-COMPUTE-3 PIC Z(3)Z(5),99.
+ 01 W01-COMPUTE-4 PIC 9(6)V99.
+ 01 W01-COMPUTE-5 PIC 9(5).
+ 01 W01-COMPUTE-6 PIC X(10) VALUE 'W01-1XXX'.
+
+ COPY 'TEST02A.cpy' REPLACING
+ W01-COMPUTE-A0 BY W01-COMPUTE-A00
+ ==9(8)== BY ==9(09)== .
+
+
diff --git a/cobpp/copybooks/TEST02A.cpy b/cobpp/copybooks/TEST02A.cpy
new file mode 100644
index 0000000..e903292
--- /dev/null
+++ b/cobpp/copybooks/TEST02A.cpy
@@ -0,0 +1,11 @@
+
+* 01 W01-COMPUTE-A0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-A PIC X(2) VALUE "**".
+ 01 W01-COMPUTE-A0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-A1 PIC Z(5),Z(3).
+ 01 W01-COMPUTE-A2 PIC *Z,ZZZ,ZZZ.
+ 01 W01-COMPUTE-A3 PIC Z(3)Z(5),99.
+ 01 W01-COMPUTE-A4 PIC 9(5)V99.
+
+ COPY 'TEST02B.cpy'.
+
diff --git a/cobpp/copybooks/TEST02B.cpy b/cobpp/copybooks/TEST02B.cpy
new file mode 100644
index 0000000..ec84da2
--- /dev/null
+++ b/cobpp/copybooks/TEST02B.cpy
@@ -0,0 +1,11 @@
+
+* 01 W01-COMPUTE-B0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-B PIC X(2) VALUE "**".
+ 01 W01-COMPUTE-B0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-B1 PIC Z(5),Z(3).
+ 01 W01-COMPUTE-B2 PIC *Z,ZZZ,ZZZ.
+ 01 W01-COMPUTE-B3 PIC Z(3)Z(5).99.
+ 01 W01-COMPUTE-B4 PIC 9(5)V99.
+
+
+ COPY 'TEST02C.cpy'.
diff --git a/cobpp/copybooks/TEST02C.cpy b/cobpp/copybooks/TEST02C.cpy
new file mode 100644
index 0000000..be869bd
--- /dev/null
+++ b/cobpp/copybooks/TEST02C.cpy
@@ -0,0 +1,9 @@
+
+* 01 W01-COMPUTE-C0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-C PIC X(2) VALUE "**".
+ 01 W01-COMPUTE-C0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-C1 PIC Z(5),Z(3).
+ 01 W01-COMPUTE-C2 PIC *Z,ZZZ,ZZZ.
+ 01 W01-COMPUTE-C3 PIC Z(3)Z(5).99.
+ 01 W01-COMPUTE-C4 PIC 9(5)V99.
+
diff --git a/cobpp/copybooks/TEST02E.cpy b/cobpp/copybooks/TEST02E.cpy
new file mode 100644
index 0000000..02e20a3
--- /dev/null
+++ b/cobpp/copybooks/TEST02E.cpy
@@ -0,0 +1,9 @@
+
+* 01 W01-COMPUTE-D0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-D PIC X(2) VALUE "**".
+ 01 W01-COMPUTE-D0 PIC 9(8) VALUE 30000.
+ 01 W01-COMPUTE-D1 PIC Z(5),Z(3).
+ 01 W01-COMPUTE-D2 PIC *Z,ZZZ,ZZZ.
+ 01 W01-COMPUTE-D3 PIC Z(3)Z(5).99.
+ 01 W01-COMPUTE-D4 PIC 9(5)V99.
+
diff --git a/cobpp/copybooks/fTEST02.cpy b/cobpp/copybooks/fTEST02.cpy
new file mode 100644
index 0000000..4383aef
--- /dev/null
+++ b/cobpp/copybooks/fTEST02.cpy
@@ -0,0 +1,16 @@
+000010 fTEST02_
+000020* 01 W01-COMPUTE-0 PIC 9(8) VALUE 30000. fTEST02_
+000030 01 W01-COMPUTE PIC X(2) VALUE "**". fTEST02_
+000040 01 W01-COMPUTE-0 PIC 9(8) VALUE 30000. fTEST02_
+000050 01 W01-COMPUTE-1 PIC Z(5),Z(3). fTEST02_
+000060 01 W01-COMPUTE-2 PIC *Z,ZZZ,ZZZ. fTEST02_
+000070 01 W01-COMPUTE-3 PIC Z(3)Z(5),99. fTEST02_
+000080 01 W01-COMPUTE-4 PIC 9(6)V99. fTEST02_
+000090 01 W01-COMPUTE-5 PIC 9(5). fTEST02_
+000100 01 W01-COMPUTE-6 PIC X(10) VALUE 'W01-1XXX'. fTEST02_
+000110 fTEST02_
+000120 COPY 'fTEST02A.cpy' REPLACING fTEST02_
+000130 W01-COMPUTE-A0 BY W01-COMPUTE-A00 fTEST02_
+000140 ==9(8)== BY ==9(09)== . fTEST02_
+000150 fTEST02_
+000160 fTEST02_
diff --git a/cobpp/copybooks/fTEST02A.cpy b/cobpp/copybooks/fTEST02A.cpy
new file mode 100644
index 0000000..006acee
--- /dev/null
+++ b/cobpp/copybooks/fTEST02A.cpy
@@ -0,0 +1,11 @@
+000010 fTEST02A
+000020* 01 W01-COMPUTE-A0 PIC 9(8) VALUE 30000. fTEST02A
+000030 01 W01-COMPUTE-A PIC X(2) VALUE "**". fTEST02A
+000040 01 W01-COMPUTE-A0 PIC 9(8) VALUE 30000. fTEST02A
+000050 01 W01-COMPUTE-A1 PIC Z(5),Z(3). fTEST02A
+000060 01 W01-COMPUTE-A2 PIC *Z,ZZZ,ZZZ. fTEST02A
+000070 01 W01-COMPUTE-A3 PIC Z(3)Z(5),99. fTEST02A
+000080 01 W01-COMPUTE-A4 PIC 9(5)V99. fTEST02A
+000090 fTEST02A
+000100 COPY 'fTEST02B.cpy'. fTEST02A
+000110 fTEST02A
diff --git a/cobpp/copybooks/fTEST02B.cpy b/cobpp/copybooks/fTEST02B.cpy
new file mode 100644
index 0000000..5ec4e2f
--- /dev/null
+++ b/cobpp/copybooks/fTEST02B.cpy
@@ -0,0 +1,11 @@
+000010 fTEST02B
+000020* 01 W01-COMPUTE-B0 PIC 9(8) VALUE 30000. fTEST02B
+000030 01 W01-COMPUTE-B PIC X(2) VALUE "**". fTEST02B
+000040 01 W01-COMPUTE-B0 PIC 9(8) VALUE 30000. fTEST02B
+000050 01 W01-COMPUTE-B1 PIC Z(5),Z(3). fTEST02B
+000060 01 W01-COMPUTE-B2 PIC *Z,ZZZ,ZZZ. fTEST02B
+000070 01 W01-COMPUTE-B3 PIC Z(3)Z(5).99. fTEST02B
+000080 01 W01-COMPUTE-B4 PIC 9(5)V99. fTEST02B
+000090 fTEST02B
+000100 fTEST02B
+000110 COPY 'fTEST02C.cpy'. fTEST02B
diff --git a/cobpp/copybooks/fTEST02C.cpy b/cobpp/copybooks/fTEST02C.cpy
new file mode 100644
index 0000000..fb15b78
--- /dev/null
+++ b/cobpp/copybooks/fTEST02C.cpy
@@ -0,0 +1,9 @@
+000010 fTEST02C
+000020* 01 W01-COMPUTE-C0 PIC 9(8) VALUE 30000. fTEST02C
+000030 01 W01-COMPUTE-C PIC X(2) VALUE "**". fTEST02C
+000040 01 W01-COMPUTE-C0 PIC 9(8) VALUE 30000. fTEST02C
+000050 01 W01-COMPUTE-C1 PIC Z(5),Z(3). fTEST02C
+000060 01 W01-COMPUTE-C2 PIC *Z,ZZZ,ZZZ. fTEST02C
+000070 01 W01-COMPUTE-C3 PIC Z(3)Z(5).99. fTEST02C
+000080 01 W01-COMPUTE-C4 PIC 9(5)V99. fTEST02C
+000090 fTEST02C
diff --git a/cobpp/copybooks/fTEST02D.cpy b/cobpp/copybooks/fTEST02D.cpy
new file mode 100644
index 0000000..5eeb87f
--- /dev/null
+++ b/cobpp/copybooks/fTEST02D.cpy
@@ -0,0 +1,9 @@
+000010 fTEST02D
+000020* 01 W01-COMPUTE-D0 PIC 9(8) VALUE 30000. fTEST02D
+000030 01 W01-COMPUTE-D PIC X(2) VALUE "**". fTEST02D
+000040 01 W01-COMPUTE-D0 PIC 9(8) VALUE 30000. fTEST02D
+000050 01 W01-COMPUTE-D1 PIC Z(5),Z(3). fTEST02D
+000060 01 W01-COMPUTE-D2 PIC *Z,ZZZ,ZZZ. fTEST02D
+000070 01 W01-COMPUTE-D3 PIC Z(3)Z(5).99. fTEST02D
+000080 01 W01-COMPUTE-D4 PIC 9(5)V99. fTEST02D
+000090 fTEST02D
diff --git a/cobpp/copybooks/fTEST02E.cpy b/cobpp/copybooks/fTEST02E.cpy
new file mode 100644
index 0000000..dc99d59
--- /dev/null
+++ b/cobpp/copybooks/fTEST02E.cpy
@@ -0,0 +1,9 @@
+000010 fTEST02E
+000020* 01 W01-COMPUTE-D0 PIC 9(8) VALUE 30000. fTEST02E
+000030 01 W01-COMPUTE-D PIC X(2) VALUE "**". fTEST02E
+000040 01 W01-COMPUTE-D0 PIC 9(8) VALUE 30000. fTEST02E
+000050 01 W01-COMPUTE-D1 PIC Z(5),Z(3). fTEST02E
+000060 01 W01-COMPUTE-D2 PIC *Z,ZZZ,ZZZ. fTEST02E
+000070 01 W01-COMPUTE-D3 PIC Z(3)Z(5).99. fTEST02E
+000080 01 W01-COMPUTE-D4 PIC 9(5)V99. fTEST02E
+000090 fTEST02E
diff --git a/cobpp/parser.y b/cobpp/parser.y
new file mode 100644
index 0000000..fbce6df
--- /dev/null
+++ b/cobpp/parser.y
@@ -0,0 +1,280 @@
+/*
+ Copyright (C) 1999-2004 David Essex
+
+ This program 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 2, or (at your option)
+ any later version.
+
+ This program 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 this software; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307 USA
+
+
+ TinyCOBOL pre-processor parser
+
+*/
+
+%{
+
+#include
+#include
+#include
+#include
+#include
+
+#include "cobpp.h"
+
+//#define YYDEBUG 1
+/* #define DEBUG_COBPP_PARSER 1 */
+
+extern unsigned long lineCount;
+extern unsigned long columnCount;
+extern int copy_state_sw;
+extern int copy_start_sw;
+extern int replace_state_sw;
+extern int replace_start_sw;
+extern int identifier_scan_sw;
+//extern char *include_filename;
+extern char *include_cpybook;
+extern char *include_cpylib;
+
+extern int yylex(void);
+extern char *pp_yytext;
+extern void add_copy_replacement(char *, char *);
+extern void add_replace_replacement(char *, char *);
+
+#ifdef DEBUG_COBPP_PARSER
+
+char erryybuf[1024*8];
+
+void debug_yy_rtn (const char *s1, const char *s2, const char *s3, int sw);
+
+#define DEBUGYY_RTN_STR1(msg1) debug_yy_rtn (msg1, NULL, NULL, 1);
+#define DEBUGYY_RTN_STR3(msg1, msg2) debug_yy_rtn (msg1, msg2, NULL, 3);
+#define DEBUGYY_RTN_STR15(msg1, msg2, msg3) debug_yy_rtn (msg1, msg2, msg3, 15);
+
+#else
+
+#define DEBUGYY_RTN_STR1(msg1)
+#define DEBUGYY_RTN_STR3(msg1, msg2)
+#define DEBUGYY_RTN_STR15(msg1, msg2, msg3)
+
+#endif
+
+%}
+%union {
+ char *str; /* string */
+ int ival; /* int */
+}
+
+%token TOK_PSEUDO_TEXT TOK_IDENTIFIER TOK_LITERAL TOK_WORD
+%token ERROR YYERROR_VERBOSE
+
+%token TOK_COPY TOK_PERIOD TOK_OFF TOK_BY TOK_OF TOK_IN
+%token TOK_REPLACING TOK_REPLACE
+%token TOK_MISC TOK_COMMA
+%token TOK_SOURCE_COMPUTER TOK_WITH TOK_DEBUGGING TOK_MODE
+
+%type pseudo_text identifier literal word name library_name_opt replacing_text
+
+
+%%
+
+root: statements
+ | /* nill */
+ ;
+
+statements: statement
+ | statements statement
+ ;
+
+statement: TOK_SOURCE_COMPUTER TOK_PERIOD
+ {
+ DEBUGYY_RTN_STR1("yytrace: TOK_SOURCE_COMPUTER TOK_PERIOD\n")
+ }
+ identifier_debug_mode_opt
+ {
+ identifier_scan_sw--;
+ }
+ | TOK_COPY
+ {
+ DEBUGYY_RTN_STR1("yytrace: TOK_COPY\n")
+ }
+ copy_statement TOK_PERIOD
+ {
+ copy_state_sw--;
+ copy_start_sw++;
+ identifier_scan_sw--;
+ }
+ | TOK_REPLACE replace_statement TOK_PERIOD
+ {
+ replace_state_sw--;
+ replace_start_sw++;
+ identifier_scan_sw--;
+ }
+ | TOK_REPLACE TOK_OFF TOK_PERIOD
+ {
+ replace_state_sw--;
+ replace_start_sw--;
+ identifier_scan_sw--;
+ }
+ | TOK_MODE { }
+ | TOK_WITH { }
+ | error
+ {
+ globalEnvPtr->errFlag = 11;
+ return 11;
+ }
+ | ERROR
+ {
+ globalEnvPtr->errFlag = 12;
+ return 12;
+ }
+ | YYERROR_VERBOSE
+ {
+ globalEnvPtr->errFlag = 13;
+ return 13;
+ }
+ ;
+
+copy_statement: name library_name_opt
+ {
+ /*include_filename = $1; */
+ include_cpybook = $1;
+ include_cpylib = $2;
+ DEBUGYY_RTN_STR15("yytrace: copy_statement: name=%s, lib=%s;\n", include_cpybook, include_cpylib)
+ }
+ TOK_REPLACING replacing_statement
+ | name library_name_opt
+ {
+ /*include_filename = $1;*/
+ include_cpybook = $1;
+ include_cpylib = $2;
+ DEBUGYY_RTN_STR15("yytrace: copy_statement: name=%s, lib=%s;\n", include_cpybook, include_cpylib)
+ }
+ ;
+
+replacing_statement: replacing_statements
+ | replacing_statements replacing_statement
+ ;
+
+replacing_statements: replacing_text TOK_BY replacing_text comma_delimiter_opt
+ {
+ add_copy_replacement($1,$3);
+ DEBUGYY_RTN_STR15("yytrace: replacing_statements: \'%s\' BY \'%s\':\n", $1, $3)
+ }
+ ;
+
+replacing_text: pseudo_text { $$=$1; }
+ | identifier { $$=$1; }
+ | literal { $$=$1; }
+ | word { $$=$1; }
+ ;
+
+library_name_opt: of_in name { $$=$2; }
+ | { $$=NULL; }
+ ;
+
+replace_statement: replace_statements
+ | replace_statements replace_statement
+ ;
+
+replace_statements: pseudo_text TOK_BY pseudo_text comma_delimiter_opt
+ {
+ add_replace_replacement($1,$3);
+ }
+ ;
+
+name: literal { $$=$1; }
+ | identifier { $$=$1; }
+ ;
+
+pseudo_text: TOK_PSEUDO_TEXT { $$=$1; }
+ ;
+
+identifier: TOK_IDENTIFIER
+ {
+ DEBUGYY_RTN_STR3("yytrace: identifier: \'%s\'\n", $1)
+ $$=$1;
+ }
+ ;
+
+literal: TOK_LITERAL { $$=$1; }
+ ;
+
+word: TOK_WORD { $$=$1; }
+ ;
+
+of_in: TOK_OF
+ | TOK_IN
+ ;
+
+comma_delimiter_opt: TOK_COMMA
+ | /* no comma */
+ ;
+
+identifier_debug_mode_opt: identifier debugging_mode_opt TOK_PERIOD
+ {
+ DEBUGYY_RTN_STR1("yytrace: identifier debugging_mode_opt TOK_PERIOD\n")
+ }
+ | /* empty */
+ ;
+
+debugging_mode_opt: with_opt TOK_DEBUGGING
+ TOK_MODE
+ {
+ globalEnv.IncDebugLines = 1;
+ DEBUGYY_RTN_STR1("yytrace: with_opt TOK_DEBUGGING TOK_MODE \n")
+ }
+ | /* empty */
+ ;
+
+with_opt: TOK_WITH
+ | /* no with */
+ ;
+
+%%
+
+
+void pp_yyerror(char *s)
+{
+ fprintf(stderr, "htcobolpp: yyerror (%lu, %lu): %s \'%s\'\n", lineCount, columnCount, s, pp_yytext);
+ globalEnvPtr->errFlag = 8;
+
+ /* return 0; */
+}
+
+#ifdef DEBUG_COBPP_PARSER
+
+void debug_yy_rtn (const char *s1, const char *s2, const char *s3, int sw)
+{
+ switch (sw)
+ {
+ case 3:
+ sprintf(erryybuf, s1, s2);
+ break;
+
+ case 5:
+ sprintf(erryybuf, s1, s3);
+ break;
+
+ case 15:
+ sprintf(erryybuf, s1, s2, s3);
+ break;
+
+ default:
+ sprintf(erryybuf, "%s", s1);
+ break;
+ }
+
+ fprintf(stderr, "%s", erryybuf);
+}
+
+#endif
diff --git a/cobpp/scanner.l b/cobpp/scanner.l
new file mode 100644
index 0000000..4322618
--- /dev/null
+++ b/cobpp/scanner.l
@@ -0,0 +1,2161 @@
+/*
+ * Copyright (C) 2002, 2001, 2000, 1999 David Essex
+ *
+ * This program 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 2, or (at your option)
+ * any later version.
+ *
+ * This program 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 this software; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307 USA
+*/
+
+%option caseless
+/*%option noyywrap*/
+%option never-interactive
+%option yylineno
+
+%{
+
+/*#undef yywrap*/
+#include
+#include
+#include
+
+#include "cobpp.h"
+/* definitions from YACC */
+#include "parser.tab.h"
+
+
+/* #define DEBUG_COBPP_SCANNER 1 */
+
+#define MAX_COPY_DEPTH 25
+
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 1024
+//#define YY_READ_BUF_SIZE 1024 * 8
+#endif
+
+#define MAX_COPY_DEPTH 25
+#define MAX_CPYNAME_LEN 65
+#define MAXLINEBUF YY_READ_BUF_SIZE
+#define MAXBUF 1025
+
+#define FIXFORM_6 6
+#define FIXFORM_7 7
+#define FIXFORM_65 65
+#define FIXFORM_71 71
+#define FIXFORM_72 72
+#define FIXFORM_73 73
+#define FIXFORM_81 81
+
+#define lexchar input
+
+static struct fstack {
+ YY_BUFFER_STATE buffer;
+ char *filename;
+ int lineno;
+ struct copy_symbols *last_symbol;
+} file_stack[MAX_COPY_DEPTH];
+
+static struct copy_symbols {
+ struct copy_symbols *next;
+ char *value;
+ char *replacement;
+} *copy_symbols=NULL;
+struct copy_symbols *append_copy_symbols=NULL;
+struct copy_symbols *append_replace_symbols=NULL;
+
+char *include_cpybook;
+char *include_cpylib;
+
+char include_full_filename[MAXBUF];
+char toktext[MAXLINEBUF+1];
+char ibuf[MAXLINEBUF+1];
+
+extern FILE *yylist;
+
+static int fsp=0;
+int i,j;
+unsigned int ret_token;
+int copy_state_sw = 0;
+int copy_start_sw = 0;
+int replace_state_sw = 0;
+int replace_start_sw = 0;
+int identifier_scan_sw = 0;
+int initial_state = 0;
+int lf_add = 0;
+int quote_sw = 0;
+unsigned int columnCount = 0;
+static unsigned int lineNumber = 0;
+static unsigned int lineNumber_prev = 0;
+unsigned int lineCount = 1;
+int lineno = 1;
+static int zzlineno = 0;
+//static int lineno_prev = 1;
+static int zzlineno_prev = 1;
+static int result_prev = 0;
+static int fsp_prev = 0;
+char *filename=NULL;
+
+void tabExpand(char *s1, char *s2);
+/*void lexError( char * msg ); */
+char *savename(const char *s, int x1, int x2);
+void adjust_counters(void);
+
+#ifdef DEBUG_COBPP_SCANNER
+
+char errbuf[MAXLINEBUF+1];
+
+void debug_rtn (const char *s, unsigned long Ccnt, unsigned long Lcnt, int Len, const char *s1);
+void debug_rtn_sssd (const char *s1, const char *s2, const char *s3, int z, int sw);
+void debug_rtn2 (const char *s1, const char *s2, int sw1, int sw2, int sw3, int sw);
+void debug_rtn_dump (const char *s, const char *s1, int fsln, int fsi, int gln);
+
+#define DEBUG_RTN(msg) debug_rtn (msg, columnCount, lineCount, yyleng, pp_yytext);
+#define DEBUG_RTN1(msg) debug_rtn (msg, columnCount, lineCount, yyleng, pp_yytext+1);
+#define DEBUG_RTN_NL(msg) debug_rtn (msg, columnCount, lineCount, yyleng, "");
+#define DEBUG_RTN_DUMP(msg, msg1) debug_rtn_dump (msg, msg1, lineno, fsp, lineCount);
+#define DEBUG_RTN_FSP(msg) \
+ if (fsp > 0) { \
+ debug_rtn_sssd (msg, NULL, NULL, fsp, 7); \
+ }
+#define DEBUG_RTN_FSP1(msg) debug_rtn_sssd (msg, NULL, NULL, fsp, 7);
+#define DEBUG_RTN_STR1(msg) debug_rtn_sssd (msg, NULL, NULL, 0, 1);
+#define DEBUG_RTN_STR2(msg1, msg2) debug_rtn_sssd (msg1, msg2, NULL, 0, 3);
+#define DEBUG_RTN_STR3(msg1, msg2, msg3) debug_rtn_sssd (msg1, msg2, msg3, 0, 15);
+#define DEBUG_RTN_RLIST() \
+ for (cs=copy_symbols, i=0; cs != NULL; cs=cs->next, i++) { \
+ fprintf(stderr, "lextrace: Replace list (%02d) :%s: by :%s:\n", \
+ i, \
+ cs->value, \
+ cs->replacement); \
+ }
+#define DEBUG_RTN_RLIST2() \
+ for (tmp = append_copy_symbols,i=0; tmp!=NULL; tmp=tmp->next, i++) { \
+ fprintf(stderr, "lextrace: dump2 copy_symbols(%d) value=%s replacement=%s\n", \
+ i, \
+ tmp->value, \
+ tmp->replacement \
+ ); \
+ }
+#define DEBUG_RTN_RLIST3() \
+ for (tmp = file_stack[fsp].last_symbol, i=0; tmp!=NULL; tmp=tmp->next, i++) { \
+ fprintf(stderr, "lextrace: dump3(%d) level=%d, value=%s, replacement=%s\n", \
+ i, \
+ fsp, \
+ tmp->value, \
+ tmp->replacement \
+ ); \
+ }
+#define DEBUG_RTN_RLIST4() \
+ for (tmp = append_copy_symbols, i=0; tmp!=NULL; tmp=tmp->next, i++) { \
+ fprintf(stderr, "lextrace: add_copy_replacement dump4(%d): value=%s replacement=%s\n", \
+ i, \
+ tmp->value, \
+ tmp->replacement \
+ ); \
+ }
+#define DEBUG_RTN_RLIST5() \
+ for (tmp = append_copy_symbols, i=0; tmp!=NULL; tmp=tmp->next, i++) { \
+ fprintf(stderr, "lextrace: add_replace_replacement dump4(%d): value=%s replacement=%s\n", \
+ i, \
+ tmp->value, \
+ tmp->replacement \
+ ); \
+ }
+#define DEBUG_RTN_DLIST(msg1, msg2, msg3) debug_rtn_sssd (msg1, msg2, msg3, fsp, 106);
+#define DEBUG_RTN_FIXLEN(msg1, zz, msg2) debug_rtn_sssd (msg1, msg2, NULL, zz, 26);
+
+
+#define DEBUG_RTN_LEX1() \
+ for (tmp = copy_symbols, i=0; tmp!=NULL; tmp=tmp->next, i++) { \
+ fprintf(stderr, "lextrace: {blank}*{eol} copy_symbols(%d) value=%s replacement=%s\n", \
+ i, \
+ tmp->value, \
+ tmp->replacement \
+ ); \
+ }
+#define DEBUG_RTN_LEX2() \
+ if (copy_state_sw != 0) { \
+ fprintf(stderr, \
+ "lextrace: TOK_PSEUDO_TEXT :%s: copy_state_sw=%d\n", \
+ pp_yytext, copy_state_sw); \
+ } \
+ else{ \
+ fprintf(stderr, \
+ "lextrace: TOK_PSEUDO_TEXT :%s: replace_state_sw=%d\n", \
+ pp_yytext, replace_state_sw); \
+ }
+
+#define DEBUG_RTN_LEX3(msg1, msg2) debug_rtn2 (msg1, msg2, 0, 0, 0, 3);
+#define DEBUG_RTN_LEX15(msg1, msg2, i1) debug_rtn2 (msg1, msg2, i1, 0, 0, 15);
+#define DEBUG_RTN_LEX35(msg1, i1, i2) debug_rtn2 (msg1, NULL, i1, i2, 0, 35);
+#define DEBUG_RTN_LEX105(msg1, msg2, i1, i2) debug_rtn2 (msg1, msg2, i1, i2, 0, 105);
+#define DEBUG_RTN_LEX385(msg1, i1, i2, i3) debug_rtn2 (msg1, NULL, i1, i2, i3, 385);
+
+#else
+
+#define DEBUG_RTN(msg)
+#define DEBUG_RTN0(msg)
+#define DEBUG_RTN1(msg)
+#define DEBUG_RTN_NL(msg)
+#define DEBUG_RTN_DUMP(msg, msg1)
+#define DEBUG_RTN_FSP(msg)
+#define DEBUG_RTN_FSP1(msg)
+#define DEBUG_RTN_STR1(msg)
+#define DEBUG_RTN_STR2(msg1, msg2)
+#define DEBUG_RTN_STR3(msg1, msg2, msg3)
+#define DEBUG_RTN_RLIST()
+#define DEBUG_RTN_DLIST(msg1, msg2, msg3)
+#define DEBUG_RTN_RLIST2()
+#define DEBUG_RTN_RLIST3()
+#define DEBUG_RTN_RLIST4()
+#define DEBUG_RTN_RLIST5()
+#define DEBUG_RTN_FIXLEN(msg1, zz, msg2)
+#define DEBUG_RTN_LEX1()
+#define DEBUG_RTN_LEX2()
+#define DEBUG_RTN_LEX3(msg1, msg2)
+#define DEBUG_RTN_LEX15(msg1, msg2, i1)
+#define DEBUG_RTN_LEX35(msg1, i1, i2)
+#define DEBUG_RTN_LEX105(msg1, msg2, i1, i2)
+#define DEBUG_RTN_LEX385(msg1, i1, i2, i3)
+
+#endif
+
+void setup_scanner_state(void);
+void set_scanner_state(int i0, int i1);
+
+void copy_switch(void);
+/* void copy_do_replacements(char *buffer); */
+void do_copy_replacements(char *buffer);
+void do_replace_replacements(char *buffer);
+int lex_fgets(char *buf, int maxsize);
+
+
+#define YY_INPUT(buf,result,max_size) \
+ { \
+ result = lex_fgets( buf, max_size ); \
+ }
+
+%}
+
+cr [\r]
+lf [\n]
+eol {lf}
+tab [\t]
+blank [ ]
+Quote ['"]
+NoQuoteEol [^'"\n]
+NoSQuoteEol [^'\n]
+NoDQuoteEol [^"\n]
+NoDQuote [^"]
+DQuote \"
+SQuote \'
+ws [ \n]
+Period \.
+Comma [,]
+Alpha [A-Za-z]
+AlphaNum [A-Za-z0-9\-]
+Numeric [0-9]
+AnyNoDQuote [^"\t\n]
+AnyNoSQuote [^'\t\n]
+EqSign [=]
+EqSign2 "=="
+NoEqSign [^\n=]
+NoEqSign2 [^\n=]/[^\n=]
+invalid7 [^*/D$ \n]
+
+%x FREE FIXED_7 FIXED_AB COMMENT DQ_LITERAL_FIXED DQ_LITERAL_FREE SQ_LITERAL_FIXED SQ_LITERAL_FREE PSEUDO_TEXT COMMENT_ENTRY
+
+%%
+
+%{
+ struct copy_symbols *tmp=NULL;
+%}
+
+
+{
+
+ "*>" |
+ ^"$" |
+ ^"/" |
+ ^"*" {
+
+ DEBUG_RTN ("^* ^/ ^$ *>")
+
+ columnCount = columnCount + yyleng;
+ BEGIN(COMMENT);
+ }
+}
+
+{
+
+ ^"D " {
+
+ DEBUG_RTN ("D ")
+
+ columnCount = columnCount + yyleng;
+ if (globalEnvPtr->IncDebugLines == 0) {
+ BEGIN(COMMENT);
+ }
+ else {
+ fprintf(yyout, " ");
+ }
+ }
+ ^"-" {
+
+ DEBUG_RTN ("-")
+
+ columnCount = columnCount + yyleng;
+ fprintf(yyout, " ");
+ }
+}
+
+{
+
+ COPY {
+
+ DEBUG_RTN ("COPY")
+
+ columnCount = columnCount + yyleng;
+ copy_state_sw++;
+ identifier_scan_sw++;
+
+ DEBUG_RTN_LEX35("lextrace: TOK_COPY=%d, copy_state_sw=%d;\n", TOK_COPY, copy_state_sw)
+
+ return TOK_COPY;
+ }
+
+ OF {
+
+ DEBUG_RTN ("OF")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX35("lextrace: TOK_OF=%d, copy_state_sw=%d;\n", TOK_OF, copy_state_sw)
+
+ if (copy_state_sw != 0) {
+ return TOK_OF;
+ }
+ else {
+ ECHO;
+ }
+ }
+
+ OFF {
+
+ DEBUG_RTN ("OFF")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX35("lextrace: TOK_OFF=%d, replace_state_sw=%d;\n", TOK_OFF, replace_state_sw)
+
+ if (replace_state_sw != 0) {
+ return TOK_OFF;
+ }
+ else {
+ ECHO;
+ }
+ }
+
+ IN {
+
+ DEBUG_RTN ("IN")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX35("lextrace: TOK_IN=%d, copy_state_sw=%d;\n", TOK_IN, copy_state_sw)
+
+ if (copy_state_sw != 0) {
+ return TOK_IN;
+ }
+ else {
+ ECHO;
+ }
+ }
+
+ BY {
+
+ DEBUG_RTN ("BY")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX385("lextrace: TOK_BY=%d, copy_state_sw=%d, replace_state_sw=%d;\n" , TOK_BY, copy_state_sw, replace_state_sw)
+
+ if ((copy_state_sw != 0) || (replace_state_sw != 0)) {
+ return TOK_BY;
+ }
+ else {
+ ECHO;
+ }
+ }
+
+ REPLACE {
+
+ DEBUG_RTN ("REPLACE")
+
+ columnCount = columnCount + yyleng;
+ replace_state_sw++;
+ identifier_scan_sw++;
+
+ DEBUG_RTN_LEX35("lextrace: TOK_REPLACE=%d, replace_state_sw=%d;\n", TOK_REPLACE, replace_state_sw)
+
+ return TOK_REPLACE;
+ }
+
+ REPLACING {
+
+ DEBUG_RTN ("REPLACING")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX35("lextrace: TOK_REPLACING=%d, copy_state_sw=%d;\n", TOK_REPLACING, copy_state_sw)
+
+ if (copy_state_sw != 0) {
+ return TOK_REPLACING;
+ }
+ else {
+ ECHO;
+ }
+ }
+
+ SOURCE\-COMPUTER {
+
+ DEBUG_RTN ("SOURCE-COMPUTER")
+
+ identifier_scan_sw++;
+ columnCount = columnCount + yyleng;
+ ECHO;
+ return TOK_SOURCE_COMPUTER;
+ }
+
+ ^{blank}{0,4}AUTHOR{blank}*{Period} {
+
+ DEBUG_RTN ("^{blank}{0,4}AUTHOR{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ /* ECHO; */
+ BEGIN(COMMENT_ENTRY);
+ }
+
+ {blank}{0,4}INSTALLATION{blank}*{Period} {
+
+ DEBUG_RTN ("^{blank}{0,4}INSTALLATION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ /* ECHO; */
+ BEGIN(COMMENT_ENTRY);
+ }
+
+ {blank}{0,4}DATE\-WRITTEN{blank}*{Period} {
+
+ DEBUG_RTN ("^{blank}{0,4}DATE-WRITTEN{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ /* ECHO; */
+ BEGIN(COMMENT_ENTRY);
+ }
+
+ {blank}{0,4}DATE\-COMPILED{blank}*{Period} {
+
+ DEBUG_RTN ("^{blank}{0,4}DATE-COMPILED{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ /* ECHO; */
+ BEGIN(COMMENT_ENTRY);
+ }
+
+ {blank}{0,4}SECURITY{blank}*{Period} {
+
+ DEBUG_RTN ("^{blank}{0,4}SECURITY{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ /* ECHO; */
+ BEGIN(COMMENT_ENTRY);
+ }
+
+ WITH {
+
+ DEBUG_RTN ("WITH")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ return TOK_WITH;
+ }
+
+ DEBUGGING {
+
+ DEBUG_RTN ("DEBUGGING")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ return TOK_DEBUGGING;
+ }
+
+ MODE {
+
+ DEBUG_RTN ("MODE")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ return TOK_MODE;
+ }
+
+ {blank}+ {
+
+ DEBUG_RTN ("{blank}+")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ }
+
+ {DQuote} {
+
+ DEBUG_RTN ("{DQuote}")
+
+ columnCount++;
+ quote_sw = 2;
+ if (copy_state_sw != 0) {
+ strncpy(toktext, pp_yytext, MAXBUF);
+ }
+ else {
+ ECHO;
+ }
+ set_scanner_state(DQ_LITERAL_FIXED, DQ_LITERAL_FREE);
+ }
+
+ {SQuote} {
+
+ DEBUG_RTN ("{SQuote}")
+
+ columnCount++;
+ quote_sw = 1;
+ if (copy_state_sw != 0) {
+ strncpy(toktext, pp_yytext, MAXBUF);
+ }
+ else {
+ ECHO;
+ }
+ set_scanner_state(SQ_LITERAL_FIXED, SQ_LITERAL_FREE);
+ }
+
+ {Numeric}{1,18} {
+
+ DEBUG_RTN ("{Numeric}")
+
+ columnCount = columnCount + yyleng;
+ if (copy_state_sw != 0) {
+ strncpy(toktext, pp_yytext, MAXBUF);
+ pp_yylval.str = savename(toktext, 0, 0);
+ return(TOK_LITERAL);
+ }
+ else {
+ ECHO;
+ }
+
+ }
+
+ {EqSign2} {
+
+ DEBUG_RTN ("{EqSign2}")
+
+ columnCount = columnCount + yyleng;
+ if ((copy_state_sw != 0) || (replace_state_sw != 0)) {
+
+ DEBUG_RTN_LEX2()
+
+ strncpy(toktext, pp_yytext, MAXBUF);
+ /*pp_yylval.str = savename(toktext, 2, 2);*/
+ /*return(TOK_PSEUDO_TEXT);*/
+ BEGIN(PSEUDO_TEXT);
+ }
+ else {
+ ECHO;
+ }
+ }
+
+ {Period}/[ \n] {
+
+ DEBUG_RTN ("{Period}")
+
+ columnCount++;
+ /*if ((copy_state_sw != 0) || (replace_state_sw != 0) || (identifier_scan_sw != 0)) {*/
+ if ((copy_state_sw != 0) || (replace_state_sw != 0)) {
+ return(TOK_PERIOD);
+ }
+ else {
+ ECHO;
+ if (identifier_scan_sw != 0) {
+ return(TOK_PERIOD);
+ }
+ }
+ }
+
+ ({AlphaNum}*{Alpha}+{AlphaNum}*){1,30} {
+
+ DEBUG_RTN ("({AlphaNum}*{Alpha}+{AlphaNum}*){1,30}")
+
+ columnCount = columnCount + yyleng;
+
+ if (identifier_scan_sw != 0) {
+
+ DEBUG_RTN_LEX15("lextrace: TOK_IDENTIFIER :%s: identifier_scan_sw=%d\n", pp_yytext, identifier_scan_sw)
+
+
+ strncpy(toktext, pp_yytext, MAXBUF);
+ pp_yylval.str = savename(toktext, 0, 0);
+ }
+
+ if ((copy_state_sw != 0) || (replace_state_sw != 0)) {
+ return(TOK_IDENTIFIER);
+ }
+ else {
+ ECHO;
+ if (identifier_scan_sw != 0) {
+ return(TOK_IDENTIFIER);
+ }
+ }
+
+ }
+
+ {Comma} {
+
+ DEBUG_RTN ("COMMA")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX35("lextrace: TOK_IN=%d, copy_state_sw=%d;\n", TOK_COMMA, copy_state_sw)
+
+ if (copy_state_sw != 0) {
+ return TOK_COMMA;
+ }
+ else {
+ ECHO;
+ }
+ }
+
+ "*>" {
+
+ DEBUG_RTN ("*>")
+
+ columnCount = columnCount + yyleng;
+ /* comment line remove */
+ BEGIN(COMMENT);
+ }
+
+ . {
+
+ DEBUG_RTN (".")
+
+ columnCount++;
+ if ((copy_state_sw != 0) || (replace_state_sw != 0)) {
+ return(0);
+ }
+ else {
+ ECHO;
+ }
+ }
+
+}
+
+{
+
+ "*>" |
+ ^"*" {
+
+ DEBUG_RTN ("^* *>")
+
+ columnCount = columnCount + yyleng;
+ BEGIN(COMMENT);
+ }
+
+ {blank}{0,4}REMARKS{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}REMARKS{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}ENVIRONMENT{blank}+DIVISION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}ENVIRONMENT{blank}+DIVISION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}CONFIGURATION{blank}+SECTION{blank}*{Period} {
+
+ DEBUG_RTN ("")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}INPUT\-OUTPUT{blank}+SECTION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}INPUT-OUTPUT{blank}+SECTION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}DATA{blank}+DIVISION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}DATA{blank}+DIVISION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}FILE{blank}+SECTION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}FILE{blank}+SECTION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}WORKING\-STORAGE{blank}+SECTION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}WORKING-STORAGE{blank}+SECTION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}LINKAGE{blank}+SECTION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}LINKAGE{blank}+SECTION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}COMMUNICATION{blank}+SECTION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}COMMUNICATION{blank}+SECTION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}REPORT{blank}+SECTION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}REPORT{blank}+SECTION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}SCREEN{blank}+SECTION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}SCREEN{blank}+SECTION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {blank}{0,4}PROCEDURE{blank}+DIVISION{blank}*{Period} {
+
+ DEBUG_RTN ("{blank}{0,4}PROCEDURE{blank}+DIVISION{blank}*{Period}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+
+ {eol} {
+
+ DEBUG_RTN_NL ("{eol}")
+
+ lineno++;
+ lineCount++;
+ columnCount=7;
+ ECHO;
+ }
+
+ . {
+
+ DEBUG_RTN (".")
+
+ columnCount++;
+ }
+}
+
+{blank}*{eol} {
+
+ DEBUG_RTN_NL ("{blank}*{eol}")
+
+ lineno++;
+ lineCount++;
+ columnCount=7;
+ /*ECHO; */
+ fprintf(yyout, "\n");
+
+ DEBUG_RTN_LEX385("debug FIXED_AB - {blank}*{eol}(%lu,%lu): lf_add=%d,\n", lineCount, columnCount, lf_add)
+
+ for (i=0; i{blank}*{eol} {
+
+ DEBUG_RTN_NL ("{blank}*{eol}")
+
+ lineno++;
+ lineCount++;
+ columnCount=0;
+ /*ECHO; */
+ fprintf(yyout, "\n");
+
+ for (i=0; i{
+
+ "D" {
+
+ DEBUG_RTN ("D")
+
+ columnCount++;
+ if (globalEnvPtr->IncDebugLines == 0) {
+ BEGIN(COMMENT);
+ }
+ else {
+ fprintf(yyout, " ");
+ BEGIN(FIXED_AB);
+ }
+ }
+
+ {blank} {
+
+ DEBUG_RTN ("{blank}")
+
+ columnCount = columnCount + yyleng;
+ ECHO;
+ BEGIN(FIXED_AB);
+ }
+
+ {invalid7} {
+
+ DEBUG_RTN ("{invalid7}")
+
+ globalEnvPtr->errFlag++;
+ fprintf(stderr,
+ "%s:%d:(3) Invaild character (%c) in column %d.\n",
+ globalEnvPtr->ifname,
+ lineCount,
+ pp_yytext[0],
+ columnCount
+ );
+
+ columnCount = columnCount + yyleng;
+ BEGIN(COMMENT);
+ }
+
+ {eol} {
+
+ DEBUG_RTN_NL ("{eol}")
+
+ lineno++;
+ lineCount++;
+ columnCount=7;
+ ECHO;
+
+ DEBUG_RTN_LEX385("debug FIXED_7 - {eol}(%lu,%lu): lf_add=%d,\n", lineCount, columnCount, lf_add)
+
+ for (i=0; i{
+
+ [^\n=]+ {
+
+ DEBUG_RTN ("[^=]+")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX2()
+
+ strncat(toktext, pp_yytext, MAXBUF);
+ }
+
+ {EqSign}/[^\n=]+ {
+
+ DEBUG_RTN ("{EqSign}/[^=]+")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX2()
+
+ strncat(toktext, pp_yytext, MAXBUF);
+ }
+
+ {EqSign2} {
+
+ DEBUG_RTN ("{EqSign2}")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX2()
+
+ strncat(toktext, pp_yytext, MAXBUF);
+ pp_yylval.str = savename(toktext, 2, 2);
+ set_scanner_state(FIXED_AB, FREE);
+ return(TOK_PSEUDO_TEXT);
+ }
+
+ {eol}"-"{blank}{4,65}{DQuote} {
+
+ DEBUG_RTN1 ("{eol}-{blank}{4,65}{DQuote}")
+
+ /* Continuation line remove */
+ /* lineno_prev = lineno; */
+ /* yylineno_prev = lineNumber; */
+ lineno++;
+ lineCount++;
+ columnCount = yyleng - 1;
+ lf_add++;
+ /*BEGIN(DQ_LITERAL_FIXED); */
+ }
+
+}
+
+{
+
+ {DQuote}{blank}*{eol}?{blank}*"&"{blank}*{eol}?{blank}*{DQuote} {
+
+ DEBUG_RTN ("{DQuote}{blank}*{eol}?{blank}*&{blank}*{eol}?{blank}*{DQuote}")
+
+ adjust_counters();
+ }
+
+ {eol}"-"{blank}{4,65}{DQuote} {
+
+ DEBUG_RTN1 ("{eol}-{blank}{4,65}{DQuote}")
+
+ /* Continuation line remove */
+ /* lineno_prev = lineno; */
+ /* yylineno_prev = lineNumber; */
+ lineno++;
+ lineCount++;
+ columnCount = yyleng - 1;
+ lf_add++;
+ /*BEGIN(DQ_LITERAL_FIXED); */
+ }
+
+ \"/[^"] {
+
+ DEBUG_RTN ("{DQuote}/{NoDQuote}")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX105("lextrace: DQuote :%s: copy_state_sw=%d, quote_sw=%d\n", pp_yytext, copy_state_sw, quote_sw)
+
+ if (copy_state_sw != 0) {
+ strcat(toktext, pp_yytext);
+ /* pp_yylval.str = savename(toktext, 1, 1); */
+ pp_yylval.str = savename(toktext, 0, 0);
+ quote_sw = 0;
+ set_scanner_state(FIXED_AB, FREE);
+ return(TOK_LITERAL);
+ }
+ else {
+ ECHO;
+ quote_sw = 0;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+ }
+
+ {DQuote}{2} {
+
+ DEBUG_RTN ("{DQuote}{2}")
+
+ columnCount = columnCount + yyleng;
+
+ if (copy_state_sw != 0) {
+ strcat(toktext, pp_yytext);
+ }
+ else {
+ ECHO;
+ }
+
+ }
+
+ {DQuote} {
+
+ DEBUG_RTN ("{DQuote}")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX105("lextrace: SQuote :%s: copy_state_sw=%d, quote_sw=%d\n", pp_yytext, copy_state_sw, quote_sw)
+
+ if (copy_state_sw != 0) {
+ strcat(toktext, pp_yytext);
+ if (quote_sw == 1) {
+ /* pp_yylval.str = savename(toktext, 1, 1); */
+ pp_yylval.str = savename(toktext, 0, 0);
+ quote_sw = 0;
+ set_scanner_state(FIXED_AB, FREE);
+ return(TOK_LITERAL);
+ }
+ }
+ else {
+ ECHO;
+ if (quote_sw == 1) {
+ quote_sw = 0;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+ }
+ }
+
+ {NoDQuoteEol}+ {
+
+ DEBUG_RTN ("{NoQuoteEol}+")
+
+ /*columnCount++;*/
+ columnCount = columnCount + yyleng;
+
+ if (copy_state_sw != 0) {
+ strcat(toktext, pp_yytext);
+ }
+ else {
+ ECHO;
+ }
+
+ }
+
+ {eol} {
+
+ DEBUG_RTN ("{eol}")
+
+ columnCount=0;
+ lineCount++;
+ lineno++;
+
+ if (copy_state_sw != 0) {
+
+ DEBUG_RTN_LEX15("lextrace: TOK_LITERAL :%s: copy_state_sw=%d\n", pp_yytext, copy_state_sw)
+
+ }
+ else {
+ set_scanner_state(FIXED_7, FREE);
+ }
+ }
+
+}
+
+{
+
+ {SQuote}{blank}*{eol}?{blank}*"&"{blank}*{eol}?{blank}*{SQuote} {
+
+ DEBUG_RTN ("{SQuote}{blank}*{eol}?{blank}*&{blank}*{eol}?{blank}*{SQuote}")
+
+ adjust_counters();
+ }
+
+ {eol}"-"{blank}{4,65}{SQuote} {
+
+ DEBUG_RTN1 ("{eol}-{blank}{4,65}{SQuote}")
+
+ /* Continuation line remove */
+ /* lineno_prev = lineno; */
+ /* yylineno_prev = lineNumber; */
+ lineno++;
+ lineCount++;
+ columnCount = yyleng - 1;
+ lf_add++;
+ /* BEGIN(SQ_LITERAL_FIXED); */
+ }
+
+ \'/[^'] {
+
+ DEBUG_RTN ("{SQuote}/{NoSQuote}")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX105("lextrace: SQuote :%s: copy_state_sw=%d, quote_sw=%d\n", pp_yytext, copy_state_sw, quote_sw)
+
+ if (copy_state_sw != 0) {
+ strcat(toktext, pp_yytext);
+ /* pp_yylval.str = savename(toktext, 1, 1); */
+ pp_yylval.str = savename(toktext, 0, 0);
+ quote_sw = 0;
+ set_scanner_state(FIXED_AB, FREE);
+ return(TOK_LITERAL);
+ }
+ else {
+ ECHO;
+ quote_sw = 0;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+ }
+
+ {SQuote}{2} {
+
+ DEBUG_RTN ("{SQuote}{2}")
+
+ columnCount = columnCount + yyleng;
+
+ if (copy_state_sw != 0) {
+ strcat(toktext, pp_yytext);
+ }
+ else {
+ ECHO;
+ }
+
+ }
+
+ {SQuote} {
+
+ DEBUG_RTN ("{SQuote}")
+
+ columnCount = columnCount + yyleng;
+
+ DEBUG_RTN_LEX105("lextrace: SQuote :%s: copy_state_sw=%d, quote_sw=%d\n", pp_yytext, copy_state_sw, quote_sw)
+
+ if (copy_state_sw != 0) {
+ strcat(toktext, pp_yytext);
+ if (quote_sw == 1) {
+ /* pp_yylval.str = savename(toktext, 1, 1); */
+ pp_yylval.str = savename(toktext, 0, 0);
+ quote_sw = 0;
+ set_scanner_state(FIXED_AB, FREE);
+ return(TOK_LITERAL);
+ }
+ }
+ else {
+ ECHO;
+ if (quote_sw == 1) {
+ quote_sw = 0;
+ set_scanner_state(FIXED_AB, FREE);
+ }
+ }
+ }
+
+ {NoSQuoteEol}+ {
+
+ DEBUG_RTN ("{NoSQuoteEol}+")
+
+ columnCount = columnCount + yyleng;
+
+ if (copy_state_sw != 0) {
+ strcat(toktext, pp_yytext);
+ }
+ else {
+ ECHO;
+ }
+
+ }
+
+ {eol} {
+
+ DEBUG_RTN ("{eol}")
+
+ columnCount=0;
+ lineCount++;
+ lineno++;
+
+ if (copy_state_sw != 0) {
+
+ DEBUG_RTN_LEX15("lextrace: TOK_LITERAL :%s: copy_state_sw=%d\n", pp_yytext, copy_state_sw)
+
+ }
+ else {
+ set_scanner_state(FIXED_7, FREE);
+ }
+ }
+
+}
+
+{
+
+ .+ {
+
+ DEBUG_RTN (".+")
+
+ columnCount = columnCount + yyleng;
+ }
+
+ {eol} {
+
+ DEBUG_RTN_NL ("COMMENT - {eol} ")
+
+ lineno++;
+ lineCount++;
+ columnCount=0;
+ ECHO;
+ set_scanner_state(FIXED_7, FREE);
+ }
+}
+
+<> {
+ struct copy_symbols *cs=NULL,*cs1=NULL;
+ if (fsp == 0) {
+
+ DEBUG_RTN_FSP1("lextrace: receiving <> for fsp = %d:\n")
+
+ yyterminate();
+ }
+ else {
+
+// tmp = lineno;
+// yy_delete_buffer( YY_CURRENT_BUFFER );
+// yy_switch_to_buffer( file_stack[fsp].buffer );
+// lineno = file_stack[ fsp ].line;
+ /* free all replacements in this dead context */
+
+ DEBUG_RTN_FSP1("lextrace: begin delete fsp = %d:\n")
+
+ cs1 = file_stack[fsp].last_symbol;
+ cs = copy_symbols;
+ if (cs == cs1)
+ copy_symbols = NULL;
+ while (cs) {
+ if (cs->next == cs1)
+ break;
+ cs = cs->next;
+ }
+ if (cs)
+ cs->next = NULL;
+ if (cs1) {
+ while (cs1) {
+
+ DEBUG_RTN_DLIST("lextrace: delete fsp=%d, value=%s, replacement=%s:\n", cs1->value, cs1->replacement)
+
+ if (cs1->value) free( cs1->value );
+ if (cs1->replacement) free( cs1->replacement );
+ cs = cs1->next;
+ cs1->next = NULL;
+ free( cs1 );
+ cs1 = cs;
+ cs = NULL;
+ }
+ }
+ yy_delete_buffer( YY_CURRENT_BUFFER );
+ fsp--;
+ yy_switch_to_buffer( file_stack[fsp].buffer );
+ if (filename) { free (filename); filename=NULL;}
+ filename = file_stack[fsp].filename;
+ lineno = file_stack[fsp].lineno;
+ zzlineno = file_stack[fsp].lineno;
+ fprintf (yyout, "# %d \"%s\"\n", lineno, filename);
+
+ }
+}
+
+%%
+
+
+/* Expand tabs to spaces */
+void tabExpand(char *s1, char *s2) {
+ int i, j, k, y, len, sw=0;
+ char delm = '0';
+
+ len = strlen(s2);
+
+ for (i=0, j=0; itab2space * ((j/globalEnvPtr->tab2space) + 1)) - j;
+ y = j + k;
+ for (j=j; jifname
+ ,lineCount
+ ,msg
+ );
+ globalEnvPtr->errFlag++;
+ return;
+}
+*/
+
+int yywrap(void) {
+
+// yywrap will be called to open files from the List of Files in the
+// Global Env struct.
+//
+ return 1;
+}
+
+
+char *savename(const char *s, int x1, int x2) {
+ char *ap, *s1;
+ int len;
+
+ ap = (char *) malloc( strlen(s) + 1 );
+
+ if (ap != NULL) {
+ strncpy(ap, s + x1, strlen(s) + 1);
+ len = strlen(ap);
+ s1 = ap + len - x2;
+ *s1 = '\0';
+ s1++;
+ *s1 = '\0';
+
+ DEBUG_RTN_LEX3("lextrace: savename :%s:\n", ap)
+
+ }
+ return(ap);
+}
+
+int lex_fgets(char *buf, int maxsize) {
+ int result, len;
+ char *s;
+// char ibuf[MAXLINEBUF];
+// char ibuf[YY_READ_BUF_SIZE];
+
+ if ((yylist != NULL) && (lineNumber > 0) && (result_prev != YY_NULL)) {
+ fprintf(yylist, "%6d %6d [%02d]: %s", lineNumber_prev, zzlineno_prev, fsp_prev, ibuf);
+ len = strlen(ibuf);
+// if (len > 0) {
+// fprintf(yylist, "%6d %6d : %s", yylineno_prev, lineno_prev, ibuf);
+// if (copy_state_sw != 0) {
+// // fprintf(yylist, "%6d %6d * %s", lineCount - 1, lineno_prev, ibuf);
+// fprintf(yylist, "%6d %6d * %s", yylineno_prev, lineno_prev, ibuf);
+// }
+// else {
+// fprintf(yylist, "%6d %6d : %s", yylineno_prev, lineno_prev, ibuf);
+// // fprintf(yylist, "%6d %6d : %s", lineCount - 1, lineno_prev, ibuf);
+// // fprintf(yylist, "%06d : %s", lineNumber - 1, ibuf);
+// }
+// }
+ }
+
+ s = fgets(buf, maxsize, yyin);
+// lineNumber++;
+
+ if (s == NULL) {
+// strcpy(ibuf, "\n");
+ strcpy(ibuf, "");
+ /* lineno_prev = lineno; */
+ zzlineno_prev = zzlineno;
+ lineNumber_prev = lineNumber;
+ fsp_prev = fsp;
+ result_prev = YY_NULL;
+ result = YY_NULL;
+ return result;
+ }
+
+ result = strlen(s);
+ result_prev = result;
+ lineNumber++;
+ zzlineno++;
+
+// result = (s==NULL) ? YY_NULL: strlen(s);
+
+// if (yylist != NULL) {
+// fprintf(yylist, "%6d %s", lineCount, ibuf);
+// }
+
+ /* Remove tabs from line */
+ strcpy(ibuf, buf);
+ tabExpand(buf, ibuf);
+
+ s = buf;
+// result = (s==NULL) ? YY_NULL: strlen(s);
+ result = strlen(s);
+
+// if (globalEnvPtr->debugFlag != 0 ) {
+// fprintf(stderr, "lextrace: result[%d]=%d;\n", lineCount, result);
+// }
+
+// This code will remove the from buffer, as found in DOS format files
+//
+ if (result > 1) {
+// if (globalEnvPtr->debugFlag != 0 ) {
+// fprintf(stderr,"lextrace: buf(%d) before: |%s|\n", strlen(buf), buf);
+// }
+ if (buf[result - 2] == CHR_CR) {
+ buf[result - 2] = CHR_LF;
+ buf[result - 1] = CHR_EOS;
+// result = (s==NULL) ? YY_NULL: strlen(s);
+ result = strlen(s);
+ }
+// if (globalEnvPtr->debugFlag != 0 ) {
+// fprintf(stderr,"lextrace: buf(%d) after: |%s|\n", strlen(buf), buf);
+// fprintf(stderr, "lextrace: result[%d]=%d;\n", lineCount, result);
+// }
+ }
+
+ DEBUG_RTN_FSP("lextrace: fsp = %d:\n")
+
+ if ((result) && (fsp > 0)) {
+
+ DEBUG_RTN_DUMP("lextrace: dump{%d, %d, %d, %d} - before do_copy_replacements |%s|\n", buf)
+
+ do_copy_replacements(buf);
+
+ result = strlen(buf);
+
+ DEBUG_RTN_DUMP("lextrace: dump{%d, %d, %d, %d} after do_copy_replacements |%s|\n", buf)
+
+ }
+
+// if (yylist != NULL) {
+// /*fprintf(yylist, "%6d : %s", lineCount, buf); */
+// /* free == 1, fixed == 0 */
+// if ((globalEnvPtr->codeFormat == 0) && (result > FIXFORM_81)) {
+// fprintf(yylist, "%6d * %s", lineNumber, buf);
+// }
+// else {
+// // fprintf(yylist, "%6d : %s", lineNumber, buf);
+// fprintf(yylist, "%06d : %s", lineNumber, buf);
+// }
+// }
+
+ strcpy(ibuf, buf);
+ /* lineno_prev = lineno;; */
+ /* yylineno_prev = yylineno; */
+ /* yylineno_prev = lineNumber; */
+ fsp_prev = fsp;
+ zzlineno_prev = zzlineno;
+ lineNumber_prev = lineNumber;
+
+ result = strlen(buf);
+
+ /* free == 1, fixed == 0 */
+ if ( globalEnvPtr->codeFormat == 0 ) {
+ if (result > FIXFORM_81) {
+ }
+ if (result < FIXFORM_7) {
+ strcpy(buf, "\n");
+ }
+ if (result > FIXFORM_6) {
+ if (result < FIXFORM_73) {
+ strcpy(buf, ibuf+FIXFORM_6);
+ }
+ if (result > FIXFORM_72) {
+ strncpy(buf, ibuf+FIXFORM_6, FIXFORM_65+1);
+ buf[FIXFORM_65+1] = '\n';
+ buf[FIXFORM_65+2] = CHR_EOS;
+ }
+ }
+ }
+
+ result = strlen(buf);
+ s = buf;
+
+ return result;
+}
+
+void set_scanner_state(int i0, int i1) {
+
+ if (globalEnvPtr->codeFormat == FORMAT_FREE) {
+ BEGIN(i1);
+ }
+
+ if (globalEnvPtr->codeFormat == FORMAT_FIXED) {
+ BEGIN(i0);
+ }
+
+}
+
+void setup_scanner_state () {
+
+ /* free == 1, fixed == 0 */
+
+ if (globalEnvPtr->codeFormat == FORMAT_FREE) {
+ BEGIN(FREE) ;
+ }
+ else {
+ if (globalEnvPtr->codeFormat == FORMAT_FIXED) {
+ BEGIN(FIXED_7) ;
+ }
+ else {
+ assert(1);
+ }
+ }
+
+ fprintf (yyout, "# %d \"%s\"\n", lineno, filename);
+}
+
+void copy_switch(void) {
+
+ struct copy_symbols *tmp=NULL;
+
+ if (fsp>=MAX_COPY_DEPTH) {
+ /* yyerror("Impossible to redirect input!"); */
+ fprintf(stderr, "Copy nested too deeply (max=%d)\n", MAX_COPY_DEPTH);
+ exit(1);
+ }
+ file_stack[ fsp ].buffer = YY_CURRENT_BUFFER;
+ file_stack[ fsp ].filename = filename;
+ /* file_stack[ fsp ].lineno = lineno; */
+ file_stack[ fsp ].lineno = zzlineno;
+ zzlineno = 0;
+// file_stack[ fsp ].copybook = include_cpybook;
+// file_stack[ fsp ].copylib = include_cpylib;
+
+ DEBUG_RTN_RLIST2()
+
+ copy_symbols = NULL;
+
+ fsp++;
+ file_stack[ fsp ].last_symbol = append_copy_symbols;
+ append_copy_symbols = NULL;
+
+ DEBUG_RTN_DLIST("lextrace: fsp=%d, copybook=%s copylib=%s\n", include_cpybook, include_cpylib)
+ DEBUG_RTN_RLIST3()
+ if (find_copybook_file(include_cpybook, include_cpylib) != 0) {
+
+ fprintf(stderr, "error: copybook file %s not found\n", include_cpybook);
+
+ exit(16);
+ }
+
+ yyin = fopen( include_full_filename, "r" );
+
+ if (yyin == NULL) {
+ fprintf(stderr, "Cannot open copy file %s\n", include_full_filename);
+ exit(1);
+ }
+
+ yy_switch_to_buffer( yy_create_buffer(yyin,YY_BUF_SIZE) );
+ filename = strdup (include_full_filename);
+ lineno = 1;
+ fprintf (yyout, "# %d \"%s\"\n", lineno, filename);
+
+ copy_start_sw--;
+
+}
+
+void add_copy_replacement(char *orig_value, char *replacement) {
+
+ struct copy_symbols *cs=NULL,*tmp=NULL;
+ int i;
+
+ DEBUG_RTN_STR3("lextrace: add_copy_replacement - %s will be replaced by %s\n", orig_value, replacement)
+
+ cs = malloc(sizeof(struct copy_symbols));
+ cs->value = orig_value;
+ cs->replacement = replacement;
+ cs->next = NULL;
+ if (append_copy_symbols==NULL)
+ append_copy_symbols = cs;
+ else {
+ tmp=append_copy_symbols;
+ while (tmp->next)
+ tmp=tmp->next;
+ tmp->next = cs;
+ }
+
+ DEBUG_RTN_RLIST4()
+
+}
+
+void do_copy_replacements(char *buffer) {
+
+ struct copy_symbols *cs;
+ char *s, *s1, *tmp = NULL;
+ int len, end, i, sw, cnt;
+
+ DEBUG_RTN_FSP("lextrace: do_copy_replacements fsp = %d:\n")
+
+ // Replacement table empty
+ copy_symbols = file_stack[fsp].last_symbol;
+ if (file_stack[fsp].last_symbol == NULL) {
+
+ DEBUG_RTN_STR1("lextrace: Empty replace list \n")
+
+ return;
+ }
+
+ DEBUG_RTN_STR1("lextrace: Replace list is NOT empty \n")
+ DEBUG_RTN_RLIST()
+
+
+ // ignore comments
+ if (globalEnvPtr->codeFormat == 1) {
+ if (*buffer == CHR_ASTERIX) {
+
+ DEBUG_RTN_DUMP("lextrace: dump{%d, %d, %d, %d} Ignoring comment line |%s|\n", buffer)
+
+ return;
+ }
+ }
+ len = strlen(buffer);
+ if (len > FIXFORM_7) {
+ if (*(buffer + FIXFORM_6) == CHR_ASTERIX) {
+ // comment
+
+ DEBUG_RTN_DUMP("lextrace: dump{%d, %d, %d, %d} Ignoring comment line |%s|\n", buffer)
+
+ return;
+ }
+ }
+ else {
+ // empty line
+
+ DEBUG_RTN_STR2("lextrace: Ignoring empty fixed format line :%s:\n", buffer)
+
+ return;
+ }
+
+ DEBUG_RTN_DUMP("lextrace: dump{%d, %d, %d, %d} After comment check, Before copy replace : |%s|\n", buffer)
+
+ /*tmp = malloc(MAXLINEBUF);*/
+ tmp = malloc(YY_READ_BUF_SIZE);
+ //tmp = malloc(500);
+ //strcpy(tmp, "");
+ tmp[0]='\0';
+ s = buffer;
+ s1 = tmp;
+ len = strlen(buffer);
+ if (globalEnvPtr->codeFormat == 0) {
+ //fixed format
+ for (i=0; i FIXFORM_72) {
+ //end = len - (len - FIXFORM_72);
+ end = FIXFORM_72;
+ }
+ else {
+ end = len;
+ }
+ }
+ else {
+ // free format
+ i = 0;
+ end = len;
+ }
+
+ copy_symbols = file_stack[fsp].last_symbol;
+
+ cnt = 0;
+ for (i=i; ivalue, strlen(cs->value))) {
+ strcat(s1, cs->replacement);
+ cnt++;
+ s += strlen(cs->value);
+ i += strlen(cs->value);
+ s1 += strlen(cs->replacement);
+
+ DEBUG_RTN_STR3("lextrace: Now replacing :%s: by :%s:\n", cs->value, cs->replacement)
+
+ cs = NULL;
+ sw = 1;
+ }
+ else {
+ cs=cs->next;
+ }
+ }
+ if (sw == 0) {
+ *s1 = *s;
+ s++;
+ s1++;
+ *s1 = '\0';
+ i++;
+ }
+ }
+ }
+
+ if (cnt != 0) {
+ // Try to fix 73-80 cols.
+ if (globalEnvPtr->codeFormat == 0) { // fixed format
+ len = strlen(tmp);
+
+ DEBUG_RTN_FIXLEN("lextrace: Before 73-80 cols fix len=%d :%s:\n", len, tmp)
+
+ if (len > FIXFORM_72) {
+ sw = 0;
+ for (i=len-1; i>=FIXFORM_71; i--) {
+ s1 = tmp + i;
+ if (*s1 != ' ') {
+ sw++;
+ i = 0;
+ }
+ else {
+ s1 = tmp + i;
+ *s1 = '\0';
+ }
+ }
+ s1 = buffer + FIXFORM_71;
+ strcat(tmp, s1);
+ }
+ else {
+ if (len < FIXFORM_72) {
+ for (i=len - 1; i|\n", buffer)
+
+}
+
+void add_replace_replacement(char *orig_value, char *replacement) {
+
+ struct copy_symbols *cs,*tmp;
+ int i;
+
+ DEBUG_RTN_STR3("lextrace: add_replace_replacement - %s will be replaced by %s\n", orig_value, replacement)
+
+ cs = malloc(sizeof(struct copy_symbols));
+ cs->value = orig_value;
+ cs->replacement = replacement;
+ cs->next = NULL;
+ if (append_replace_symbols==NULL)
+ append_replace_symbols = cs;
+ else {
+ tmp=append_replace_symbols;
+ while (tmp->next)
+ tmp=tmp->next;
+ tmp->next = cs;
+ }
+
+ DEBUG_RTN_RLIST5()
+
+}
+
+void do_replace_replacements(char *buffer) {
+
+ struct copy_symbols *cs;
+ char *s, *s1, *tmp = NULL;
+ int len, end, i, sw, cnt;
+
+ DEBUG_RTN_FSP("lextrace: do_replace_replacements fsp = %d:\n")
+
+ // Replacement table empty
+ copy_symbols = file_stack[fsp].last_symbol;
+ if (file_stack[fsp].last_symbol == NULL) {
+
+ DEBUG_RTN_STR1("lextrace: Empty replace list \n")
+
+ return;
+ }
+
+ DEBUG_RTN_STR1("lextrace: Replace list is NOT empty \n")
+ DEBUG_RTN_RLIST()
+
+
+ // ignore comments
+ if (globalEnvPtr->codeFormat == 1) {
+ if (*buffer == CHR_ASTERIX) {
+
+ DEBUG_RTN_DUMP("lextrace: dump{%d, %d, %d, %d} Ignoring comment line |%s|\n", buffer)
+
+ return;
+ }
+ }
+ len = strlen(buffer);
+ if (len > FIXFORM_7) {
+ if (*(buffer + FIXFORM_6) == CHR_ASTERIX) {
+ // comment
+
+ DEBUG_RTN_DUMP("lextrace: dump{%d, %d, %d, %d} Ignoring comment line |%s|\n", buffer)
+
+ return;
+ }
+ }
+ else {
+ // empty line
+
+ DEBUG_RTN_STR2("lextrace: Ignoring empty fixed format line :%s:\n", buffer)
+
+ return;
+ }
+
+ DEBUG_RTN_DUMP("lextrace: dump{%d, %d, %d, %d} After comment check, Before copy replace : |%s|\n", buffer)
+
+ /*tmp = malloc(MAXLINEBUF);*/
+ tmp = malloc(YY_READ_BUF_SIZE);
+ //strcpy(tmp, "");
+ tmp[0]='\0';
+ s = buffer;
+ s1 = tmp;
+ len = strlen(buffer);
+ if (globalEnvPtr->codeFormat == 0) {
+ //fixed format
+ for (i=0; i FIXFORM_72) {
+ //end = len - (len - FIXFORM_72);
+ end = FIXFORM_72;
+ }
+ else {
+ end = len;
+ }
+ }
+ else {
+ // free format
+ i = 0;
+ end = len;
+ }
+
+ copy_symbols = file_stack[fsp].last_symbol;
+
+ cnt = 0;
+ for (i=i; ivalue, strlen(cs->value))) {
+ strcat(s1, cs->replacement);
+ cnt++;
+ s += strlen(cs->value);
+ i += strlen(cs->value);
+ s1 += strlen(cs->replacement);
+
+ DEBUG_RTN_STR3("lextrace: Now replacing :%s: by :%s:\n", cs->value, cs->replacement)
+
+ cs = NULL;
+ sw = 1;
+ }
+ else {
+ cs=cs->next;
+ }
+ }
+ if (sw == 0) {
+ *s1 = *s;
+ s++;
+ s1++;
+ *s1 = '\0';
+ i++;
+ }
+ }
+ }
+
+ if (cnt != 0) {
+ // Try to fix 73-80 cols.
+ if (globalEnvPtr->codeFormat == 0) { // fixed format
+ len = strlen(tmp);
+
+ DEBUG_RTN_FIXLEN("lextrace: Before 73-80 cols fix len=%d :%s:\n", len, tmp)
+
+ if (len > FIXFORM_72) {
+ sw = 0;
+ for (i=len-1; i>=FIXFORM_71; i--) {
+ s1 = tmp + i;
+ if (*s1 != ' ') {
+ sw++;
+ i = 0;
+ }
+ else {
+ s1 = tmp + i;
+ *s1 = '\0';
+ }
+ }
+ s1 = buffer + FIXFORM_71;
+ strcat(tmp, s1);
+ }
+ else {
+ if (len < FIXFORM_72) {
+ for (i=len - 1; i|\n", buffer)
+
+ if (tmp) { free(tmp); tmp=NULL; }
+}
+
+void adjust_counters(void) {
+
+ int i, l=0, c=0, sw=0;
+
+ for (i=yyleng-1; i>=0; i--) {
+ if (pp_yytext[i] == CHR_LF) {
+ l++;
+ sw=1;
+ }
+ if (sw == 0) {
+ c++;
+ }
+ }
+ lineno = lineno + l;
+ lineCount = lineCount + l;
+ lf_add = lf_add + l;
+ columnCount = c;
+
+}
+
+#ifdef DEBUG_COBPP_SCANNER
+
+void debug_rtn (const char *s, unsigned long Ccnt, unsigned long Lcnt, int Len, const char *s1) {
+
+
+ char scstate[50];
+
+ switch (YYSTATE)
+ {
+ case FREE:
+ strcpy(scstate, "FREE");
+ break;
+
+ case FIXED_7:
+ strcpy(scstate, "FIXED_7");
+ break;
+
+ case FIXED_AB:
+ strcpy(scstate, "FIXED_AB");
+ break;
+
+ case COMMENT:
+ strcpy(scstate, "COMMENT");
+ break;
+
+ case DQ_LITERAL_FIXED:
+ strcpy(scstate, "DQ_LITERAL_FIXED");
+ break;
+
+ case DQ_LITERAL_FREE:
+ strcpy(scstate, "DQ_LITERAL_FREE");
+ break;
+
+ case SQ_LITERAL_FIXED:
+ strcpy(scstate, "SQ_LITERAL_FIXED");
+ break;
+
+ case SQ_LITERAL_FREE:
+ strcpy(scstate, "SQ_LITERAL_FREE");
+ break;
+
+ default:
+ strcpy(scstate, "none");
+ break;
+ }
+
+ fprintf(stderr,
+ "debug lex %s - %s (%lu,%lu): length=%d, :%s:\n",
+ scstate,
+ s,
+ Lcnt,
+ Ccnt,
+ Len,
+ s1
+ );
+}
+
+void debug_rtn2 (const char *s1, const char *s2, int sw1, int sw2, int sw3, int sw)
+{
+ switch (sw)
+ {
+ case 3:
+ sprintf(errbuf, s1, s2);
+ break;
+
+ case 5:
+ sprintf(errbuf, s1, sw1);
+ break;
+
+ case 7:
+ sprintf(errbuf, s1, sw2);
+ break;
+
+ case 11:
+ sprintf(errbuf, s1, sw3);
+ break;
+
+ case 15:
+ sprintf(errbuf, s1, s2, sw1);
+ break;
+
+ case 21:
+ sprintf(errbuf, s1, s2, sw2);
+ break;
+
+ case 33:
+ sprintf(errbuf, s1, s2, sw3);
+ break;
+
+ case 35:
+ sprintf(errbuf, s1, sw1, sw2);
+ break;
+
+ case 105:
+ sprintf(errbuf, s1, s2, sw1, sw2);
+ break;
+
+ case 385:
+ sprintf(errbuf, s1, sw1, sw2, sw3);
+ break;
+
+ default:
+ sprintf(errbuf, "%s", s1);
+ break;
+ }
+
+ fprintf(stderr, "%s", errbuf);
+}
+
+void debug_rtn_sssd (const char *s1, const char *s2, const char *s3, int z, int sw)
+{
+ switch (sw)
+ {
+ case 3:
+ sprintf(errbuf, s1, s2);
+ break;
+
+ case 5:
+ sprintf(errbuf, s1, s3);
+ break;
+
+ case 7:
+ sprintf(errbuf, s1, z);
+ break;
+
+ case 15:
+ sprintf(errbuf, s1, s2, s3);
+ break;
+
+ case 21:
+ sprintf(errbuf, s1, s2, z);
+ break;
+
+ case 22:
+ sprintf(errbuf, s1, z, s2);
+ break;
+
+ case 105:
+ sprintf(errbuf, s1, s2, s3, z);
+ break;
+
+ case 106:
+ sprintf(errbuf, s1, z, s2, s3);
+ break;
+
+ default:
+ sprintf(errbuf, "%s", s1);
+ break;
+ }
+
+ fprintf(stderr, "%s", errbuf);
+}
+
+void debug_rtn_dump (const char *s, const char *s1, int fsln, int fsi, int gln)
+{
+ char wkbuf[MAXLINEBUF+1];
+ int ln, idx;
+
+ strcpy(wkbuf, s1);
+ ln = strlen(wkbuf);
+ idx = ln - 1;
+ if (wkbuf[idx] == CHR_LF) {
+ wkbuf[idx] = CHR_EOS;
+ }
+ fprintf(stderr, s, fsi, fsln, gln, ln, wkbuf);
+}
+
+#endif
diff --git a/cobpp/tcpphelp.h b/cobpp/tcpphelp.h
new file mode 100644
index 0000000..3431f54
--- /dev/null
+++ b/cobpp/tcpphelp.h
@@ -0,0 +1,118 @@
+//
+// Copyright (C) 2001, 2000, 1999 David Essex
+//
+// This program 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 2, or (at your option)
+// any later version.
+//
+// This program 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 this software; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+// Boston, MA 02111-1307 USA
+//
+
+
+#ifndef _TCPPHELP_H
+#define _TCPPHELP_H
+
+#ifdef TCOBPP_LANGUAGE_en
+
+/* Usage list */
+/* Usage: %s [-o ]\n" */
+static char usage_list0[] = { " [-o ]\n" };
+static char usage_list1[] = { "where are:\n\
+ -h Help (display this listing)\n\
+ -V Display version and exit\n\
+ -v Verbose mode\n\
+ -d Include debug lines\n\
+ -g Turn on debuging mode\n\
+ -t Expand tabs to space(s)\n\
+ -o Output file name (default: standard output)\n\
+ -p Listing file name \n\
+ -x Input source is in free form format\n\
+ -f Input source is in standard fixed column format\n\
+ -I Copybooks search directories \n\
+" };
+#endif
+
+#ifdef TCOBPP_LANGUAGE_fr
+
+static char usage_list0[] = { " [-o ]\n" };
+static char usage_list1[] = { "options:\n\
+ -h Affiche l'aide\n\
+ -V Affiche la version\n\
+ -v Mode verbeux\n\
+ -d Inclut les lignes de débogage\n\
+ -g Positionne le mode de débogage\n\
+ -t Transforme les tabulations en d'espace(s)\n\
+ -o Nom du fichier en sortie (défaut: sortie standard)\n\
+ -p Nom du fichier de liste\n\
+ -x Le fichier en entrée est en format libre (X/Open)\n\
+ -f Le fichier en entrée est en format standard (colonnage fixe)\n\
+ -I Répertoires de recherche des fichiers d'inclusion\n\
+" };
+#endif
+
+#ifdef TCOBPP_LANGUAGE_it
+
+static char usage_list0[] = { " [-o ]\n" };
+static char usage_list1[] = { "opzioni:\n\
+ -h Visualizza l'aiuto\n\
+ -V Versione\n\
+ -v Modalita` prolissa\n\
+ -d Include le linee di debug\n\
+ -g Attiva la modalita` di debuging\n\
+ -t Converte i 'tabs' in spazi\n\
+ -o Nome file da generare (default: standard output)\n\
+ -p Nome file del listato\n\
+ -x Il sorgente in ingresso e` formattato in modalita` libera (free form)\n\
+ -f Il sorgente in ingresso e` formattato in modalita` Standard\n\
+ -I Cartella di ricerca dei files 'Copybooks'\n\
+" };
+#endif
+
+#ifdef TCOBPP_LANGUAGE_pt_BR
+
+static char usage_list0[] = { " [-o ]\n" };
+static char usage_list1[] = { "opcoes:\n\
+ -h Mostra ajuda\n\
+ -V Mostra versao\n\
+ -v Modo verboso\n\
+ -d Inclui linhas de debug\n\
+ -g Muda para modo de debug\n\
+ -t Expande tabs para espaco(s)\n\
+ -o Nome do arquivo de saida (padrao: saida padrao)\n\
+ -p Nome do arquivo listado \n\
+ -x O arquivo de entrada esta no formato livre\n\
+ -f Arquivo de entrada esta em formato de coluna fixa padrao\n\
+ -I Diretorios de procura de copybooks\n\
+" };
+#endif
+
+#ifdef TCOBPP_LANGUAGE_es
+
+/* Usage list */
+/* Usage: %s [-o ]\n" */
+static char usage_list0[] = { " [-o son:\n\
+ -h Ayuda (muestra este listado)\n\
+ -V Muestra la versión y termina\n\
+ -v Modo detallado\n\
+ -d Incluye lineas de debug\n\
+ -g Activa el modo debug\n\
+ -t Expandir tabulados a espacios\n\
+ -o Nombre del fichero salida (defecto: salida estándar)\n\
+ -p Nombre del fichero listado\n\
+ -x El fuente de entrada está en formato libre\n\
+ -f El fuente está en formato estándar de cols fijas\n\
+ -I Directorios de búsqueda para Copybooks\n\
+" };
+#endif
+
+#endif
diff --git a/cobpp/tcpphelp.h.in b/cobpp/tcpphelp.h.in
new file mode 100644
index 0000000..5f74f70
--- /dev/null
+++ b/cobpp/tcpphelp.h.in
@@ -0,0 +1,120 @@
+//
+// Copyright (C) 2001, 2000, 1999 David Essex
+//
+// This program 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 2, or (at your option)
+// any later version.
+//
+// This program 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 this software; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+// Boston, MA 02111-1307 USA
+//
+
+
+#ifndef _TCPPHELP_H
+#define _TCPPHELP_H
+
+//#define TCOBPP_LANGUAGE_@tcob_lang@ 1
+
+#ifdef TCOBPP_LANGUAGE_en
+
+/* Usage list */
+/* Usage: %s [-o ]\n" */
+static char usage_list0[] = { " [-o ]\n" };
+static char usage_list1[] = { "where are:\n\
+ -h Help (display this listing)\n\
+ -V Display version and exit\n\
+ -v Verbose mode\n\
+ -d Include debug lines\n\
+ -g Turn on debuging mode\n\
+ -t Expand tabs to space(s)\n\
+ -o Output file name (default: standard output)\n\
+ -p Listing file name \n\
+ -x Input source is in free form format\n\
+ -f Input source is in standard fixed column format\n\
+ -I Copybooks search directories \n\
+" };
+#endif
+
+#ifdef TCOBPP_LANGUAGE_fr
+
+static char usage_list0[] = { " [-o ]\n" };
+static char usage_list1[] = { "options:\n\
+ -h Affiche l'aide\n\
+ -V Affiche la version\n\
+ -v Mode verbeux\n\
+ -d Inclut les lignes de débogage\n\
+ -g Positionne le mode de débogage\n\
+ -t Transforme les tabulations en d'espace(s)\n\
+ -o Nom du fichier en sortie (défaut: sortie standard)\n\
+ -p Nom du fichier de liste\n\
+ -x Le fichier en entrée est en format libre (X/Open)\n\
+ -f Le fichier en entrée est en format standard (colonnage fixe)\n\
+ -I Répertoires de recherche des fichiers d'inclusion\n\
+" };
+#endif
+
+#ifdef TCOBPP_LANGUAGE_it
+
+static char usage_list0[] = { " [-o ]\n" };
+static char usage_list1[] = { "opzioni:\n\
+ -h Visualizza l'aiuto\n\
+ -V Versione\n\
+ -v Modalita` prolissa\n\
+ -d Include le linee di debug\n\
+ -g Attiva la modalita` di debuging\n\
+ -t Converte i 'tabs' in spazi\n\
+ -o Nome file da generare (default: standard output)\n\
+ -p Nome file del listato\n\
+ -x Il sorgente in ingresso e` formattato in modalita` libera (free form)\n\
+ -f Il sorgente in ingresso e` formattato in modalita` Standard\n\
+ -I Cartella di ricerca dei files 'Copybooks'\n\
+" };
+#endif
+
+#ifdef TCOBPP_LANGUAGE_pt_BR
+
+static char usage_list0[] = { " [-o ]\n" };
+static char usage_list1[] = { "opcoes:\n\
+ -h Mostra ajuda\n\
+ -V Mostra versao\n\
+ -v Modo verboso\n\
+ -d Inclui linhas de debug\n\
+ -g Muda para modo de debug\n\
+ -t Expande tabs para espaco(s)\n\
+ -o Nome do arquivo de saida (padrao: saida padrao)\n\
+ -p Nome do arquivo listado \n\
+ -x O arquivo de entrada esta no formato livre\n\
+ -f Arquivo de entrada esta em formato de coluna fixa padrao\n\
+ -I Diretorios de procura de copybooks\n\
+" };
+#endif
+
+#ifdef TCOBPP_LANGUAGE_es
+
+/* Usage list */
+/* Usage: %s [-o ]\n" */
+static char usage_list0[] = { " [-o son:\n\
+ -h Ayuda (muestra este listado)\n\
+ -V Muestra la versión y termina\n\
+ -v Modo detallado\n\
+ -d Incluye lineas de debug\n\
+ -g Activa el modo debug\n\
+ -t Expandir tabulados a espacios\n\
+ -o Nombre del fichero salida (defecto: salida estándar)\n\
+ -p Nombre del fichero listado\n\
+ -x El fuente de entrada está en formato libre\n\
+ -f El fuente está en formato estándar de cols fijas\n\
+ -I Directorios de búsqueda para Copybooks\n\
+" };
+#endif
+
+#endif
diff --git a/cobpp/tcppversion.h b/cobpp/tcppversion.h
new file mode 100644
index 0000000..d00dddb
--- /dev/null
+++ b/cobpp/tcppversion.h
@@ -0,0 +1,13 @@
+#ifndef _TCOBPP_VERSION_H
+#define _TCOBPP_VERSION_H
+
+#define TCOBPP_MAJOR_VERSION "0"
+#define TCOBPP_MINOR_VERSION "41"
+#define TCOBPP_PATCH_LEVEL "3"
+#define TCOBPP_VERSION "0.41.3"
+#define TCOBPP_RELEASE_DATE "2004/09/25"
+
+#define TCOBPP_PGM_VERSION "alpha 0.41.3 (MinGW 2004/09/25)"
+
+
+#endif
diff --git a/cobpp/tcppversion.h.in b/cobpp/tcppversion.h.in
new file mode 100644
index 0000000..d1ff740
--- /dev/null
+++ b/cobpp/tcppversion.h.in
@@ -0,0 +1,13 @@
+#ifndef _TCOBPP_VERSION_H
+#define _TCOBPP_VERSION_H
+
+#define TCOBPP_MAJOR_VERSION "@TCOBPP_MAJOR_VERSION@"
+#define TCOBPP_MINOR_VERSION "@TCOBPP_MINOR_VERSION@"
+#define TCOBPP_PATCH_LEVEL "@TCOBPP_PATCH_LEVEL@"
+#define TCOBPP_VERSION "@TCOBPP_VERSION@"
+#define TCOBPP_RELEASE_DATE "@TCOBPP_RELEASE_DATE@"
+
+#define TCOBPP_PGM_VERSION "alpha @TCOBPP_VERSION@ (@host_os@ @TCOBPP_RELEASE_DATE@)"
+
+
+#endif
diff --git a/cobpp/test.code/Makefile b/cobpp/test.code/Makefile
new file mode 100644
index 0000000..c619759
--- /dev/null
+++ b/cobpp/test.code/Makefile
@@ -0,0 +1,124 @@
+#
+#
+#
+
+TESTLIB=../copybooks
+export TESTLIB
+
+prefix=../../test.code
+exec_prefix=../../compiler
+g_includes=-I/usr/local/include
+g_libraries=-L/usr/local/lib
+
+CCX=gcc
+COB=${exec_prefix}/htcobol
+COBPP=../htcobolpp
+ASM=as
+RM=rm -f
+
+COPYBOOKS= -I../copybooks -I.
+INCLUDES= -I/usr/local/include
+LIBS=${g_libraries} -L../../lib -lhtcobol -lm
+LDFLAGS=
+COBFLAGS=-P -c ${COPYBOOKS}
+ASMFLAGS=-D
+CCXFLAGS=-g ${INCLUDES}
+COBPPFLAGS= -v -I ../copybooks
+
+SRC1f = ft1.cob
+SRC2f = ft2.cob
+SRC3f = ft2.cob
+SRC1x = t1.cob
+SRC2x = t2.cob
+SRC3x = t3.cob
+
+SRC1fa = ft1-1.cob
+SRC2fa = ft2-1.cob
+SRC3fa = ft3-1.cob
+SRC1xa = t1-1.cob
+SRC2xa = t2-1.cob
+SRC3xa = t3-1.cob
+
+
+OBJS1fa = $(SRC1fa:.cob=.o)
+OBJS2fa = $(SRC2fa:.cob=.o)
+OBJS3fa = $(SRC3fa:.cob=.o)
+OBJS1xa = $(SRC1xa:.cob=.o)
+OBJS2xa = $(SRC2xa:.cob=.o)
+OBJS3xa = $(SRC3xa:.cob=.o)
+OBJS = $(OBJS1fa) $(OBJS2fa) $(OBJS3fa) $(OBJS1xa) $(OBJS2xa) $(OBJS3xa)
+
+PROG1f = ft1
+PROG2f = ft2
+PROG3f = ft3
+PROG1x = t1
+PROG2x = t2
+PROG3x = t3
+#PROGS = $(PROG1f) $(PROG2f) $(PROG3f) $(PROG1x) $(PROG2x) $(PROG3x)
+
+PROGS = $(SRC1fa) $(SRC2fa) $(SRC3fa) $(SRC1xa) $(SRC2xa) $(SRC3xa)
+
+include ${prefix}/config/C.rules.in
+#include ${prefix}/config/COB.rules.in
+#
+# Rules for compiling .cob sources
+.SUFFIX: .cob .o
+
+%.o: %.cob
+ $(COB) $(COBFLAGS) $<
+# $(ASM) $(ASMFLAGS) -o $*.o -a=$*.listing.0.txt $*.s
+# @grep -v 'LISTING' $*.listing.0.txt | sed '/^$$/d' >$*.s.txt
+# @${RM} $*.listing.0.txt
+#
+
+all: ${PROGS}
+
+${PROG1f}: ${OBJS1fa} ${SRC1fa}
+ $(CCX) -g -o $@ ${OBJS1fa} $(LDFLAGS) $(LIBS)
+# strip $@
+
+${PROG2f}: ${OBJS2fa} ${SRC2fa}
+ $(CCX) -g -o $@ ${OBJS2fa} $(LDFLAGS) $(LIBS)
+# strip $@
+
+${PROG3f}: ${OBJS3fa} ${SRC3fa}
+ $(CCX) -g -o $@ ${OBJS3fa} $(LDFLAGS) $(LIBS)
+# strip $@
+
+${PROG1x}: ${OBJS1xa} ${SRC1xa}
+ $(CCX) -g -o $@ ${OBJS1xa} $(LDFLAGS) $(LIBS)
+# strip $@
+
+${PROG2x}: ${OBJS2xa} ${SRC2xa}
+ $(CCX) -g -o $@ ${OBJS2xa} $(LDFLAGS) $(LIBS)
+# strip $@
+
+${PROG3x}: ${OBJS3xa} ${SRC3xa}
+ $(CCX) -g -o $@ ${OBJS3xa} $(LDFLAGS) $(LIBS)
+# strip $@
+
+
+${SRC1fa}:
+ $(COBPP) $(COBPPFLAGS) -f ${SRC1f} -o ${SRC1fa} -p ${SRC1f}.txt
+
+${SRC2fa}:
+ $(COBPP) $(COBPPFLAGS) -f ${SRC2f} -o ${SRC2fa} -p ${SRC2f}.txt
+
+${SRC3fa}:
+ $(COBPP) $(COBPPFLAGS) -f ${SRC3f} -o ${SRC3fa} -p ${SRC3f}.txt
+
+${SRC1xa}:
+ $(COBPP) $(COBPPFLAGS) -x ${SRC1x} -o ${SRC1xa} -p ${SRC1x}.txt
+
+${SRC2xa}:
+ $(COBPP) $(COBPPFLAGS) -x ${SRC2x} -o ${SRC2xa} -p ${SRC2x}.txt
+
+${SRC3xa}:
+ $(COBPP) $(COBPPFLAGS) -x ${SRC3x} -o ${SRC3xa} -p ${SRC3x}.txt
+
+
+clean:
+ @${RM} ${OBJS} $(PROGS) $(SRC1a) $(SRC2a) $(SRC3a) $(SRC4a) $(SRC5a) \
+ *cob.txt *.lis *.s *s.txt *.trace.txt trace*txt core \
+ t[0-9]-1.cob ft[0-9]-1.cob
+
diff --git a/cobpp/test.code/Readme.txt b/cobpp/test.code/Readme.txt
new file mode 100644
index 0000000..c080526
--- /dev/null
+++ b/cobpp/test.code/Readme.txt
@@ -0,0 +1,29 @@
+TC pre-processor test COBOL programs.
+
+How to run test program:
+r.sh - will test run for all programs
+or
+r.sh [ -f|x(format) f=fixed x=open filename(s)] - will run selected file
+
+The shell script will run make and create a trace files *.trace.txt.
+
+To run type(example) - no suffix required .cob is assumed:
+r.sh -f ft3
+
+To clean type make clean.
+
+Notes:
+make program may not work.
+Some copybooks require that the 'TESTLIB' environment variable be defined.
+
+TESTLIB='../copybooks'
+export TESTLIB
+
+fixed: -f
+../htcobolpp -v -d -I ../copybooks -f ft1.cob -o ft1-1.cob -p ft1.cob.txt 2>trace.ft1.2.txt
+../htcobolpp -v -d -I ../copybooks -f ft2.cob -o ft2-1.cob -p ft2.cob.txt 2>trace.ft2.2.txt
+../htcobolpp -v -d -I ../copybooks -f ft3.cob -o ft3-1.cob -p ft3.cob.txt 2>trace.ft3.2.txt
+
+open: -x
+../htcobolpp -v -d -I ../copybooks -x t1.cob -o t1-1.cob -p t1.cob.txt 2>trace.t1.2.txt
+../htcobolpp -v -d -I ../copybooks -x t2.cob -o t2-1.cob -p t2.cob.txt 2>trace.t2.2.txt
diff --git a/cobpp/test.code/ft1.cob b/cobpp/test.code/ft1.cob
new file mode 100644
index 0000000..2a51dbd
--- /dev/null
+++ b/cobpp/test.code/ft1.cob
@@ -0,0 +1,71 @@
+000010 IDENTIFICATION DIVISION.
+000020 PROGRAM-ID. fTEST1.
+000030 ENVIRONMENT DIVISION.
+000040 CONFIGURATION SECTION.
+000045* SOURCE-COMPUTER. X86 WITH DEBUGGING MODE.
+000046* SOURCE-COMPUTER.
+000047* X86 WITH DEBUGGING MODE.
+000048 SOURCE-COMPUTER.
+000049 X86.
+000050* SPECIAL-NAMES.
+000060* DECIMAL-POINT IS COMMA.
+000070 INPUT-OUTPUT SECTION.
+000080 FILE-CONTROL.
+000090 DATA DIVISION.
+000100 FILE SECTION.
+000110
+000120 WORKING-STORAGE SECTION.
+000130 01 XX.
+000140 05 X1 PIC 9(4) VALUE 0.
+000150 05 X2 PIC 9(4) VALUE 0.
+000160 01 W01-COMPUTE-E PIC S9(5)V99 USAGE COMP VALUE 99876.
+000170 01 W01-COMPUTE-X PIC X(50) VALUE "aaaaaaaaaaaaaaaaaaaaaaaaaaa
+000180- "bbbbbbbbbbbbbbbbbbbbbbb".
+000170 01 W01-COMPUTE-Y PIC X(54) VALUE "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+000180- "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+000180- "ccccccccccccccccccccccc".
+000170 01 W01-COMPUTE-Z PIC X(54) VALUE "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+000180- "bbbbbbbbbbbbbbbbbbbbbbb".
+000190
+000200 CoPy 'fTEST02.cpy' IN TESTLIB REPLACING
+000210* W01-COMPUTE-E BY W01-COMPUTE-EE
+000280* ==9(5)== BY ==9(04)==
+000280* ==9(6)== BY ==9(06)==
+000280* == 02 == BY == 05 == .
+000260* COPY 'fTEST02.cpy'.
+000260* Copy 'fTEST02.cpy' IN "Test.lib" REPLACING
+000260* COPY 'fTEST02.cpy' REPLACING
+000260* COPY 'fTEST02.cpy' IN TESTLIB REPLACING
+000270 W01-COMPUTE-0 BY W01-COMPUTE-00,
+000270 'W01-1XXX' BY 'W01-2',
+000280 ==9(5)== BY ==9(04)== . fTEST021
+000290
+000291 COPY 'fTEST02.cpy' IN TESTLIB REPLACING
+000292 W01-COMPUTE-0 BY 000-W01-COMPUTE-000
+000293 'W01-1XXX' BY 'W01-3'
+000294 ==9(5)== BY ==9(07)== . fTEST022
+000295
+000300 PROCEDURE DIVISION.
+000310
+000320 A-000.
+000330
+000340* READY TRACE.
+000345D DISPLAY "READY TRACE".
+000350
+000360 PERFORM A-100.
+000370
+000375D DISPLAY "RESET TRACE".
+000380* RESET TRACE.
+000390
+000400 STOP RUN.
+000410
+000420 A-100.
+000430
+000440* DISPLAY "ENTER A-100".
+000450
+000460 MOVE 1 TO X1.
+000470 ADD 1 TO X1.
+000480 MOVE X1 TO X2.
+000490
+000500* DISPLAY "EXIT A-100".
+000510
diff --git a/cobpp/test.code/ft2.cob b/cobpp/test.code/ft2.cob
new file mode 100644
index 0000000..a96aabf
--- /dev/null
+++ b/cobpp/test.code/ft2.cob
@@ -0,0 +1,67 @@
+000010 IDENTIFICATION DIVISION. ft2_____
+000020 PROGRAM-ID. fTEST2. ft2_____
+000030 ENVIRONMENT DIVISION. ft2_____
+000040 CONFIGURATION SECTION. ft2_____
+000050* SPECIAL-NAMES. ft2_____
+000060* DECIMAL-POINT IS COMMA. ft2_____
+000070 INPUT-OUTPUT SECTION. ft2_____
+000080 FILE-CONTROL. ft2_____
+000090 DATA DIVISION. ft2_____
+000100 FILE SECTION. ft2_____
+000110 ft2_____
+000120 WORKING-STORAGE SECTION. ft2_____
+000130 01 XX. ft2_____
+000140 05 X1 PIC 9(4) VALUE 0. ft2_____
+000150 05 X2 PIC 9(4) VALUE 0. ft2_____
+000160 01 W01-COMPUTE-E PIC S9(5)V99 USAGE COMP VALUE 99876. ft2_____
+000170 01 W01-COMPUTE-X PIC X(50) VALUE "aaaaaaaaaaaaaaaaaaaaaaaaaa""'' ft2_____
+000180- "bbbbbbbbbbbbbbbbbbbbbbb". ft2_____
+000170 01 W01-COMPUTE-Y PIC X(54) VALUE "cccccccccccccccccccccccccccccccft2_____
+000180- "ddddddddddddddddddddddddddddddddddddddddddddddddddft2_____
+000180- "eeeeeeeeeeeeeeeeeeeeeee". ft2_____
+000190 01 W01-COMPUTE-Z PIC X(54) VALUE 'fffffff '' """ffffffffffffffffft2_____
+000200- 'ggggggggggggggggggggggg'. ft2_____
+000210 ft2_____
+000211 01 W01-COMPUTE-C PIC X(54) VALUE 'fffffff ' ft2_____
+000212 & ft2_____
+000213 'ggggggggggggggggggggggg '. ft2_____
+000214 ft2_____
+000220* CoPy 'fTEST02.cpy' IN TESTLIB REPLACING ft2_____
+000230* W01-COMPUTE-E BY W01-COMPUTE-EE ft2_____
+000240* ==9(5)== BY ==9(04)== ft2_____
+000250* ==9(6)== BY ==9(06)== ft2_____
+000260* == 02 == BY == 05 == . ft2_____
+000270* COPY 'fTEST02.cpy'. ft2_____
+000280* Copy 'fTEST02.cpy' IN "Test.lib" REPLACING ft2_____
+000290* COPY 'fTEST02.cpy' REPLACING ft2_____
+000300* COPY 'fTEST02.cpy' IN TESTLIB REPLACING ft2_____
+000310* W01-COMPUTE-0 BY W01-COMPUTE-00 ft2_____
+000320* 'W01-1XXX' BY 'W01-2' ft2_____
+000330* ==9(5)== BY ==9(04)== . ft2_____
+000340* ft2_____
+000350* COPY 'fTEST02.cpy' IN TESTLIB REPLACING ft2_____
+000360* W01-COMPUTE-0 BY W01-COMPUTE-000 ft2_____
+000370* 'W01-1XXX' BY 'W01-3' ft2_____
+000380* ==9(5)== BY ==9(07)== . ft2_____
+000390 ft2_____
+000400 PROCEDURE DIVISION. ft2_____
+000410 ft2_____
+000420 A-000. ft2_____
+000430 ft2_____
+000440* READY TRACE. ft2_____
+000450 ft2_____
+000460 PERFORM A-100. ft2_____
+000470 ft2_____
+000480* RESET TRACE. ft2_____
+000490 ft2_____
+000500 STOP RUN. ft2_____
+000510 ft2_____
+000520 A-100. ft2_____
+000530 ft2_____
+000540 DISPLAY "ENTER A-100". ft2_____
+000550 ft2_____
+000560 MOVE 1 TO X1. ft2_____
+000570 ADD 1 TO X1. ft2_____
+000580 MOVE X1 TO X2. ft2_____
+000590 ft2_____
+000600 DISPLAY "EXIT A-100". ft2_____
diff --git a/cobpp/test.code/ft3.cob b/cobpp/test.code/ft3.cob
new file mode 100644
index 0000000..97a4968
--- /dev/null
+++ b/cobpp/test.code/ft3.cob
@@ -0,0 +1,69 @@
+000010 IDENTIFICATION DIVISION. ft3_____
+000020 PROGRAM-ID. fTEST3. ft3_____
+000030 ENVIRONMENT DIVISION. ft3_____
+000040 CONFIGURATION SECTION. ft3_____
+000050* SPECIAL-NAMES. ft3_____
+000060* DECIMAL-POINT IS COMMA. ft3_____
+000070 INPUT-OUTPUT SECTION. ft3_____
+000080 FILE-CONTROL. ft3_____
+000090 DATA DIVISION. ft3_____
+000100 FILE SECTION. ft3_____
+000110 ft3_____
+000120 WORKING-STORAGE SECTION. ft3_____
+000130 01 XX. ft3_____
+000140 05 X1 PIC 9(4) VALUE 0. ft3_____
+000150 05 X2 PIC 9(4) VALUE 0. ft3_____
+000151 05 X4 PIC 9(4) VALUE 66.ft3_____
+000152 05 X5 PIC 9(4) VALUE 88ft3_____
+000153 . ft3_____
+000154 05 X6 PIC 9(4) VALUEft3_____
+000155 99. ft3_____
+000160 01 W01-COMPUTE-E PIC S9(5)V99 USAGE COMP VALUE 99876. ft3a____
+000170 01 W01-COMPUTE-X PIC X(50) VALUE "aaaaaaaaaaaaaaaaaaaaaaaaaaa ft3b____
+000180- "bbbbbbbbbbbbbbbbbbbbbbb". ft3c____
+000190 01 W01-COMPUTE-Z PIC X(54) VALUE "cccccccccccccccccccccccccccccccft3d____
+000200- "ddddddddddddddddddddddd". ft3e____
+000210 ft3f____
+000220*----------------------------------------------------------------*ft3g____
+000220* CoPy 'fTEST02.cpy' IN TESTLIB REPLACING ft3g____
+000230* W01-COMPUTE-E BY W01-COMPUTE-EE ft3_____
+000240* ==9(5)== BY ==9(04)== ft3_____
+000250* ==9(6)== BY ==9(06)== ft3_____
+000260* == 02 == BY == 05 == . ft3_____
+000270* COPY fTEST02C. ft3_____
+000265* REPLACE ==9(5)== BY ==9(07)==. ft3_____
+000270 COPY fTEST02D. ft3_____
+000280* Copy 'fTEST02.cpy' IN "Test.lib". ft3_____
+000280* Copy 'fTEST02.cpy' IN "Test.lib" REPLACING ft3_____
+000290* COPY 'fTEST02.cpy' REPLACING ft3_____
+000300* COPY 'fTEST02.cpy' IN TESTLIB REPLACING ft3_____
+000310* W01-COMPUTE-0 BY W01-COMPUTE-00 ft3_____
+000320* 'W01-1XXX' BY 'W01-2' ft3_____
+000330* ==9(5)== BY ==9(04)== . ft3_____
+000340* ft3_____
+000350* COPY 'fTEST02.cpy' IN TESTLIB REPLACING ft3_____
+000360* W01-COMPUTE-0 BY W01-COMPUTE-000 ft3_____
+000370* 'W01-1XXX' BY 'W01-3' ft3_____
+000380* ==9(5)== BY ==9(07)== . ft3_____
+000390 ft3_____
+000400 PROCEDURE DIVISION. ft3_____
+000410 ft3_____
+000420 A-000. ft3_____
+000430 ft3_____
+000440* READY TRACE. ft3_____
+000450 ft3_____
+000460 PERFORM A-100. ft3_____
+000470 ft3_____
+000480* RESET TRACE. ft3_____
+000490 ft3_____
+000500 STOP RUN. ft3_____
+000510 ft3_____
+000520 A-100. ft3_____
+000530 ft3_____
+000540 DISPLAY "ENTER A-100". ft3_____
+000550 ft3_____
+000560 MOVE 1 TO X1. ft3_____
+000570 ADD 1 TO X1. ft3_____
+000580 MOVE X1 TO X2. ft3_____
+000590 ft3_____
+000600 DISPLAY "EXIT A-100". ft3_____
diff --git a/cobpp/test.code/r.sh b/cobpp/test.code/r.sh
new file mode 100644
index 0000000..232e978
--- /dev/null
+++ b/cobpp/test.code/r.sh
@@ -0,0 +1,80 @@
+#!/bin/bash -
+#
+# This shell script will run make and create trace.txt
+# cmd: r.sh [ -f|x(format) f=fixed x=open filename(s)]
+# David Essex August 1999
+#
+e0a="invalid number of parms..."
+e0b="invalid option(s) "
+e0c="This shell script will run make and create trace.txt"
+e0d="cmd: r.sh [ -f|x(format) f=fixed x=open filename(s)]"
+#
+p_print1 ()
+{
+for arg in "$@"
+do
+ echo $arg >&2
+done
+}
+#
+TESTLIB=../copybooks
+export TESTLIB
+#
+prglst_f='ft1 ft2 ft3'
+prglst_x='t1 t2 t3'
+prg=''
+#
+p_main ()
+{
+ ftype=$1
+ shift
+ for prg in "$@"
+ do
+ if [ \( ! -f "$prg.cob" \) -o \( ! -r "$prg.cob" \) ]
+ then
+ e1="error: filename $prg.cob not found or not readable... skipping file"
+ p_print1 "$e1"
+ else
+ echo "processing $prg.cob ... "
+# p_print1 "$e1"
+# cp1=`cat w/copypathlen_1290.txt`
+# pp=/usr/local/share/htcobol/htcobolpp-0.54
+# pp=/usr/local/share/htcobol/htcobolpp-0.55
+ pp=../htcobolpp
+# pp=../htcobolpp.0
+# e2="$pp -v -g -d -t 8 -I$cp1 -I.:../copybooks $ftype $prg.cob -o $prg-1.cob -p $prg.cob.txt "
+# e2="$pp -v -d -t 8 -I$cp1 -I.:../copybooks $ftype $prg.cob -o $prg-1.cob -p $prg.cob.txt "
+ e2="$pp -v -g -d -t 8 -I.:../copybooks $ftype $prg.cob -o $prg-1.cob -p $prg.cob.txt "
+# e2="$pp -v -g -t 8 -I.:../copybooks $ftype $prg.cob -o $prg-1.cob -p $prg.cob.txt "
+ echo "$e2"
+ $e2 2>$prg.run.err.trace.txt | tee -a $prg.run.trace.txt
+ echo "(done)"
+ fi
+ done
+}
+#
+if [ "$#" -eq 0 ]
+then
+ make clean
+ p_main -f $prglst_f
+ p_main -x $prglst_x
+else
+ ft=$1
+ shift
+#
+ case "$ft"
+ in
+ -f)
+ p_main $ft $@
+ ;;
+ -x)
+ p_main $ft $@
+ ;;
+ *)
+ e1="$e0b$ft ..."
+ p_print1 "$e1" "$e0c" "$e0d"
+ ;;
+ esac
+#
+fi
+#
diff --git a/cobpp/test.code/t1.cob b/cobpp/test.code/t1.cob
new file mode 100644
index 0000000..69a9ba8
--- /dev/null
+++ b/cobpp/test.code/t1.cob
@@ -0,0 +1,67 @@
+IDENTIFICATION DIVISION.
+PROGRAM-ID. TEST1.
+ENVIRONMENT DIVISION.
+CONFIGURATION SECTION.
+* SPECIAL-NAMES.
+* DECIMAL-POINT IS COMMA.
+INPUT-OUTPUT SECTION.
+FILE-CONTROL.
+DATA DIVISION.
+FILE SECTION.
+
+WORKING-STORAGE SECTION.
+01 XX.
+ 05 X1 PIC 9(4) VALUE 0.
+ 05 X2 PIC 9(4) VALUE 0.
+01 W01-COMPUTE-E PIC S9(5)V99 USAGE COMP VALUE 99876.
+01 W01-COMPUTE-E PIC S9(5)V99 USAGE COMP VALUE 99876.
+01 W01-COMPUTE-X PIC X(50) VALUE "aaaaaaaaaaaaaaaaaaaaaaaaaaa
+- "bbbbbbbbbbbbbbbbbbbbbbb".
+01 W01-COMPUTE-Y PIC X(54) VALUE "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+- "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+- "ccccccccccccccccccccccc".
+01 W01-COMPUTE-Z PIC X(54) VALUE "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+- "bbbbbbbbbbbbbbbbbbbbbbb".
+
+
+* CoPy 'TEST02.cpy' IN TESTLIB REPLACING
+* W01-COMPUTE-E BY W01-COMPUTE-EE
+* ==9(5)== BY ==9(04)==
+* ==9(6)== BY ==9(06)==
+* == 02 == BY == 05 == .
+* COPY 'TEST02.cpy'.
+* Copy 'TEST02.cpy' IN "Test.lib" REPLACING
+* COPY 'TEST02.cpy' REPLACING
+COPY 'TEST02.cpy' IN TESTLIB REPLACING
+ W01-COMPUTE-0 BY W01-COMPUTE-00
+ 'W01-1XXX' BY 'W01-2'
+ ==9(5)== BY ==9(04)== .
+
+COPY 'TEST02.cpy' IN TESTLIB REPLACING
+ W01-COMPUTE-0 BY 000W01-COMPUTE-000
+ 'W01-1XXX' BY 'W01-3'
+ ==9(5)== BY ==9(07)== .
+
+PROCEDURE DIVISION.
+
+A-000.
+
+* READY TRACE.
+D DISPLAY "READY TRACE".
+
+ PERFORM A-100.
+
+D DISPLAY "RESET TRACE".
+* RESET TRACE.
+
+ STOP RUN.
+
+A-100.
+
+ DISPLAY "ENTER A-100".
+
+ MOVE 1 TO X1.
+ ADD 1 TO X1.
+ MOVE X1 TO X2.
+
+ DISPLAY "EXIT A-100".
diff --git a/cobpp/test.code/t2.cob b/cobpp/test.code/t2.cob
new file mode 100644
index 0000000..c83944a
--- /dev/null
+++ b/cobpp/test.code/t2.cob
@@ -0,0 +1,64 @@
+IDENTIFICATION DIVISION.
+PROGRAM-ID. TEST2.
+ENVIRONMENT DIVISION.
+CONFIGURATION SECTION.
+* SPECIAL-NAMES.
+* DECIMAL-POINT IS COMMA.
+INPUT-OUTPUT SECTION.
+FILE-CONTROL.
+DATA DIVISION.
+FILE SECTION.
+
+WORKING-STORAGE SECTION.
+01 XX.
+ 05 X1 PIC 9(4) VALUE 0.
+ 05 X2 PIC 9(4) VALUE 0.
+ 05 X3 PIC 9(4)V99 VALUE .33.
+01 W01-COMPUTE-C PIC X(54) VALUE 'fffffff '
+ &
+ 'ggggggggggggggggggggggg '
+ &
+ 'hhhhhhhhhhhhhhhhhhhhhhh '.
+01 W01-COMPUTE-E PIC S9(5)V99 USAGE COMP VALUE 99876.
+
+* COPY TEST02D.
+* COPY TEST02E IN TEST-LIB.
+* COPY 'copybooks2/TEST02F'.
+* COPY 'copybooks2/TEST02F' IN TEST-LIB.
+* COPY '/root/copybooks2/TEST02F' IN TEST-LIB.
+* COPY '/root/copybooks2/TEST02F'.
+* COPY /root/copybooks2/TEST02F.
+* COPY TEST02C.cpy .
+COPY TEST02C.
+
+COPY TEST02 IN TESTLIB REPLACING
+ W01-COMPUTE-0 BY W01-COMPUTE-00,
+ 'W01-1XXX' BY 'W01-2',
+ ==9(5)== BY ==9(04)== .
+
+COPY TEST02 IN TESTLIB REPLACING
+ W01-COMPUTE-0 BY W01-COMPUTE-000
+ 'W01-1XXX' BY 'W01-3'
+ ==9(5)== BY ==9(07)== .
+
+PROCEDURE DIVISION.
+
+A-000.
+
+* READY TRACE.
+
+ PERFORM A-100.
+
+* RESET TRACE.
+
+ STOP RUN.
+
+A-100.
+
+ DISPLAY "ENTER A-100".
+
+ MOVE 1 TO X1.
+ ADD 1 TO X1.
+ MOVE X1 TO X2.
+
+ DISPLAY "EXIT A-100".
diff --git a/cobpp/test.code/t3.cob b/cobpp/test.code/t3.cob
new file mode 100644
index 0000000..c09cd10
--- /dev/null
+++ b/cobpp/test.code/t3.cob
@@ -0,0 +1,54 @@
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. TEST3.
+ ENVIRONMENT DIVISION.
+ CONFIGURATION SECTION.
+* SPECIAL-NAMES.
+* DECIMAL-POINT IS COMMA.
+ INPUT-OUTPUT SECTION.
+ FILE-CONTROL.
+ DATA DIVISION.
+ FILE SECTION.
+
+ WORKING-STORAGE SECTION.
+
+ REPLACE ==9(5)== BY ==9(07)==.
+
+ 01 XX.
+ 05 X1 PIC 9(4) VALUE 0.
+ 05 X2 PIC 9(4) VALUE 0.
+ 05 X3 PIC 9(4)V99 VALUE .33.
+ 01 W01-COMPUTE-E PIC S9(5)V99 USAGE COMP VALUE 99876.
+ 01 W01-CATSTR PIC X(30) VALUE "0123456789" &
+ "0123456789" & *< test of in-line comment
+ "0123456789".
+
+* COPY 'TEST02C.cpy' .
+ COPY TEST02C.
+
+ COPY TEST02 IN TESTLIB REPLACING
+ W01-COMPUTE-0 BY W01-COMPUTE-00,
+ 'W01-1XXX' BY 'W01-2',
+ ==9(5)== BY ==9(04)== .
+
+
+ PROCEDURE DIVISION.
+
+ A-000.
+
+* READY TRACE.
+
+ PERFORM A-100.
+
+* RESET TRACE.
+
+ STOP RUN.
+
+ A-100.
+
+ DISPLAY "ENTER A-100".
+
+ MOVE 1 TO X1.
+ ADD 1 TO X1.
+ MOVE X1 TO X2.
+
+ DISPLAY "EXIT A-100".
diff --git a/cobroutines/Makefile b/cobroutines/Makefile
new file mode 100644
index 0000000..6628d09
--- /dev/null
+++ b/cobroutines/Makefile
@@ -0,0 +1,167 @@
+#
+# Makefile.in for the Tiny COBOL compiler runtime routines library
+#
+
+#
+# Debug flags are set in htconfig.h
+# -DPICTURE_TESTING -DDEBUG_RTS
+#
+CCX=gcc
+ASM=as
+
+INCLUDES=-I/usr/include -I/usr/local/include -I/usr/include/glibc -I/c/tcl/include -I../lib -I.. -I. -I/c/PostgreSQL/include
+
+CCXFLAGS=${INCLUDES} -Wall
+
+WRES=windres
+WRESFLAGS=-O coff
+
+RANLIB=ranlib
+AR=ar
+
+lib_dir=C:/TinyCOBOL
+
+INSTRC=${lib_dir}
+RCFILE=htrtconf
+
+INSTALL=install.exe
+INSTALL_DATA=${INSTALL}
+
+MV = mv -f
+RM = rm -f
+LNK = ln -sf
+MKDIR = mkdir -p
+
+#
+
+LIBS1=-L/usr/local/lib -L/c/mingw/lib -lpdcurses
+LIBS2=-L/usr/local/lib /d/tinycobol/tcltk84/tcl84.dll /d/tinycobol/tcltk84/tk84.dll
+LIBS3=-L/usr/local/lib -L/c/PostgreSQL/lib -lpq
+
+#
+# Default install directory is set in htconfig.h
+#
+
+lib_version=0.73.0
+
+lib_name1=tcroutines
+lib_name2=tctcl
+lib_name3=tcpgres
+
+#
+# Libraries to build
+#
+STATIC_LIB1=lib${lib_name1}.a
+SHARED_LIB1=${lib_name1}.dll
+SHARED_LIB1A=${lib_name1}.dll.a
+
+STATIC_LIB2=lib${lib_name2}.a
+SHARED_LIB2=${lib_name2}.dll
+SHARED_LIB2A=${lib_name2}.dll.a
+
+STATIC_LIB3=lib${lib_name3}.a
+SHARED_LIB3=${lib_name3}.dll
+SHARED_LIB3A=${lib_name3}.dll.a
+
+#
+# Sources list
+#
+SRC1 = screen.c dir.c files.c globals.c system.c
+OBJS1 = $(SRC1:.c=.o)
+
+SRC2 = tctcl.c
+OBJS2 = $(SRC2:.c=.o)
+
+SRC3 = sql_clear_query.c sql_connect_db.c sql_disconnect_db.c sql_exec_query.c \
+ sql_free_memory.c sql_get_tuple.c sql_get_value.c sql_max_field.c sql_max_tuple.c sql_status_message.c
+OBJS3 = $(SRC3:.c=.o)
+
+#
+# Rules for compiling .c .s sources
+#
+.SUFFIX: .c .o .lo
+.c.o:
+ $(CCX) $(CCXFLAGS) -c $<
+
+%.lo: %.c
+ $(CCX) $(CCXFLAGS1) -c $< -o $@
+
+#
+# Notes on building and using the shared htcobol library.
+# - The linker will try to use the shared libraries by default.
+# If not available it will try to use the static libraries.
+# - When linking with a shared htcobol library, all other libraries must be
+# named, whether they are used in the cobol program or not.
+# (i.e. -lncurses -ldb)
+# - To run a cobol program built with a shared htcobol library, and the
+# htcobol library is not installed in one of the standard locations, use
+# the $LD_LIBRARY_PATH environmental variable to add this path.
+# (i.e. export LD_LIBRARY_PATH=this path:$LD_LIBRARY_PATH )
+# - For testing purposes, it is recommended that only a static htcobol library
+# be used, since gdb will not work properly with shared libraries.
+#
+
+all: static-libs
+devel: static-libs shared-libs
+
+static-libs: ${STATIC_LIB1} ${STATIC_LIB2} ${STATIC_LIB3}
+shared-libs: ${SHARED_LIB1} ${SHARED_LIB2} ${SHARED_LIB3}
+
+#
+# Rules for building the static libraries
+#
+${STATIC_LIB1}: ${OBJS1}
+ ${AR} cr ${STATIC_LIB1} ${OBJS1}
+ ${RANLIB} ${STATIC_LIB1}
+
+${STATIC_LIB2}: ${OBJS2}
+ ${AR} cr ${STATIC_LIB2} ${OBJS2}
+ ${RANLIB} ${STATIC_LIB2}
+
+${STATIC_LIB3}: ${OBJS3}
+ ${AR} cr ${STATIC_LIB3} ${OBJS3}
+ ${RANLIB} ${STATIC_LIB3}
+
+#
+# Rules for building the shared libraries
+#
+${SHARED_LIB1}: ${OBJS1}
+ ${CCX} -shared -Wl,--out-implib,${lib_name1}.dll.a,--output-def,${lib_name1}.def -o ${SHARED_LIB1} $(OBJS1) ${LIBS1}
+
+${SHARED_LIB2}: ${OBJS2}
+ ${CCX} -shared -Wl,--out-implib,${lib_name2}.dll.a,--output-def,${lib_name2}.def -o ${SHARED_LIB2} $(OBJS2) ${LIBS2}
+
+${SHARED_LIB3}: ${OBJS3}
+ ${CCX} -shared -Wl,--out-implib,${lib_name3}.dll.a,--output-def,${lib_name3}.def -o ${SHARED_LIB3} $(OBJS3) ${LIBS3}
+
+#
+# Rule for cleaning
+#
+clean:
+ @${RM} ${OBJS1} ${OBJS2} ${OBJS3} \
+ ${STATIC_LIB1} ${SHARED_LIB1} ${SHARED_LIB1A} \
+ ${STATIC_LIB2} ${SHARED_LIB2} ${SHARED_LIB2A} \
+ ${STATIC_LIB3} ${SHARED_LIB3} ${SHARED_LIB3A} \
+ core *.bak *.o *.lo
+
+#
+# Rule for installing
+#
+install: install-dir install-static install-shared
+
+install-static: ${STATIC_LIB1} ${STATIC_LIB2} ${STATIC_LIB3}
+# ${INSTALL} ${STATIC_LIB1} ${lib_dir}/${STATIC_LIB1}
+# ${INSTALL} ${STATIC_LIB2} ${lib_dir}/${STATIC_LIB2}
+# ${INSTALL} ${STATIC_LIB3} ${lib_dir}/${STATIC_LIB3}
+
+install-shared: ${SHARED_LIB1} ${SHARED_LIB2} ${SHARED_LIB3}
+ ${INSTALL} ${SHARED_LIB1} ${lib_dir}/${SHARED_LIB1}
+ ${INSTALL} ${SHARED_LIB2} ${lib_dir}/${SHARED_LIB2}
+ ${INSTALL} ${SHARED_LIB3} ${lib_dir}/${SHARED_LIB3}
+# ${INSTALL} ${SHARED_LIB1A} ${lib_dir}/${SHARED_LIB1A}
+# ${INSTALL} ${SHARED_LIB2A} ${lib_dir}/${SHARED_LIB2A}
+# ${INSTALL} ${SHARED_LIB3A} ${lib_dir}/${SHARED_LIB3A}
+
+install-dir:
+ $(MKDIR) $(INSTRC)
+
diff --git a/cobroutines/Makefile.mingw b/cobroutines/Makefile.mingw
new file mode 100644
index 0000000..f6319a1
--- /dev/null
+++ b/cobroutines/Makefile.mingw
@@ -0,0 +1,167 @@
+#
+# Makefile.in for the Tiny COBOL compiler runtime routines library
+#
+
+#
+# Debug flags are set in htconfig.h
+# -DPICTURE_TESTING -DDEBUG_RTS
+#
+CCX=gcc
+ASM=as
+
+INCLUDES=-I/usr/include -I/usr/local/include -I/usr/include/glibc -I/c/tcl/include -I../lib -I.. -I. -I/c/PostgreSQL/include
+
+CCXFLAGS=${INCLUDES} -Wall
+
+WRES=windres
+WRESFLAGS=-O coff
+
+RANLIB=ranlib
+AR=ar
+
+lib_dir=@install_dir@
+
+INSTRC=${lib_dir}
+RCFILE=htrtconf
+
+INSTALL=install.exe
+INSTALL_DATA=${INSTALL}
+
+MV = mv -f
+RM = rm -f
+LNK = ln -sf
+MKDIR = mkdir -p
+
+#
+
+LIBS1=-L/usr/local/lib -L/c/mingw/lib -lcurses
+LIBS2=-L/usr/local/lib /e/tinycobol/tcltk84/tcl84.dll /e/tinycobol/tcltk84/tk84.dll
+LIBS3=-L/usr/local/lib -L/c/PostgreSQL/lib -lpq
+
+#
+# Default install directory is set in htconfig.h
+#
+
+lib_version=@tcob_version@
+
+lib_name1=tcroutines
+lib_name2=tctcl
+lib_name3=tcpgres
+
+#
+# Libraries to build
+#
+STATIC_LIB1=lib${lib_name1}.a
+SHARED_LIB1=${lib_name1}.dll
+SHARED_LIB1A=${lib_name1}.dll.a
+
+STATIC_LIB2=lib${lib_name2}.a
+SHARED_LIB2=${lib_name2}.dll
+SHARED_LIB2A=${lib_name2}.dll.a
+
+STATIC_LIB3=lib${lib_name3}.a
+SHARED_LIB3=${lib_name3}.dll
+SHARED_LIB3A=${lib_name3}.dll.a
+
+#
+# Sources list
+#
+SRC1 = screen.c dir.c files.c globals.c system.c
+OBJS1 = $(SRC1:.c=.o)
+
+SRC2 = tctcl.c
+OBJS2 = $(SRC2:.c=.o)
+
+SRC3 = sql_clear_query.c sql_connect_db.c sql_disconnect_db.c sql_exec_query.c \
+ sql_free_memory.c sql_get_tuple.c sql_get_value.c sql_max_field.c sql_max_tuple.c sql_status_message.c
+OBJS3 = $(SRC3:.c=.o)
+
+#
+# Rules for compiling .c .s sources
+#
+.SUFFIX: .c .o .lo
+.c.o:
+ $(CCX) $(CCXFLAGS) -c $<
+
+%.lo: %.c
+ $(CCX) $(CCXFLAGS1) -c $< -o $@
+
+#
+# Notes on building and using the shared htcobol library.
+# - The linker will try to use the shared libraries by default.
+# If not available it will try to use the static libraries.
+# - When linking with a shared htcobol library, all other libraries must be
+# named, whether they are used in the cobol program or not.
+# (i.e. -lncurses -ldb)
+# - To run a cobol program built with a shared htcobol library, and the
+# htcobol library is not installed in one of the standard locations, use
+# the $LD_LIBRARY_PATH environmental variable to add this path.
+# (i.e. export LD_LIBRARY_PATH=this path:$LD_LIBRARY_PATH )
+# - For testing purposes, it is recommended that only a static htcobol library
+# be used, since gdb will not work properly with shared libraries.
+#
+
+all: static-libs
+devel: static-libs shared-libs
+
+static-libs: ${STATIC_LIB1} ${STATIC_LIB2} ${STATIC_LIB3}
+shared-libs: ${SHARED_LIB1} ${SHARED_LIB2} ${SHARED_LIB3}
+
+#
+# Rules for building the static libraries
+#
+${STATIC_LIB1}: ${OBJS1}
+ ${AR} cr ${STATIC_LIB1} ${OBJS1}
+ ${RANLIB} ${STATIC_LIB1}
+
+${STATIC_LIB2}: ${OBJS2}
+ ${AR} cr ${STATIC_LIB2} ${OBJS2}
+ ${RANLIB} ${STATIC_LIB2}
+
+${STATIC_LIB3}: ${OBJS3}
+ ${AR} cr ${STATIC_LIB3} ${OBJS3}
+ ${RANLIB} ${STATIC_LIB3}
+
+#
+# Rules for building the shared libraries
+#
+${SHARED_LIB1}: ${OBJS1}
+ ${CCX} -shared -Wl,--out-implib,${lib_name1}.dll.a,--output-def,${lib_name1}.def -o ${SHARED_LIB1} $(OBJS1) ${LIBS1}
+
+${SHARED_LIB2}: ${OBJS2}
+ ${CCX} -shared -Wl,--out-implib,${lib_name2}.dll.a,--output-def,${lib_name2}.def -o ${SHARED_LIB2} $(OBJS2) ${LIBS2}
+
+${SHARED_LIB3}: ${OBJS3}
+ ${CCX} -shared -Wl,--out-implib,${lib_name3}.dll.a,--output-def,${lib_name3}.def -o ${SHARED_LIB3} $(OBJS3) ${LIBS3}
+
+#
+# Rule for cleaning
+#
+clean:
+ @${RM} ${OBJS1} ${OBJS2} ${OBJS3} \
+ ${STATIC_LIB1} ${SHARED_LIB1} ${SHARED_LIB1A} \
+ ${STATIC_LIB2} ${SHARED_LIB2} ${SHARED_LIB2A} \
+ ${STATIC_LIB3} ${SHARED_LIB3} ${SHARED_LIB3A} \
+ core *.bak *.o *.lo
+
+#
+# Rule for installing
+#
+install: install-dir install-static install-shared
+
+install-static: ${STATIC_LIB1} ${STATIC_LIB2} ${STATIC_LIB3}
+# ${INSTALL} ${STATIC_LIB1} ${lib_dir}/${STATIC_LIB1}
+# ${INSTALL} ${STATIC_LIB2} ${lib_dir}/${STATIC_LIB2}
+# ${INSTALL} ${STATIC_LIB3} ${lib_dir}/${STATIC_LIB3}
+
+install-shared: ${SHARED_LIB1} ${SHARED_LIB2} ${SHARED_LIB3}
+ ${INSTALL} ${SHARED_LIB1} ${lib_dir}/${SHARED_LIB1}
+ ${INSTALL} ${SHARED_LIB2} ${lib_dir}/${SHARED_LIB2}
+ ${INSTALL} ${SHARED_LIB3} ${lib_dir}/${SHARED_LIB3}
+# ${INSTALL} ${SHARED_LIB1A} ${lib_dir}/${SHARED_LIB1A}
+# ${INSTALL} ${SHARED_LIB2A} ${lib_dir}/${SHARED_LIB2A}
+# ${INSTALL} ${SHARED_LIB3A} ${lib_dir}/${SHARED_LIB3A}
+
+install-dir:
+ $(MKDIR) $(INSTRC)
+
diff --git a/cobroutines/STATUS.txt b/cobroutines/STATUS.txt
new file mode 100644
index 0000000..2daff28
--- /dev/null
+++ b/cobroutines/STATUS.txt
@@ -0,0 +1,213 @@
+COB Routines STATUS file
+------------------------
+
+At this moment we have the following routines implemented:
+
+- cbl_change_dir
+- cbl_check_file_exist
+- cbl_clear_scr
+- cbl_close_file
+- cbl_copy_file
+- cbl_create_dir
+- cbl_create_file
+- cbl_delete_dir
+- cbl_delete_file
+- cbl_flush_file
+- cbl_get_csr_pos
+- cbl_get_current_dir
+- cbl_get_kbd_status
+- cbl_get_os_info
+- cbl_open_file
+- cbl_read_file
+- cbl_read_kbd_char
+- cbl_read_scr_attrs
+- cbl_read_scr_chars
+- cbl_read_scr_chattrs
+- cbl_rename_file
+- cbl_set_csr_pos
+- cbl_toupper
+- cbl_tolower
+- cbl_write_file
+- cbl_write_scr_attrs
+- cbl_write_scr_chars
+- cbl_write_scr_chattrs
+
+At this moment this routines below its not implemented.
+
+- cbl_abort_run_unit
+- cbl_alloc_dyn_mem
+- cbl_alloc_mem
+- cbl_alloc_thread_mem
+- cbl_and
+- cbl_cancel_proc
+- cbl_close_vfile
+- cbl_debugbreak
+- cbl_eq
+- cbl_error_proc
+- cbl_event_clear
+- cbl_event_close
+- cbl_event_open_intra
+- cbl_event_post
+- cbl_event_wait
+- cbl_exec_run_unit
+- cbl_filename_convert
+- cbl_filename_max_length
+- cbl_free_dyn_mem
+- cbl_free_mem
+- cbl_free_record_lock
+- cbl_free_shmem
+- cbl_free_thread_mem
+- cbl_get_exit_info
+- cbl_get_mouse_mask
+- cbl_get_mouse_position
+- cbl_get_mouse_status
+- cbl_get_program_info
+- cbl_get_record_lock
+- cbl_get_scr_line_draw
+- cbl_get_scr_size
+- cbl_get_shmem_ptr
+- cbl_hide_mouse
+- cbl_imp
+- cbl_init_mouse
+- cbl_join_filename
+- cbl_locate_file
+- cbl_monitor_browse
+- cbl_monitor_browse_to_read
+- cbl_monitor_browse_to_write
+- cbl_monitor_close
+- cbl_monitor_open_intra
+- cbl_monitor_read
+- cbl_monitor_release
+- cbl_monitor_unbrowse
+- cbl_monitor_unread
+- cbl_monitor_write
+- cbl_monitor_write_to_browse
+- cbl_monitor_acquire
+- cbl_mutex_acquire
+- cbl_mutex_close
+- cbl_mutex_open_intra
+- cbl_mutex_release
+- cbl_nls_close_msg_file
+- cbl_nls_compare
+- cbl_nls_info
+- cbl_nls_open_msg_file
+- cbl_nls_read_msg
+- cbl_not
+- cbl_open_vfile
+- cbl_or
+- cbl_put_shmem_ptr
+- cbl_read_mouse_event
+- cbl_read_vfile
+- cbl_scr_allocate_color
+- cbl_scr_allocate_vc_color
+- cbl_scr_create_vc
+- cbl_scr_destroy_vc
+- cbl_scr_get_attr_info
+- cbl_scr_get_attributes
+- cbl_scr_name_to_rgb
+- cbl_scr_query_colormap
+- cbl_scr_restore_attributes
+- cbl_scr_save_attributes
+- cbl_scr_set_attributes
+- cbl_scr_set_pc_attributes
+- cbl_semaphore_acquire
+- cbl_semaphore_close
+- cbl_semaphore_open_intra
+- cbl_semaphore_release
+- cbl_set_mouse_mask
+- cbl_show_mouse
+- cbl_split_filename
+- cbl_subsystem
+- cbl_swap_scr_chattrs
+- cbl_term_mouse
+- cbl_test_record_lock
+- cbl_thread_create
+- cbl_thread_create_p
+- cbl_thread_detach
+- cbl_thread_exit
+- cbl_thread_iddata_alloc
+- cbl_thread_iddata_get
+- cbl_thread_kill
+- cbl_thread_list_end
+- cbl_thread_list_next
+- cbl_thread_list_start
+- cbl_thread_lock
+- cbl_thread_prog_lock
+- cbl_thread_prog_unlock
+- cbl_thread_resume
+- cbl_thread_self
+- cbl_thread_sleep
+- cbl_thread_suspend
+- cbl_thread_unlock
+- cbl_thread_wait
+- cbl_thread_yield
+- cbl_tstore_get
+- cbl_write_scr_chars_attr
+- cbl_write_scr_n_attr
+- cbl_write_scr_n_char
+- cbl_write_scr_n_chattr
+- cbl_write_scr_tty
+- cbl_write_vfile
+- cbl_xor
+- cbl_yield_run_unit
+- mf_client_state_allocate
+- mf_client_state_delete
+- mf_client_state_expiry
+- mf_client_state_file
+- mf_client_state_purge
+- mf_client_state_restore
+- mf_client_state_save
+- pc_find_drives
+- pc_print_file
+- pc_printer_close
+- pc_printer_control
+- pc_printer_default_font
+- pc_printer_default_name
+- pc_printer_default_properties
+- pc_printer_free_bmp
+- pc_printer_get_color
+- pc_printer_get_font
+- pc_printer_info
+- pc_printer_load_bmp
+- pc_printer_open
+- pc_printer_redirection_proc
+- pc_printer_set_color
+- pc_printer_set_default
+- pc_printer_set_font
+- pc_printer_write
+- pc_printer_write_bmp
+- pc_read_drive
+- pc_win_char_to_oem
+- pc_win_init
+- pc_win_oem_to_char
+- x"91" function 11.
+- x"91" function 12.
+- x"91" function 13.
+- x"91" function 14.
+- x"91" function 15.
+- x"91" function 16.
+- x"91" function 35.
+- x"91" function 46.
+- x"91" function 47.
+- x"91" function 48.
+- x"91" function 49.
+- x"91" function 69.
+- x"A7" function 6/7.
+- x"A7" function 16.
+- x"A7" function 17.
+- x"A7" function 18.
+- x"A7" function 20/21.
+- x"A7" function 25.
+- x"AF" function 1.
+- x"AF" function 18.
+- x"AF" function 22.
+- x"AF" function 26.
+- x"B0" function 0.
+- x"B0" function 2.
+- x"B0" function 4.
+- x"E5".
+- x"F4".
+- x"F5".
+
+
+
diff --git a/cobroutines/X11/X.h b/cobroutines/X11/X.h
new file mode 100644
index 0000000..bdc4f13
--- /dev/null
+++ b/cobroutines/X11/X.h
@@ -0,0 +1,677 @@
+/*
+ * $XConsortium: X.h,v 1.66 88/09/06 15:55:56 jim Exp $
+ */
+
+/* Definitions for the X window system likely to be used by applications */
+
+#ifndef X_H
+#define X_H
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+#define X_PROTOCOL 11 /* current protocol version */
+#define X_PROTOCOL_REVISION 0 /* current minor version */
+
+#if defined(MAC_OSX_TK)
+# define Cursor XCursor
+# define Region XRegion
+#endif
+
+/* Resources */
+
+#ifdef _WIN64
+typedef __int64 XID;
+#else
+typedef unsigned long XID;
+#endif
+
+typedef XID Window;
+typedef XID Drawable;
+typedef XID Font;
+typedef XID Pixmap;
+typedef XID Cursor;
+typedef XID Colormap;
+typedef XID GContext;
+typedef XID KeySym;
+
+typedef unsigned long Mask;
+
+typedef unsigned long Atom;
+
+typedef unsigned long VisualID;
+
+typedef unsigned long Time;
+
+typedef unsigned long KeyCode; /* In order to use IME, the Macintosh needs
+ * to pack 3 bytes into the keyCode field in
+ * the XEvent. In the real X.h, a KeyCode is
+ * defined as a short, which wouldn't be big
+ * enough. */
+
+/*****************************************************************
+ * RESERVED RESOURCE AND CONSTANT DEFINITIONS
+ *****************************************************************/
+
+#define None 0L /* universal null resource or null atom */
+
+#define ParentRelative 1L /* background pixmap in CreateWindow
+ and ChangeWindowAttributes */
+
+#define CopyFromParent 0L /* border pixmap in CreateWindow
+ and ChangeWindowAttributes
+ special VisualID and special window
+ class passed to CreateWindow */
+
+#define PointerWindow 0L /* destination window in SendEvent */
+#define InputFocus 1L /* destination window in SendEvent */
+
+#define PointerRoot 1L /* focus window in SetInputFocus */
+
+#define AnyPropertyType 0L /* special Atom, passed to GetProperty */
+
+#define AnyKey 0L /* special Key Code, passed to GrabKey */
+
+#define AnyButton 0L /* special Button Code, passed to GrabButton */
+
+#define AllTemporary 0L /* special Resource ID passed to KillClient */
+
+#define CurrentTime 0L /* special Time */
+
+#define NoSymbol 0L /* special KeySym */
+
+/*****************************************************************
+ * EVENT DEFINITIONS
+ *****************************************************************/
+
+/* Input Event Masks. Used as event-mask window attribute and as arguments
+ to Grab requests. Not to be confused with event names. */
+
+#define NoEventMask 0L
+#define KeyPressMask (1L<<0)
+#define KeyReleaseMask (1L<<1)
+#define ButtonPressMask (1L<<2)
+#define ButtonReleaseMask (1L<<3)
+#define EnterWindowMask (1L<<4)
+#define LeaveWindowMask (1L<<5)
+#define PointerMotionMask (1L<<6)
+#define PointerMotionHintMask (1L<<7)
+#define Button1MotionMask (1L<<8)
+#define Button2MotionMask (1L<<9)
+#define Button3MotionMask (1L<<10)
+#define Button4MotionMask (1L<<11)
+#define Button5MotionMask (1L<<12)
+#define ButtonMotionMask (1L<<13)
+#define KeymapStateMask (1L<<14)
+#define ExposureMask (1L<<15)
+#define VisibilityChangeMask (1L<<16)
+#define StructureNotifyMask (1L<<17)
+#define ResizeRedirectMask (1L<<18)
+#define SubstructureNotifyMask (1L<<19)
+#define SubstructureRedirectMask (1L<<20)
+#define FocusChangeMask (1L<<21)
+#define PropertyChangeMask (1L<<22)
+#define ColormapChangeMask (1L<<23)
+#define OwnerGrabButtonMask (1L<<24)
+
+/* Event names. Used in "type" field in XEvent structures. Not to be
+confused with event masks above. They start from 2 because 0 and 1
+are reserved in the protocol for errors and replies. */
+
+#define KeyPress 2
+#define KeyRelease 3
+#define ButtonPress 4
+#define ButtonRelease 5
+#define MotionNotify 6
+#define EnterNotify 7
+#define LeaveNotify 8
+#define FocusIn 9
+#define FocusOut 10
+#define KeymapNotify 11
+#define Expose 12
+#define GraphicsExpose 13
+#define NoExpose 14
+#define VisibilityNotify 15
+#define CreateNotify 16
+#define DestroyNotify 17
+#define UnmapNotify 18
+#define MapNotify 19
+#define MapRequest 20
+#define ReparentNotify 21
+#define ConfigureNotify 22
+#define ConfigureRequest 23
+#define GravityNotify 24
+#define ResizeRequest 25
+#define CirculateNotify 26
+#define CirculateRequest 27
+#define PropertyNotify 28
+#define SelectionClear 29
+#define SelectionRequest 30
+#define SelectionNotify 31
+#define ColormapNotify 32
+#define ClientMessage 33
+#define MappingNotify 34
+#define LASTEvent 35 /* must be bigger than any event # */
+
+
+/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
+ state in various key-, mouse-, and button-related events. */
+
+#define ShiftMask (1<<0)
+#define LockMask (1<<1)
+#define ControlMask (1<<2)
+#define Mod1Mask (1<<3)
+#define Mod2Mask (1<<4)
+#define Mod3Mask (1<<5)
+#define Mod4Mask (1<<6)
+#define Mod5Mask (1<<7)
+
+/* modifier names. Used to build a SetModifierMapping request or
+ to read a GetModifierMapping request. These correspond to the
+ masks defined above. */
+#define ShiftMapIndex 0
+#define LockMapIndex 1
+#define ControlMapIndex 2
+#define Mod1MapIndex 3
+#define Mod2MapIndex 4
+#define Mod3MapIndex 5
+#define Mod4MapIndex 6
+#define Mod5MapIndex 7
+
+
+/* button masks. Used in same manner as Key masks above. Not to be confused
+ with button names below. */
+
+#define Button1Mask (1<<8)
+#define Button2Mask (1<<9)
+#define Button3Mask (1<<10)
+#define Button4Mask (1<<11)
+#define Button5Mask (1<<12)
+
+#define AnyModifier (1<<15) /* used in GrabButton, GrabKey */
+
+
+/* button names. Used as arguments to GrabButton and as detail in ButtonPress
+ and ButtonRelease events. Not to be confused with button masks above.
+ Note that 0 is already defined above as "AnyButton". */
+
+#define Button1 1
+#define Button2 2
+#define Button3 3
+#define Button4 4
+#define Button5 5
+
+/* Notify modes */
+
+#define NotifyNormal 0
+#define NotifyGrab 1
+#define NotifyUngrab 2
+#define NotifyWhileGrabbed 3
+
+#define NotifyHint 1 /* for MotionNotify events */
+
+/* Notify detail */
+
+#define NotifyAncestor 0
+#define NotifyVirtual 1
+#define NotifyInferior 2
+#define NotifyNonlinear 3
+#define NotifyNonlinearVirtual 4
+#define NotifyPointer 5
+#define NotifyPointerRoot 6
+#define NotifyDetailNone 7
+
+/* Visibility notify */
+
+#define VisibilityUnobscured 0
+#define VisibilityPartiallyObscured 1
+#define VisibilityFullyObscured 2
+
+/* Circulation request */
+
+#define PlaceOnTop 0
+#define PlaceOnBottom 1
+
+/* protocol families */
+
+#define FamilyInternet 0
+#define FamilyDECnet 1
+#define FamilyChaos 2
+
+/* Property notification */
+
+#define PropertyNewValue 0
+#define PropertyDelete 1
+
+/* Color Map notification */
+
+#define ColormapUninstalled 0
+#define ColormapInstalled 1
+
+/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */
+
+#define GrabModeSync 0
+#define GrabModeAsync 1
+
+/* GrabPointer, GrabKeyboard reply status */
+
+#define GrabSuccess 0
+#define AlreadyGrabbed 1
+#define GrabInvalidTime 2
+#define GrabNotViewable 3
+#define GrabFrozen 4
+
+/* AllowEvents modes */
+
+#define AsyncPointer 0
+#define SyncPointer 1
+#define ReplayPointer 2
+#define AsyncKeyboard 3
+#define SyncKeyboard 4
+#define ReplayKeyboard 5
+#define AsyncBoth 6
+#define SyncBoth 7
+
+/* Used in SetInputFocus, GetInputFocus */
+
+#define RevertToNone (int)None
+#define RevertToPointerRoot (int)PointerRoot
+#define RevertToParent 2
+
+/*****************************************************************
+ * ERROR CODES
+ *****************************************************************/
+
+#define Success 0 /* everything's okay */
+#define BadRequest 1 /* bad request code */
+#define BadValue 2 /* int parameter out of range */
+#define BadWindow 3 /* parameter not a Window */
+#define BadPixmap 4 /* parameter not a Pixmap */
+#define BadAtom 5 /* parameter not an Atom */
+#define BadCursor 6 /* parameter not a Cursor */
+#define BadFont 7 /* parameter not a Font */
+#define BadMatch 8 /* parameter mismatch */
+#define BadDrawable 9 /* parameter not a Pixmap or Window */
+#define BadAccess 10 /* depending on context:
+ - key/button already grabbed
+ - attempt to free an illegal
+ cmap entry
+ - attempt to store into a read-only
+ color map entry.
+ - attempt to modify the access control
+ list from other than the local host.
+ */
+#define BadAlloc 11 /* insufficient resources */
+#define BadColor 12 /* no such colormap */
+#define BadGC 13 /* parameter not a GC */
+#define BadIDChoice 14 /* choice not in range or already used */
+#define BadName 15 /* font or color name doesn't exist */
+#define BadLength 16 /* Request length incorrect */
+#define BadImplementation 17 /* server is defective */
+
+#define FirstExtensionError 128
+#define LastExtensionError 255
+
+/*****************************************************************
+ * WINDOW DEFINITIONS
+ *****************************************************************/
+
+/* Window classes used by CreateWindow */
+/* Note that CopyFromParent is already defined as 0 above */
+
+#define InputOutput 1
+#define InputOnly 2
+
+/* Window attributes for CreateWindow and ChangeWindowAttributes */
+
+#define CWBackPixmap (1L<<0)
+#define CWBackPixel (1L<<1)
+#define CWBorderPixmap (1L<<2)
+#define CWBorderPixel (1L<<3)
+#define CWBitGravity (1L<<4)
+#define CWWinGravity (1L<<5)
+#define CWBackingStore (1L<<6)
+#define CWBackingPlanes (1L<<7)
+#define CWBackingPixel (1L<<8)
+#define CWOverrideRedirect (1L<<9)
+#define CWSaveUnder (1L<<10)
+#define CWEventMask (1L<<11)
+#define CWDontPropagate (1L<<12)
+#define CWColormap (1L<<13)
+#define CWCursor (1L<<14)
+
+/* ConfigureWindow structure */
+
+#define CWX (1<<0)
+#define CWY (1<<1)
+#define CWWidth (1<<2)
+#define CWHeight (1<<3)
+#define CWBorderWidth (1<<4)
+#define CWSibling (1<<5)
+#define CWStackMode (1<<6)
+
+
+/* Bit Gravity */
+
+#define ForgetGravity 0
+#define NorthWestGravity 1
+#define NorthGravity 2
+#define NorthEastGravity 3
+#define WestGravity 4
+#define CenterGravity 5
+#define EastGravity 6
+#define SouthWestGravity 7
+#define SouthGravity 8
+#define SouthEastGravity 9
+#define StaticGravity 10
+
+/* Window gravity + bit gravity above */
+
+#define UnmapGravity 0
+
+/* Used in CreateWindow for backing-store hint */
+
+#define NotUseful 0
+#define WhenMapped 1
+#define Always 2
+
+/* Used in GetWindowAttributes reply */
+
+#define IsUnmapped 0
+#define IsUnviewable 1
+#define IsViewable 2
+
+/* Used in ChangeSaveSet */
+
+#define SetModeInsert 0
+#define SetModeDelete 1
+
+/* Used in ChangeCloseDownMode */
+
+#define DestroyAll 0
+#define RetainPermanent 1
+#define RetainTemporary 2
+
+/* Window stacking method (in configureWindow) */
+
+#define Above 0
+#define Below 1
+#define TopIf 2
+#define BottomIf 3
+#define Opposite 4
+
+/* Circulation direction */
+
+#define RaiseLowest 0
+#define LowerHighest 1
+
+/* Property modes */
+
+#define PropModeReplace 0
+#define PropModePrepend 1
+#define PropModeAppend 2
+
+/*****************************************************************
+ * GRAPHICS DEFINITIONS
+ *****************************************************************/
+
+/* graphics functions, as in GC.alu */
+
+#define GXclear 0x0 /* 0 */
+#define GXand 0x1 /* src AND dst */
+#define GXandReverse 0x2 /* src AND NOT dst */
+#define GXcopy 0x3 /* src */
+#define GXandInverted 0x4 /* NOT src AND dst */
+#define GXnoop 0x5 /* dst */
+#define GXxor 0x6 /* src XOR dst */
+#define GXor 0x7 /* src OR dst */
+#define GXnor 0x8 /* NOT src AND NOT dst */
+#define GXequiv 0x9 /* NOT src XOR dst */
+#define GXinvert 0xa /* NOT dst */
+#define GXorReverse 0xb /* src OR NOT dst */
+#define GXcopyInverted 0xc /* NOT src */
+#define GXorInverted 0xd /* NOT src OR dst */
+#define GXnand 0xe /* NOT src OR NOT dst */
+#define GXset 0xf /* 1 */
+
+/* LineStyle */
+
+#define LineSolid 0
+#define LineOnOffDash 1
+#define LineDoubleDash 2
+
+/* capStyle */
+
+#define CapNotLast 0
+#define CapButt 1
+#define CapRound 2
+#define CapProjecting 3
+
+/* joinStyle */
+
+#define JoinMiter 0
+#define JoinRound 1
+#define JoinBevel 2
+
+/* fillStyle */
+
+#define FillSolid 0
+#define FillTiled 1
+#define FillStippled 2
+#define FillOpaqueStippled 3
+
+/* fillRule */
+
+#define EvenOddRule 0
+#define WindingRule 1
+
+/* subwindow mode */
+
+#define ClipByChildren 0
+#define IncludeInferiors 1
+
+/* SetClipRectangles ordering */
+
+#define Unsorted 0
+#define YSorted 1
+#define YXSorted 2
+#define YXBanded 3
+
+/* CoordinateMode for drawing routines */
+
+#define CoordModeOrigin 0 /* relative to the origin */
+#define CoordModePrevious 1 /* relative to previous point */
+
+/* Polygon shapes */
+
+#define Complex 0 /* paths may intersect */
+#define Nonconvex 1 /* no paths intersect, but not convex */
+#define Convex 2 /* wholly convex */
+
+/* Arc modes for PolyFillArc */
+
+#define ArcChord 0 /* join endpoints of arc */
+#define ArcPieSlice 1 /* join endpoints to center of arc */
+
+/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
+ GC.stateChanges */
+
+#define GCFunction (1L<<0)
+#define GCPlaneMask (1L<<1)
+#define GCForeground (1L<<2)
+#define GCBackground (1L<<3)
+#define GCLineWidth (1L<<4)
+#define GCLineStyle (1L<<5)
+#define GCCapStyle (1L<<6)
+#define GCJoinStyle (1L<<7)
+#define GCFillStyle (1L<<8)
+#define GCFillRule (1L<<9)
+#define GCTile (1L<<10)
+#define GCStipple (1L<<11)
+#define GCTileStipXOrigin (1L<<12)
+#define GCTileStipYOrigin (1L<<13)
+#define GCFont (1L<<14)
+#define GCSubwindowMode (1L<<15)
+#define GCGraphicsExposures (1L<<16)
+#define GCClipXOrigin (1L<<17)
+#define GCClipYOrigin (1L<<18)
+#define GCClipMask (1L<<19)
+#define GCDashOffset (1L<<20)
+#define GCDashList (1L<<21)
+#define GCArcMode (1L<<22)
+
+#define GCLastBit 22
+/*****************************************************************
+ * FONTS
+ *****************************************************************/
+
+/* used in QueryFont -- draw direction */
+
+#define FontLeftToRight 0
+#define FontRightToLeft 1
+
+#define FontChange 255
+
+/*****************************************************************
+ * IMAGING
+ *****************************************************************/
+
+/* ImageFormat -- PutImage, GetImage */
+
+#define XYBitmap 0 /* depth 1, XYFormat */
+#define XYPixmap 1 /* depth == drawable depth */
+#define ZPixmap 2 /* depth == drawable depth */
+
+/*****************************************************************
+ * COLOR MAP STUFF
+ *****************************************************************/
+
+/* For CreateColormap */
+
+#define AllocNone 0 /* create map with no entries */
+#define AllocAll 1 /* allocate entire map writeable */
+
+
+/* Flags used in StoreNamedColor, StoreColors */
+
+#define DoRed (1<<0)
+#define DoGreen (1<<1)
+#define DoBlue (1<<2)
+
+/*****************************************************************
+ * CURSOR STUFF
+ *****************************************************************/
+
+/* QueryBestSize Class */
+
+#define CursorShape 0 /* largest size that can be displayed */
+#define TileShape 1 /* size tiled fastest */
+#define StippleShape 2 /* size stippled fastest */
+
+/*****************************************************************
+ * KEYBOARD/POINTER STUFF
+ *****************************************************************/
+
+#define AutoRepeatModeOff 0
+#define AutoRepeatModeOn 1
+#define AutoRepeatModeDefault 2
+
+#define LedModeOff 0
+#define LedModeOn 1
+
+/* masks for ChangeKeyboardControl */
+
+#define KBKeyClickPercent (1L<<0)
+#define KBBellPercent (1L<<1)
+#define KBBellPitch (1L<<2)
+#define KBBellDuration (1L<<3)
+#define KBLed (1L<<4)
+#define KBLedMode (1L<<5)
+#define KBKey (1L<<6)
+#define KBAutoRepeatMode (1L<<7)
+
+#define MappingSuccess 0
+#define MappingBusy 1
+#define MappingFailed 2
+
+#define MappingModifier 0
+#define MappingKeyboard 1
+#define MappingPointer 2
+
+/*****************************************************************
+ * SCREEN SAVER STUFF
+ *****************************************************************/
+
+#define DontPreferBlanking 0
+#define PreferBlanking 1
+#define DefaultBlanking 2
+
+#define DisableScreenSaver 0
+#define DisableScreenInterval 0
+
+#define DontAllowExposures 0
+#define AllowExposures 1
+#define DefaultExposures 2
+
+/* for ForceScreenSaver */
+
+#define ScreenSaverReset 0
+#define ScreenSaverActive 1
+
+/*****************************************************************
+ * HOSTS AND CONNECTIONS
+ *****************************************************************/
+
+/* for ChangeHosts */
+
+#define HostInsert 0
+#define HostDelete 1
+
+/* for ChangeAccessControl */
+
+#define EnableAccess 1
+#define DisableAccess 0
+
+/* Display classes used in opening the connection
+ * Note that the statically allocated ones are even numbered and the
+ * dynamically changeable ones are odd numbered */
+
+#define StaticGray 0
+#define GrayScale 1
+#define StaticColor 2
+#define PseudoColor 3
+#define TrueColor 4
+#define DirectColor 5
+
+
+/* Byte order used in imageByteOrder and bitmapBitOrder */
+
+#define LSBFirst 0
+#define MSBFirst 1
+
+#if defined(MAC_OSX_TK)
+# undef Cursor
+# undef Region
+#endif
+
+#endif /* X_H */
diff --git a/cobroutines/X11/Xatom.h b/cobroutines/X11/Xatom.h
new file mode 100644
index 0000000..485a423
--- /dev/null
+++ b/cobroutines/X11/Xatom.h
@@ -0,0 +1,79 @@
+#ifndef XATOM_H
+#define XATOM_H 1
+
+/* THIS IS A GENERATED FILE
+ *
+ * Do not change! Changing this file implies a protocol change!
+ */
+
+#define XA_PRIMARY ((Atom) 1)
+#define XA_SECONDARY ((Atom) 2)
+#define XA_ARC ((Atom) 3)
+#define XA_ATOM ((Atom) 4)
+#define XA_BITMAP ((Atom) 5)
+#define XA_CARDINAL ((Atom) 6)
+#define XA_COLORMAP ((Atom) 7)
+#define XA_CURSOR ((Atom) 8)
+#define XA_CUT_BUFFER0 ((Atom) 9)
+#define XA_CUT_BUFFER1 ((Atom) 10)
+#define XA_CUT_BUFFER2 ((Atom) 11)
+#define XA_CUT_BUFFER3 ((Atom) 12)
+#define XA_CUT_BUFFER4 ((Atom) 13)
+#define XA_CUT_BUFFER5 ((Atom) 14)
+#define XA_CUT_BUFFER6 ((Atom) 15)
+#define XA_CUT_BUFFER7 ((Atom) 16)
+#define XA_DRAWABLE ((Atom) 17)
+#define XA_FONT ((Atom) 18)
+#define XA_INTEGER ((Atom) 19)
+#define XA_PIXMAP ((Atom) 20)
+#define XA_POINT ((Atom) 21)
+#define XA_RECTANGLE ((Atom) 22)
+#define XA_RESOURCE_MANAGER ((Atom) 23)
+#define XA_RGB_COLOR_MAP ((Atom) 24)
+#define XA_RGB_BEST_MAP ((Atom) 25)
+#define XA_RGB_BLUE_MAP ((Atom) 26)
+#define XA_RGB_DEFAULT_MAP ((Atom) 27)
+#define XA_RGB_GRAY_MAP ((Atom) 28)
+#define XA_RGB_GREEN_MAP ((Atom) 29)
+#define XA_RGB_RED_MAP ((Atom) 30)
+#define XA_STRING ((Atom) 31)
+#define XA_VISUALID ((Atom) 32)
+#define XA_WINDOW ((Atom) 33)
+#define XA_WM_COMMAND ((Atom) 34)
+#define XA_WM_HINTS ((Atom) 35)
+#define XA_WM_CLIENT_MACHINE ((Atom) 36)
+#define XA_WM_ICON_NAME ((Atom) 37)
+#define XA_WM_ICON_SIZE ((Atom) 38)
+#define XA_WM_NAME ((Atom) 39)
+#define XA_WM_NORMAL_HINTS ((Atom) 40)
+#define XA_WM_SIZE_HINTS ((Atom) 41)
+#define XA_WM_ZOOM_HINTS ((Atom) 42)
+#define XA_MIN_SPACE ((Atom) 43)
+#define XA_NORM_SPACE ((Atom) 44)
+#define XA_MAX_SPACE ((Atom) 45)
+#define XA_END_SPACE ((Atom) 46)
+#define XA_SUPERSCRIPT_X ((Atom) 47)
+#define XA_SUPERSCRIPT_Y ((Atom) 48)
+#define XA_SUBSCRIPT_X ((Atom) 49)
+#define XA_SUBSCRIPT_Y ((Atom) 50)
+#define XA_UNDERLINE_POSITION ((Atom) 51)
+#define XA_UNDERLINE_THICKNESS ((Atom) 52)
+#define XA_STRIKEOUT_ASCENT ((Atom) 53)
+#define XA_STRIKEOUT_DESCENT ((Atom) 54)
+#define XA_ITALIC_ANGLE ((Atom) 55)
+#define XA_X_HEIGHT ((Atom) 56)
+#define XA_QUAD_WIDTH ((Atom) 57)
+#define XA_WEIGHT ((Atom) 58)
+#define XA_POINT_SIZE ((Atom) 59)
+#define XA_RESOLUTION ((Atom) 60)
+#define XA_COPYRIGHT ((Atom) 61)
+#define XA_NOTICE ((Atom) 62)
+#define XA_FONT_NAME ((Atom) 63)
+#define XA_FAMILY_NAME ((Atom) 64)
+#define XA_FULL_NAME ((Atom) 65)
+#define XA_CAP_HEIGHT ((Atom) 66)
+#define XA_WM_CLASS ((Atom) 67)
+#define XA_WM_TRANSIENT_FOR ((Atom) 68)
+
+#define XA_LAST_PREDEFINED ((Atom) 68)
+#endif /* XATOM_H */
diff --git a/cobroutines/X11/Xfuncproto.h b/cobroutines/X11/Xfuncproto.h
new file mode 100644
index 0000000..a59379b
--- /dev/null
+++ b/cobroutines/X11/Xfuncproto.h
@@ -0,0 +1,60 @@
+/* $XConsortium: Xfuncproto.h,v 1.7 91/05/13 20:49:21 rws Exp $ */
+/*
+ * Copyright 1989, 1991 by the Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ */
+
+/* Definitions to make function prototypes manageable */
+
+#ifndef _XFUNCPROTO_H_
+#define _XFUNCPROTO_H_
+
+#ifndef NeedFunctionPrototypes
+#define NeedFunctionPrototypes 1
+#endif /* NeedFunctionPrototypes */
+
+#ifndef NeedVarargsPrototypes
+#define NeedVarargsPrototypes 0
+#endif /* NeedVarargsPrototypes */
+
+#if NeedFunctionPrototypes
+
+#ifndef NeedNestedPrototypes
+#define NeedNestedPrototypes 1
+#endif /* NeedNestedPrototypes */
+
+#ifndef _Xconst
+#define _Xconst const
+#endif /* _Xconst */
+
+#ifndef NeedWidePrototypes
+#ifdef NARROWPROTO
+#define NeedWidePrototypes 0
+#else
+#define NeedWidePrototypes 1 /* default to make interropt. easier */
+#endif
+#endif /* NeedWidePrototypes */
+
+#endif /* NeedFunctionPrototypes */
+
+#ifdef __cplusplus
+#define _XFUNCPROTOBEGIN extern "C" {
+#define _XFUNCPROTOEND }
+#endif
+
+#ifndef _XFUNCPROTOBEGIN
+#define _XFUNCPROTOBEGIN
+#define _XFUNCPROTOEND
+#endif /* _XFUNCPROTOBEGIN */
+
+#endif /* _XFUNCPROTO_H_ */
diff --git a/cobroutines/X11/Xlib.h b/cobroutines/X11/Xlib.h
new file mode 100644
index 0000000..3af3682
--- /dev/null
+++ b/cobroutines/X11/Xlib.h
@@ -0,0 +1,1205 @@
+/* $XConsortium: Xlib.h,v 11.221 93/07/02 14:13:28 gildea Exp $ */
+/*
+ * Copyright 1985, 1986, 1987, 1991 by the Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * X Window System is a Trademark of MIT.
+ *
+ */
+
+
+/*
+ * Xlib.h - Header definition and support file for the C subroutine
+ * interface library (Xlib) to the X Window System Protocol (V11).
+ * Structures and symbols starting with "_" are private to the library.
+ */
+#ifndef _XLIB_H_
+#define _XLIB_H_
+
+#define XlibSpecificationRelease 5
+
+#if !defined(MAC_OSX_TK)
+# include
+#endif
+#ifdef MAC_OSX_TK
+# include
+# define Cursor XCursor
+# define Region XRegion
+#endif
+
+/* applications should not depend on these two headers being included! */
+#include
+
+#ifndef X_WCHAR
+#ifdef X_NOT_STDC_ENV
+#define X_WCHAR
+#endif
+#endif
+
+#ifndef X_WCHAR
+#include
+#else
+/* replace this with #include or typedef appropriate for your system */
+typedef unsigned long wchar_t;
+#endif
+
+typedef char *XPointer;
+
+#define Bool int
+#if defined(MAC_OSX_TK)
+/* Use define rather than typedef, since may need to undefine this later */
+#define Status int
+#else
+typedef int Status;
+#endif
+#define True 1
+#define False 0
+
+#define QueuedAlready 0
+#define QueuedAfterReading 1
+#define QueuedAfterFlush 2
+
+#define ConnectionNumber(dpy) ((dpy)->fd)
+#define RootWindow(dpy, scr) (((dpy)->screens[(scr)]).root)
+#define DefaultScreen(dpy) ((dpy)->default_screen)
+#define DefaultRootWindow(dpy) (((dpy)->screens[(dpy)->default_screen]).root)
+#define DefaultVisual(dpy, scr) (((dpy)->screens[(scr)]).root_visual)
+#define DefaultGC(dpy, scr) (((dpy)->screens[(scr)]).default_gc)
+#define BlackPixel(dpy, scr) (((dpy)->screens[(scr)]).black_pixel)
+#define WhitePixel(dpy, scr) (((dpy)->screens[(scr)]).white_pixel)
+#define AllPlanes ((unsigned long)~0L)
+#define QLength(dpy) ((dpy)->qlen)
+#define DisplayWidth(dpy, scr) (((dpy)->screens[(scr)]).width)
+#define DisplayHeight(dpy, scr) (((dpy)->screens[(scr)]).height)
+#define DisplayWidthMM(dpy, scr)(((dpy)->screens[(scr)]).mwidth)
+#define DisplayHeightMM(dpy, scr)(((dpy)->screens[(scr)]).mheight)
+#define DisplayPlanes(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
+#define DisplayCells(dpy, scr) (DefaultVisual((dpy), (scr))->map_entries)
+#define ScreenCount(dpy) ((dpy)->nscreens)
+#define ServerVendor(dpy) ((dpy)->vendor)
+#define ProtocolVersion(dpy) ((dpy)->proto_major_version)
+#define ProtocolRevision(dpy) ((dpy)->proto_minor_version)
+#define VendorRelease(dpy) ((dpy)->release)
+#define DisplayString(dpy) ((dpy)->display_name)
+#define DefaultDepth(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
+#define DefaultColormap(dpy, scr)(((dpy)->screens[(scr)]).cmap)
+#define BitmapUnit(dpy) ((dpy)->bitmap_unit)
+#define BitmapBitOrder(dpy) ((dpy)->bitmap_bit_order)
+#define BitmapPad(dpy) ((dpy)->bitmap_pad)
+#define ImageByteOrder(dpy) ((dpy)->byte_order)
+#define NextRequest(dpy) ((dpy)->request + 1)
+#define LastKnownRequestProcessed(dpy) ((dpy)->request)
+
+/* macros for screen oriented applications (toolkit) */
+#define ScreenOfDisplay(dpy, scr)(&((dpy)->screens[(scr)]))
+#define DefaultScreenOfDisplay(dpy) (&((dpy)->screens[(dpy)->default_screen]))
+#define DisplayOfScreen(s) ((s)->display)
+#define RootWindowOfScreen(s) ((s)->root)
+#define BlackPixelOfScreen(s) ((s)->black_pixel)
+#define WhitePixelOfScreen(s) ((s)->white_pixel)
+#define DefaultColormapOfScreen(s)((s)->cmap)
+#define DefaultDepthOfScreen(s) ((s)->root_depth)
+#define DefaultGCOfScreen(s) ((s)->default_gc)
+#define DefaultVisualOfScreen(s)((s)->root_visual)
+#define WidthOfScreen(s) ((s)->width)
+#define HeightOfScreen(s) ((s)->height)
+#define WidthMMOfScreen(s) ((s)->mwidth)
+#define HeightMMOfScreen(s) ((s)->mheight)
+#define PlanesOfScreen(s) ((s)->root_depth)
+#define CellsOfScreen(s) (DefaultVisualOfScreen((s))->map_entries)
+#define MinCmapsOfScreen(s) ((s)->min_maps)
+#define MaxCmapsOfScreen(s) ((s)->max_maps)
+#define DoesSaveUnders(s) ((s)->save_unders)
+#define DoesBackingStore(s) ((s)->backing_store)
+#define EventMaskOfScreen(s) ((s)->root_input_mask)
+
+/*
+ * Extensions need a way to hang private data on some structures.
+ */
+typedef struct _XExtData {
+ int number; /* number returned by XRegisterExtension */
+ struct _XExtData *next; /* next item on list of data for structure */
+ int (*free_private)(); /* called to free private storage */
+ XPointer private_data; /* data private to this extension. */
+} XExtData;
+
+/*
+ * This file contains structures used by the extension mechanism.
+ */
+typedef struct { /* public to extension, cannot be changed */
+ int extension; /* extension number */
+ int major_opcode; /* major op-code assigned by server */
+ int first_event; /* first event number for the extension */
+ int first_error; /* first error number for the extension */
+} XExtCodes;
+
+/*
+ * Data structure for retrieving info about pixmap formats.
+ */
+
+typedef struct {
+ int depth;
+ int bits_per_pixel;
+ int scanline_pad;
+} XPixmapFormatValues;
+
+
+/*
+ * Data structure for setting graphics context.
+ */
+typedef struct {
+ int function; /* logical operation */
+ unsigned long plane_mask;/* plane mask */
+ unsigned long foreground;/* foreground pixel */
+ unsigned long background;/* background pixel */
+ int line_width; /* line width */
+ int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
+ int cap_style; /* CapNotLast, CapButt,
+ CapRound, CapProjecting */
+ int join_style; /* JoinMiter, JoinRound, JoinBevel */
+ int fill_style; /* FillSolid, FillTiled,
+ FillStippled, FillOpaeueStippled */
+ int fill_rule; /* EvenOddRule, WindingRule */
+ int arc_mode; /* ArcChord, ArcPieSlice */
+ Pixmap tile; /* tile pixmap for tiling operations */
+ Pixmap stipple; /* stipple 1 plane pixmap for stipping */
+ int ts_x_origin; /* offset for tile or stipple operations */
+ int ts_y_origin;
+ Font font; /* default text font for text operations */
+ int subwindow_mode; /* ClipByChildren, IncludeInferiors */
+ Bool graphics_exposures;/* boolean, should exposures be generated */
+ int clip_x_origin; /* origin for clipping */
+ int clip_y_origin;
+ Pixmap clip_mask; /* bitmap clipping; other calls for rects */
+ int dash_offset; /* patterned/dashed line information */
+ char dashes;
+} XGCValues;
+
+/*
+ * Graphics context. The contents of this structure are implementation
+ * dependent. A GC should be treated as opaque by application code.
+ */
+
+typedef XGCValues *GC;
+
+/*
+ * Visual structure; contains information about colormapping possible.
+ */
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ VisualID visualid; /* visual id of this visual */
+#if defined(__cplusplus) || defined(c_plusplus)
+ int c_class; /* C++ class of screen (monochrome, etc.) */
+#else
+ int class; /* class of screen (monochrome, etc.) */
+#endif
+ unsigned long red_mask, green_mask, blue_mask; /* mask values */
+ int bits_per_rgb; /* log base 2 of distinct color values */
+ int map_entries; /* color map entries */
+} Visual;
+
+/*
+ * Depth structure; contains information for each possible depth.
+ */
+typedef struct {
+ int depth; /* this depth (Z) of the depth */
+ int nvisuals; /* number of Visual types at this depth */
+ Visual *visuals; /* list of visuals possible at this depth */
+} Depth;
+
+/*
+ * Information about the screen. The contents of this structure are
+ * implementation dependent. A Screen should be treated as opaque
+ * by application code.
+ */
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ struct _XDisplay *display;/* back pointer to display structure */
+ Window root; /* Root window id. */
+ int width, height; /* width and height of screen */
+ int mwidth, mheight; /* width and height of in millimeters */
+ int ndepths; /* number of depths possible */
+ Depth *depths; /* list of allowable depths on the screen */
+ int root_depth; /* bits per pixel */
+ Visual *root_visual; /* root visual */
+ GC default_gc; /* GC for the root root visual */
+ Colormap cmap; /* default color map */
+ unsigned long white_pixel;
+ unsigned long black_pixel; /* White and Black pixel values */
+ int max_maps, min_maps; /* max and min color maps */
+ int backing_store; /* Never, WhenMapped, Always */
+ Bool save_unders;
+ long root_input_mask; /* initial root input mask */
+} Screen;
+
+/*
+ * Format structure; describes ZFormat data the screen will understand.
+ */
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ int depth; /* depth of this image format */
+ int bits_per_pixel; /* bits/pixel at this depth */
+ int scanline_pad; /* scanline must padded to this multiple */
+} ScreenFormat;
+
+/*
+ * Data structure for setting window attributes.
+ */
+typedef struct {
+ Pixmap background_pixmap; /* background or None or ParentRelative */
+ unsigned long background_pixel; /* background pixel */
+ Pixmap border_pixmap; /* border of the window */
+ unsigned long border_pixel; /* border pixel value */
+ int bit_gravity; /* one of bit gravity values */
+ int win_gravity; /* one of the window gravity values */
+ int backing_store; /* NotUseful, WhenMapped, Always */
+ unsigned long backing_planes;/* planes to be preseved if possible */
+ unsigned long backing_pixel;/* value to use in restoring planes */
+ Bool save_under; /* should bits under be saved? (popups) */
+ long event_mask; /* set of events that should be saved */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ Bool override_redirect; /* boolean value for override-redirect */
+ Colormap colormap; /* color map to be associated with window */
+ Cursor cursor; /* cursor to be displayed (or None) */
+} XSetWindowAttributes;
+
+typedef struct {
+ int x, y; /* location of window */
+ int width, height; /* width and height of window */
+ int border_width; /* border width of window */
+ int depth; /* depth of window */
+ Visual *visual; /* the associated visual structure */
+ Window root; /* root of screen containing window */
+#if defined(__cplusplus) || defined(c_plusplus)
+ int c_class; /* C++ InputOutput, InputOnly*/
+#else
+ int class; /* InputOutput, InputOnly*/
+#endif
+ int bit_gravity; /* one of bit gravity values */
+ int win_gravity; /* one of the window gravity values */
+ int backing_store; /* NotUseful, WhenMapped, Always */
+ unsigned long backing_planes;/* planes to be preserved if possible */
+ unsigned long backing_pixel;/* value to be used when restoring planes */
+ Bool save_under; /* boolean, should bits under be saved? */
+ Colormap colormap; /* color map to be associated with window */
+ Bool map_installed; /* boolean, is color map currently installed*/
+ int map_state; /* IsUnmapped, IsUnviewable, IsViewable */
+ long all_event_masks; /* set of events all people have interest in*/
+ long your_event_mask; /* my event mask */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ Bool override_redirect; /* boolean value for override-redirect */
+ Screen *screen; /* back pointer to correct screen */
+} XWindowAttributes;
+
+/*
+ * Data structure for host setting; getting routines.
+ *
+ */
+
+typedef struct {
+ int family; /* for example FamilyInternet */
+ int length; /* length of address, in bytes */
+ char *address; /* pointer to where to find the bytes */
+} XHostAddress;
+
+/*
+ * Data structure for "image" data, used by image manipulation routines.
+ */
+typedef struct _XImage {
+ int width, height; /* size of image */
+ int xoffset; /* number of pixels offset in X direction */
+ int format; /* XYBitmap, XYPixmap, ZPixmap */
+ char *data; /* pointer to image data */
+ int byte_order; /* data byte order, LSBFirst, MSBFirst */
+ int bitmap_unit; /* quant. of scanline 8, 16, 32 */
+ int bitmap_bit_order; /* LSBFirst, MSBFirst */
+ int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */
+ int depth; /* depth of image */
+ int bytes_per_line; /* accelarator to next line */
+ int bits_per_pixel; /* bits per pixel (ZPixmap) */
+ unsigned long red_mask; /* bits in z arrangment */
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ XPointer obdata; /* hook for the object routines to hang on */
+ struct funcs { /* image manipulation routines */
+ struct _XImage *(*create_image)();
+#if NeedFunctionPrototypes
+ int (*destroy_image) (struct _XImage *);
+ unsigned long (*get_pixel) (struct _XImage *, int, int);
+ int (*put_pixel) (struct _XImage *, int, int, unsigned long);
+ struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
+ int (*add_pixel) (struct _XImage *, long);
+#else
+ int (*destroy_image)();
+ unsigned long (*get_pixel)();
+ int (*put_pixel)();
+ struct _XImage *(*sub_image)();
+ int (*add_pixel)();
+#endif
+ } f;
+} XImage;
+
+/*
+ * Data structure for XReconfigureWindow
+ */
+typedef struct {
+ int x, y;
+ int width, height;
+ int border_width;
+ Window sibling;
+ int stack_mode;
+} XWindowChanges;
+
+/*
+ * Data structure used by color operations
+ */
+typedef struct {
+ unsigned long pixel;
+ unsigned short red, green, blue;
+ char flags; /* do_red, do_green, do_blue */
+ char pad;
+} XColor;
+
+/*
+ * Data structures for graphics operations. On most machines, these are
+ * congruent with the wire protocol structures, so reformatting the data
+ * can be avoided on these architectures.
+ */
+typedef struct {
+ short x1, y1, x2, y2;
+} XSegment;
+
+typedef struct {
+ short x, y;
+} XPoint;
+
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+} XRectangle;
+
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+ short angle1, angle2;
+} XArc;
+
+
+/* Data structure for XChangeKeyboardControl */
+
+typedef struct {
+ int key_click_percent;
+ int bell_percent;
+ int bell_pitch;
+ int bell_duration;
+ int led;
+ int led_mode;
+ int key;
+ int auto_repeat_mode; /* On, Off, Default */
+} XKeyboardControl;
+
+/* Data structure for XGetKeyboardControl */
+
+typedef struct {
+ int key_click_percent;
+ int bell_percent;
+ unsigned int bell_pitch, bell_duration;
+ unsigned long led_mask;
+ int global_auto_repeat;
+ char auto_repeats[32];
+} XKeyboardState;
+
+/* Data structure for XGetMotionEvents. */
+
+typedef struct {
+ Time time;
+ short x, y;
+} XTimeCoord;
+
+/* Data structure for X{Set,Get}ModifierMapping */
+
+typedef struct {
+ int max_keypermod; /* The server's max # of keys per modifier */
+ KeyCode *modifiermap; /* An 8 by max_keypermod array of modifiers */
+} XModifierKeymap;
+
+
+/*
+ * Display datatype maintaining display specific data.
+ * The contents of this structure are implementation dependent.
+ * A Display should be treated as opaque by application code.
+ */
+typedef struct _XDisplay {
+ XExtData *ext_data; /* hook for extension to hang data */
+ struct _XFreeFuncs *free_funcs; /* internal free functions */
+ int fd; /* Network socket. */
+ int conn_checker; /* ugly thing used by _XEventsQueued */
+ int proto_major_version;/* maj. version of server's X protocol */
+ int proto_minor_version;/* minor version of servers X protocol */
+ char *vendor; /* vendor of the server hardware */
+ XID resource_base; /* resource ID base */
+ XID resource_mask; /* resource ID mask bits */
+ XID resource_id; /* allocator current ID */
+ int resource_shift; /* allocator shift to correct bits */
+ XID (*resource_alloc)(); /* allocator function */
+ int byte_order; /* screen byte order, LSBFirst, MSBFirst */
+ int bitmap_unit; /* padding and data requirements */
+ int bitmap_pad; /* padding requirements on bitmaps */
+ int bitmap_bit_order; /* LeastSignificant or MostSignificant */
+ int nformats; /* number of pixmap formats in list */
+ ScreenFormat *pixmap_format; /* pixmap format list */
+ int vnumber; /* Xlib's X protocol version number. */
+ int release; /* release of the server */
+ struct _XSQEvent *head, *tail; /* Input event queue. */
+ int qlen; /* Length of input event queue */
+ unsigned long request; /* sequence number of last request. */
+ char *last_req; /* beginning of last request, or dummy */
+ char *buffer; /* Output buffer starting address. */
+ char *bufptr; /* Output buffer index pointer. */
+ char *bufmax; /* Output buffer maximum+1 address. */
+ unsigned max_request_size; /* maximum number 32 bit words in request*/
+ struct _XrmHashBucketRec *db;
+ int (*synchandler)(); /* Synchronization handler */
+ char *display_name; /* "host:display" string used on this connect*/
+ int default_screen; /* default screen for operations */
+ int nscreens; /* number of screens on this server*/
+ Screen *screens; /* pointer to list of screens */
+ unsigned long motion_buffer; /* size of motion buffer */
+ unsigned long flags; /* internal connection flags */
+ int min_keycode; /* minimum defined keycode */
+ int max_keycode; /* maximum defined keycode */
+ KeySym *keysyms; /* This server's keysyms */
+ XModifierKeymap *modifiermap; /* This server's modifier keymap */
+ int keysyms_per_keycode;/* number of rows */
+ char *xdefaults; /* contents of defaults from server */
+ char *scratch_buffer; /* place to hang scratch buffer */
+ unsigned long scratch_length; /* length of scratch buffer */
+ int ext_number; /* extension number on this display */
+ struct _XExten *ext_procs; /* extensions initialized on this display */
+ /*
+ * the following can be fixed size, as the protocol defines how
+ * much address space is available.
+ * While this could be done using the extension vector, there
+ * may be MANY events processed, so a search through the extension
+ * list to find the right procedure for each event might be
+ * expensive if many extensions are being used.
+ */
+ Bool (*event_vec[128])(); /* vector for wire to event */
+ Status (*wire_vec[128])(); /* vector for event to wire */
+ KeySym lock_meaning; /* for XLookupString */
+ struct _XLockInfo *lock; /* multi-thread state, display lock */
+ struct _XInternalAsync *async_handlers; /* for internal async */
+ unsigned long bigreq_size; /* max size of big requests */
+ struct _XLockPtrs *lock_fns; /* pointers to threads functions */
+ /* things above this line should not move, for binary compatibility */
+ struct _XKeytrans *key_bindings; /* for XLookupString */
+ Font cursor_font; /* for XCreateFontCursor */
+ struct _XDisplayAtoms *atoms; /* for XInternAtom */
+ unsigned int mode_switch; /* keyboard group modifiers */
+ struct _XContextDB *context_db; /* context database */
+ Bool (**error_vec)(); /* vector for wire to error */
+ /*
+ * Xcms information
+ */
+ struct {
+ XPointer defaultCCCs; /* pointer to an array of default XcmsCCC */
+ XPointer clientCmaps; /* pointer to linked list of XcmsCmapRec */
+ XPointer perVisualIntensityMaps;
+ /* linked list of XcmsIntensityMap */
+ } cms;
+ struct _XIMFilter *im_filters;
+ struct _XSQEvent *qfree; /* unallocated event queue elements */
+ unsigned long next_event_serial_num; /* inserted into next queue elt */
+ int (*savedsynchandler)(); /* user synchandler when Xlib usurps */
+} Display;
+
+#if NeedFunctionPrototypes /* prototypes require event type definitions */
+#undef _XEVENT_
+#endif
+#ifndef _XEVENT_
+
+#define XMaxTransChars 4
+
+/*
+ * Definitions of specific events.
+ */
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window it is reported relative to */
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int keycode; /* detail */
+ Bool same_screen; /* same screen flag */
+ char trans_chars[XMaxTransChars];
+ /* translated characters */
+ int nbytes;
+} XKeyEvent;
+typedef XKeyEvent XKeyPressedEvent;
+typedef XKeyEvent XKeyReleasedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window it is reported relative to */
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int button; /* detail */
+ Bool same_screen; /* same screen flag */
+} XButtonEvent;
+typedef XButtonEvent XButtonPressedEvent;
+typedef XButtonEvent XButtonReleasedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ char is_hint; /* detail */
+ Bool same_screen; /* same screen flag */
+} XMotionEvent;
+typedef XMotionEvent XPointerMovedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonlinear,NotifyNonlinearVirtual
+ */
+ Bool same_screen; /* same screen flag */
+ Bool focus; /* boolean focus */
+ unsigned int state; /* key or button mask */
+} XCrossingEvent;
+typedef XCrossingEvent XEnterWindowEvent;
+typedef XCrossingEvent XLeaveWindowEvent;
+
+typedef struct {
+ int type; /* FocusIn or FocusOut */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* window of event */
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
+ * NotifyPointerRoot, NotifyDetailNone
+ */
+} XFocusChangeEvent;
+typedef XFocusChangeEvent XFocusInEvent;
+typedef XFocusChangeEvent XFocusOutEvent;
+
+/* generated on EnterWindow and FocusIn when KeyMapState selected */
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ char key_vector[32];
+} XKeymapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int x, y;
+ int width, height;
+ int count; /* if non-zero, at least this many more */
+} XExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable;
+ int x, y;
+ int width, height;
+ int count; /* if non-zero, at least this many more */
+ int major_code; /* core is CopyArea or CopyPlane */
+ int minor_code; /* not defined in the core */
+} XGraphicsExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable;
+ int major_code; /* core is CopyArea or CopyPlane */
+ int minor_code; /* not defined in the core */
+} XNoExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int state; /* Visibility state */
+} XVisibilityEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent; /* parent of the window */
+ Window window; /* window id of window created */
+ int x, y; /* window location */
+ int width, height; /* size of window */
+ int border_width; /* border width */
+ Bool override_redirect; /* creation should be overridden */
+} XCreateWindowEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+} XDestroyWindowEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Bool from_configure;
+} XUnmapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Bool override_redirect; /* boolean, is override set... */
+} XMapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+} XMapRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Window parent;
+ int x, y;
+ Bool override_redirect;
+} XReparentEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int x, y;
+ int width, height;
+ int border_width;
+ Window above;
+ Bool override_redirect;
+} XConfigureEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int x, y;
+} XGravityEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int width, height;
+} XResizeRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+ int x, y;
+ int width, height;
+ int border_width;
+ Window above;
+ int detail; /* Above, Below, TopIf, BottomIf, Opposite */
+ unsigned long value_mask;
+} XConfigureRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int place; /* PlaceOnTop, PlaceOnBottom */
+} XCirculateEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+ int place; /* PlaceOnTop, PlaceOnBottom */
+} XCirculateRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom atom;
+ Time time;
+ int state; /* NewValue, Deleted */
+} XPropertyEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom selection;
+ Time time;
+} XSelectionClearEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window owner;
+ Window requestor;
+ Atom selection;
+ Atom target;
+ Atom property;
+ Time time;
+} XSelectionRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window requestor;
+ Atom selection;
+ Atom target;
+ Atom property; /* ATOM or None */
+ Time time;
+} XSelectionEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Colormap colormap; /* COLORMAP or None */
+#if defined(__cplusplus) || defined(c_plusplus)
+ Bool c_new; /* C++ */
+#else
+ Bool new;
+#endif
+ int state; /* ColormapInstalled, ColormapUninstalled */
+} XColormapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom message_type;
+ int format;
+ union {
+ char b[20];
+ short s[10];
+ long l[5];
+ } data;
+} XClientMessageEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* unused */
+ int request; /* one of MappingModifier, MappingKeyboard,
+ MappingPointer */
+ int first_keycode; /* first keycode */
+ int count; /* defines range of change w. first_keycode*/
+} XMappingEvent;
+
+typedef struct {
+ int type;
+ Display *display; /* Display the event was read from */
+ XID resourceid; /* resource id */
+ unsigned long serial; /* serial number of failed request */
+ unsigned char error_code; /* error code of failed request */
+ unsigned char request_code; /* Major op-code of failed request */
+ unsigned char minor_code; /* Minor op-code of failed request */
+} XErrorEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display;/* Display the event was read from */
+ Window window; /* window on which event was requested in event mask */
+} XAnyEvent;
+
+/*
+ * this union is defined so Xlib can always use the same sized
+ * event structure internally, to avoid memory fragmentation.
+ */
+typedef union _XEvent {
+ int type; /* must not be changed; first element */
+ XAnyEvent xany;
+ XKeyEvent xkey;
+ XButtonEvent xbutton;
+ XMotionEvent xmotion;
+ XCrossingEvent xcrossing;
+ XFocusChangeEvent xfocus;
+ XExposeEvent xexpose;
+ XGraphicsExposeEvent xgraphicsexpose;
+ XNoExposeEvent xnoexpose;
+ XVisibilityEvent xvisibility;
+ XCreateWindowEvent xcreatewindow;
+ XDestroyWindowEvent xdestroywindow;
+ XUnmapEvent xunmap;
+ XMapEvent xmap;
+ XMapRequestEvent xmaprequest;
+ XReparentEvent xreparent;
+ XConfigureEvent xconfigure;
+ XGravityEvent xgravity;
+ XResizeRequestEvent xresizerequest;
+ XConfigureRequestEvent xconfigurerequest;
+ XCirculateEvent xcirculate;
+ XCirculateRequestEvent xcirculaterequest;
+ XPropertyEvent xproperty;
+ XSelectionClearEvent xselectionclear;
+ XSelectionRequestEvent xselectionrequest;
+ XSelectionEvent xselection;
+ XColormapEvent xcolormap;
+ XClientMessageEvent xclient;
+ XMappingEvent xmapping;
+ XErrorEvent xerror;
+ XKeymapEvent xkeymap;
+ long pad[24];
+} XEvent;
+#endif
+
+#define XAllocID(dpy) ((*(dpy)->resource_alloc)((dpy)))
+
+/*
+ * per character font metric information.
+ */
+typedef struct {
+ short lbearing; /* origin to left edge of raster */
+ short rbearing; /* origin to right edge of raster */
+ short width; /* advance to next char's origin */
+ short ascent; /* baseline to top edge of raster */
+ short descent; /* baseline to bottom edge of raster */
+ unsigned short attributes; /* per char flags (not predefined) */
+} XCharStruct;
+
+/*
+ * To allow arbitrary information with fonts, there are additional properties
+ * returned.
+ */
+typedef struct {
+ Atom name;
+ unsigned long card32;
+} XFontProp;
+
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ Font fid; /* Font id for this font */
+ unsigned direction; /* hint about direction the font is painted */
+ unsigned min_char_or_byte2;/* first character */
+ unsigned max_char_or_byte2;/* last character */
+ unsigned min_byte1; /* first row that exists */
+ unsigned max_byte1; /* last row that exists */
+ Bool all_chars_exist;/* flag if all characters have non-zero size*/
+ unsigned default_char; /* char to print for undefined character */
+ int n_properties; /* how many properties there are */
+ XFontProp *properties; /* pointer to array of additional properties*/
+ XCharStruct min_bounds; /* minimum bounds over all existing char*/
+ XCharStruct max_bounds; /* maximum bounds over all existing char*/
+ XCharStruct *per_char; /* first_char to last_char information */
+ int ascent; /* log. extent above baseline for spacing */
+ int descent; /* log. descent below baseline for spacing */
+} XFontStruct;
+
+/*
+ * PolyText routines take these as arguments.
+ */
+typedef struct {
+ char *chars; /* pointer to string */
+ int nchars; /* number of characters */
+ int delta; /* delta between strings */
+ Font font; /* font to print it in, None don't change */
+} XTextItem;
+
+typedef struct { /* normal 16 bit characters are two bytes */
+ unsigned char byte1;
+ unsigned char byte2;
+} XChar2b;
+
+typedef struct {
+ XChar2b *chars; /* two byte characters */
+ int nchars; /* number of characters */
+ int delta; /* delta between strings */
+ Font font; /* font to print it in, None don't change */
+} XTextItem16;
+
+
+typedef union { Display *display;
+ GC gc;
+ Visual *visual;
+ Screen *screen;
+ ScreenFormat *pixmap_format;
+ XFontStruct *font; } XEDataObject;
+
+typedef struct {
+ XRectangle max_ink_extent;
+ XRectangle max_logical_extent;
+} XFontSetExtents;
+
+typedef struct _XFontSet *XFontSet;
+
+typedef struct {
+ char *chars;
+ int nchars;
+ int delta;
+ XFontSet font_set;
+} XmbTextItem;
+
+typedef struct {
+ wchar_t *chars;
+ int nchars;
+ int delta;
+ XFontSet font_set;
+} XwcTextItem;
+
+typedef void (*XIMProc)();
+
+typedef struct _XIM *XIM;
+typedef struct _XIC *XIC;
+
+typedef unsigned long XIMStyle;
+
+typedef struct {
+ unsigned short count_styles;
+ XIMStyle *supported_styles;
+} XIMStyles;
+
+#define XIMPreeditArea 0x0001L
+#define XIMPreeditCallbacks 0x0002L
+#define XIMPreeditPosition 0x0004L
+#define XIMPreeditNothing 0x0008L
+#define XIMPreeditNone 0x0010L
+#define XIMStatusArea 0x0100L
+#define XIMStatusCallbacks 0x0200L
+#define XIMStatusNothing 0x0400L
+#define XIMStatusNone 0x0800L
+
+#define XNVaNestedList "XNVaNestedList"
+#define XNClientWindow "clientWindow"
+#define XNInputStyle "inputStyle"
+#define XNFocusWindow "focusWindow"
+#define XNResourceName "resourceName"
+#define XNResourceClass "resourceClass"
+#define XNGeometryCallback "geometryCallback"
+#define XNFilterEvents "filterEvents"
+#define XNPreeditStartCallback "preeditStartCallback"
+#define XNPreeditDoneCallback "preeditDoneCallback"
+#define XNPreeditDrawCallback "preeditDrawCallback"
+#define XNPreeditCaretCallback "preeditCaretCallback"
+#define XNPreeditAttributes "preeditAttributes"
+#define XNStatusStartCallback "statusStartCallback"
+#define XNStatusDoneCallback "statusDoneCallback"
+#define XNStatusDrawCallback "statusDrawCallback"
+#define XNStatusAttributes "statusAttributes"
+#define XNArea "area"
+#define XNAreaNeeded "areaNeeded"
+#define XNSpotLocation "spotLocation"
+#define XNColormap "colorMap"
+#define XNStdColormap "stdColorMap"
+#define XNForeground "foreground"
+#define XNBackground "background"
+#define XNBackgroundPixmap "backgroundPixmap"
+#define XNFontSet "fontSet"
+#define XNLineSpace "lineSpace"
+#define XNCursor "cursor"
+
+#define XBufferOverflow -1
+#define XLookupNone 1
+#define XLookupChars 2
+#define XLookupKeySym 3
+#define XLookupBoth 4
+
+#if NeedFunctionPrototypes
+typedef void *XVaNestedList;
+#else
+typedef XPointer XVaNestedList;
+#endif
+
+typedef struct {
+ XPointer client_data;
+ XIMProc callback;
+} XIMCallback;
+
+typedef unsigned long XIMFeedback;
+
+#define XIMReverse 1
+#define XIMUnderline (1<<1)
+#define XIMHighlight (1<<2)
+#define XIMPrimary (1<<5)
+#define XIMSecondary (1<<6)
+#define XIMTertiary (1<<7)
+
+typedef struct _XIMText {
+ unsigned short length;
+ XIMFeedback *feedback;
+ Bool encoding_is_wchar;
+ union {
+ char *multi_byte;
+ wchar_t *wide_char;
+ } string;
+} XIMText;
+
+typedef struct _XIMPreeditDrawCallbackStruct {
+ int caret; /* Cursor offset within pre-edit string */
+ int chg_first; /* Starting change position */
+ int chg_length; /* Length of the change in character count */
+ XIMText *text;
+} XIMPreeditDrawCallbackStruct;
+
+typedef enum {
+ XIMForwardChar, XIMBackwardChar,
+ XIMForwardWord, XIMBackwardWord,
+ XIMCaretUp, XIMCaretDown,
+ XIMNextLine, XIMPreviousLine,
+ XIMLineStart, XIMLineEnd,
+ XIMAbsolutePosition,
+ XIMDontChange
+} XIMCaretDirection;
+
+typedef enum {
+ XIMIsInvisible, /* Disable caret feedback */
+ XIMIsPrimary, /* UI defined caret feedback */
+ XIMIsSecondary /* UI defined caret feedback */
+} XIMCaretStyle;
+
+typedef struct _XIMPreeditCaretCallbackStruct {
+ int position; /* Caret offset within pre-edit string */
+ XIMCaretDirection direction; /* Caret moves direction */
+ XIMCaretStyle style; /* Feedback of the caret */
+} XIMPreeditCaretCallbackStruct;
+
+typedef enum {
+ XIMTextType,
+ XIMBitmapType
+} XIMStatusDataType;
+
+typedef struct _XIMStatusDrawCallbackStruct {
+ XIMStatusDataType type;
+ union {
+ XIMText *text;
+ Pixmap bitmap;
+ } data;
+} XIMStatusDrawCallbackStruct;
+
+typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XErrorEvent* /* error_event */
+#endif
+);
+
+_XFUNCPROTOBEGIN
+
+
+
+#include "tkIntXlibDecls.h"
+
+_XFUNCPROTOEND
+
+#if defined(MAC_OSX_TK)
+# undef Cursor
+# undef Region
+#endif
+
+#endif /* _XLIB_H_ */
diff --git a/cobroutines/X11/Xutil.h b/cobroutines/X11/Xutil.h
new file mode 100644
index 0000000..e42ed5d
--- /dev/null
+++ b/cobroutines/X11/Xutil.h
@@ -0,0 +1,855 @@
+/* $XConsortium: Xutil.h,v 11.73 91/07/30 16:21:37 rws Exp $ */
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifndef _XUTIL_H_
+#define _XUTIL_H_
+
+/* You must include before including this file */
+
+#if defined(MAC_OSX_TK)
+# define Region XRegion
+#endif
+
+/*
+ * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding
+ * value (x, y, width, height) was found in the parsed string.
+ */
+#define NoValue 0x0000
+#define XValue 0x0001
+#define YValue 0x0002
+#define WidthValue 0x0004
+#define HeightValue 0x0008
+#define AllValues 0x000F
+#define XNegative 0x0010
+#define YNegative 0x0020
+
+/*
+ * new version containing base_width, base_height, and win_gravity fields;
+ * used with WM_NORMAL_HINTS.
+ */
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ int x, y; /* obsolete for new window mgrs, but clients */
+ int width, height; /* should set so old wm's don't mess up */
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+ struct {
+ int x; /* numerator */
+ int y; /* denominator */
+ } min_aspect, max_aspect;
+ int base_width, base_height; /* added by ICCCM version 1 */
+ int win_gravity; /* added by ICCCM version 1 */
+} XSizeHints;
+
+/*
+ * The next block of definitions are for window manager properties that
+ * clients and applications use for communication.
+ */
+
+/* flags argument in size hints */
+#define USPosition (1L << 0) /* user specified x, y */
+#define USSize (1L << 1) /* user specified width, height */
+
+#define PPosition (1L << 2) /* program specified position */
+#define PSize (1L << 3) /* program specified size */
+#define PMinSize (1L << 4) /* program specified minimum size */
+#define PMaxSize (1L << 5) /* program specified maximum size */
+#define PResizeInc (1L << 6) /* program specified resize increments */
+#define PAspect (1L << 7) /* program specified min and max aspect ratios */
+#define PBaseSize (1L << 8) /* program specified base for incrementing */
+#define PWinGravity (1L << 9) /* program specified window gravity */
+
+/* obsolete */
+#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)
+
+
+
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ Bool input; /* does this application rely on the window manager to
+ get keyboard input? */
+ int initial_state; /* see below */
+ Pixmap icon_pixmap; /* pixmap to be used as icon */
+ Window icon_window; /* window to be used as icon */
+ int icon_x, icon_y; /* initial position of icon */
+ Pixmap icon_mask; /* icon mask bitmap */
+ XID window_group; /* id of related window group */
+ /* this structure may be extended in the future */
+} XWMHints;
+
+/* definition for flags of XWMHints */
+
+#define InputHint (1L << 0)
+#define StateHint (1L << 1)
+#define IconPixmapHint (1L << 2)
+#define IconWindowHint (1L << 3)
+#define IconPositionHint (1L << 4)
+#define IconMaskHint (1L << 5)
+#define WindowGroupHint (1L << 6)
+#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
+IconPositionHint|IconMaskHint|WindowGroupHint)
+
+/* definitions for initial window state */
+#define WithdrawnState 0 /* for windows that are not mapped */
+#define NormalState 1 /* most applications want to start this way */
+#define IconicState 3 /* application wants to start as an icon */
+
+/*
+ * Obsolete states no longer defined by ICCCM
+ */
+#define DontCareState 0 /* don't know or care */
+#define ZoomState 2 /* application wants to start zoomed */
+#define InactiveState 4 /* application believes it is seldom used; */
+ /* some wm's may put it on inactive menu */
+
+
+/*
+ * new structure for manipulating TEXT properties; used with WM_NAME,
+ * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
+ */
+typedef struct {
+ unsigned char *value; /* same as Property routines */
+ Atom encoding; /* prop type */
+ int format; /* prop data format: 8, 16, or 32 */
+ unsigned long nitems; /* number of data items in value */
+} XTextProperty;
+
+#define XNoMemory -1
+#define XLocaleNotSupported -2
+#define XConverterNotFound -3
+
+typedef enum {
+ XStringStyle, /* STRING */
+ XCompoundTextStyle, /* COMPOUND_TEXT */
+ XTextStyle, /* text in owner's encoding (current locale)*/
+ XStdICCTextStyle /* STRING, else COMPOUND_TEXT */
+} XICCEncodingStyle;
+
+typedef struct {
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+} XIconSize;
+
+typedef struct {
+ char *res_name;
+ char *res_class;
+} XClassHint;
+
+/*
+ * These macros are used to give some sugar to the image routines so that
+ * naive people are more comfortable with them.
+ */
+#define XDestroyImage(ximage) \
+ ((*((ximage)->f.destroy_image))((ximage)))
+#define XGetPixel(ximage, x, y) \
+ ((*((ximage)->f.get_pixel))((ximage), (x), (y)))
+#define XPutPixel(ximage, x, y, pixel) \
+ ((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
+#define XSubImage(ximage, x, y, width, height) \
+ ((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
+#define XAddPixel(ximage, value) \
+ ((*((ximage)->f.add_pixel))((ximage), (value)))
+
+/*
+ * Compose sequence status structure, used in calling XLookupString.
+ */
+typedef struct _XComposeStatus {
+ XPointer compose_ptr; /* state table pointer */
+ int chars_matched; /* match state */
+} XComposeStatus;
+
+/*
+ * Keysym macros, used on Keysyms to test for classes of symbols
+ */
+#define IsKeypadKey(keysym) \
+ (((unsigned)(keysym) >= XK_KP_Space) && ((unsigned)(keysym) <= XK_KP_Equal))
+
+#define IsCursorKey(keysym) \
+ (((unsigned)(keysym) >= XK_Home) && ((unsigned)(keysym) < XK_Select))
+
+#define IsPFKey(keysym) \
+ (((unsigned)(keysym) >= XK_KP_F1) && ((unsigned)(keysym) <= XK_KP_F4))
+
+#define IsFunctionKey(keysym) \
+ (((unsigned)(keysym) >= XK_F1) && ((unsigned)(keysym) <= XK_F35))
+
+#define IsMiscFunctionKey(keysym) \
+ (((unsigned)(keysym) >= XK_Select) && ((unsigned)(keysym) <= XK_Break))
+
+#define IsModifierKey(keysym) \
+ ((((unsigned)(keysym) >= XK_Shift_L) && ((unsigned)(keysym) <= XK_Hyper_R)) \
+ || ((unsigned)(keysym) == XK_Mode_switch) \
+ || ((unsigned)(keysym) == XK_Num_Lock))
+/*
+ * opaque reference to Region data type
+ */
+typedef struct _XRegion *Region;
+
+/* Return values from XRectInRegion() */
+
+#define RectangleOut 0
+#define RectangleIn 1
+#define RectanglePart 2
+
+
+/*
+ * Information used by the visual utility routines to find desired visual
+ * type from the many visuals a display may support.
+ */
+
+typedef struct {
+ Visual *visual;
+ VisualID visualid;
+ int screen;
+ int depth;
+#if defined(__cplusplus) || defined(c_plusplus)
+ int c_class; /* C++ */
+#else
+ int class;
+#endif
+ unsigned long red_mask;
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ int colormap_size;
+ int bits_per_rgb;
+} XVisualInfo;
+
+#define VisualNoMask 0x0
+#define VisualIDMask 0x1
+#define VisualScreenMask 0x2
+#define VisualDepthMask 0x4
+#define VisualClassMask 0x8
+#define VisualRedMaskMask 0x10
+#define VisualGreenMaskMask 0x20
+#define VisualBlueMaskMask 0x40
+#define VisualColormapSizeMask 0x80
+#define VisualBitsPerRGBMask 0x100
+#define VisualAllMask 0x1FF
+
+/*
+ * This defines a window manager property that clients may use to
+ * share standard color maps of type RGB_COLOR_MAP:
+ */
+typedef struct {
+ Colormap colormap;
+ unsigned long red_max;
+ unsigned long red_mult;
+ unsigned long green_max;
+ unsigned long green_mult;
+ unsigned long blue_max;
+ unsigned long blue_mult;
+ unsigned long base_pixel;
+ VisualID visualid; /* added by ICCCM version 1 */
+ XID killid; /* added by ICCCM version 1 */
+} XStandardColormap;
+
+#define ReleaseByFreeingColormap ((XID) 1L) /* for killid field above */
+
+
+/*
+ * return codes for XReadBitmapFile and XWriteBitmapFile
+ */
+#define BitmapSuccess 0
+#define BitmapOpenFailed 1
+#define BitmapFileInvalid 2
+#define BitmapNoMemory 3
+
+/****************************************************************
+ *
+ * Context Management
+ *
+ ****************************************************************/
+
+
+/* Associative lookup table return codes */
+
+#define XCSUCCESS 0 /* No error. */
+#define XCNOMEM 1 /* Out of memory */
+#define XCNOENT 2 /* No entry in table */
+
+typedef int XContext;
+
+#define XUniqueContext() ((XContext) XrmUniqueQuark())
+#define XStringToContext(string) ((XContext) XrmStringToQuark(string))
+
+_XFUNCPROTOBEGIN
+
+/* The following declarations are alphabetized. */
+
+extern XClassHint *XAllocClassHint (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern XIconSize *XAllocIconSize (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern XSizeHints *XAllocSizeHints (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern XStandardColormap *XAllocStandardColormap (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern XWMHints *XAllocWMHints (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern void XClipBox(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ XRectangle* /* rect_return */
+#endif
+);
+
+extern Region XCreateRegion(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern char *XDefaultString(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern int XDeleteContext(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */
+#endif
+);
+
+extern void XDestroyRegion(
+#if NeedFunctionPrototypes
+ Region /* r */
+#endif
+);
+
+extern void XEmptyRegion(
+#if NeedFunctionPrototypes
+ Region /* r */
+#endif
+);
+
+extern void XEqualRegion(
+#if NeedFunctionPrototypes
+ Region /* r1 */,
+ Region /* r2 */
+#endif
+);
+
+extern int XFindContext(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */,
+ XPointer* /* data_return */
+#endif
+);
+
+extern Status XGetClassHint(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XClassHint* /* class_hints_return */
+#endif
+);
+
+extern Status XGetIconSizes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XIconSize** /* size_list_return */,
+ int* /* count_return */
+#endif
+);
+
+extern Status XGetNormalHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */
+#endif
+);
+
+extern Status XGetRGBColormaps(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap** /* stdcmap_return */,
+ int* /* count_return */,
+ Atom /* property */
+#endif
+);
+
+extern Status XGetSizeHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ Atom /* property */
+#endif
+);
+
+extern Status XGetStandardColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* colormap_return */,
+ Atom /* property */
+#endif
+);
+
+extern Status XGetTextProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* window */,
+ XTextProperty* /* text_prop_return */,
+ Atom /* property */
+#endif
+);
+
+
+extern Status XGetWMClientMachine(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern XWMHints *XGetWMHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern Status XGetWMIconName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern Status XGetWMName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern Status XGetWMNormalHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ long* /* supplied_return */
+#endif
+);
+
+extern Status XGetWMSizeHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ long* /* supplied_return */,
+ Atom /* property */
+#endif
+);
+
+extern Status XGetZoomHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* zhints_return */
+#endif
+);
+
+extern void XIntersectRegion(
+#if NeedFunctionPrototypes
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+#endif
+);
+
+extern int XLookupString(
+#if NeedFunctionPrototypes
+ XKeyEvent* /* event_struct */,
+ char* /* buffer_return */,
+ int /* bytes_buffer */,
+ KeySym* /* keysym_return */,
+ XComposeStatus* /* status_in_out */
+#endif
+);
+
+extern Status XMatchVisualInfo(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen */,
+ int /* depth */,
+ int /* class */,
+ XVisualInfo* /* vinfo_return */
+#endif
+);
+
+extern void XOffsetRegion(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ int /* dx */,
+ int /* dy */
+#endif
+);
+
+extern Bool XPointInRegion(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ int /* x */,
+ int /* y */
+#endif
+);
+
+extern Region XPolygonRegion(
+#if NeedFunctionPrototypes
+ XPoint* /* points */,
+ int /* n */,
+ int /* fill_rule */
+#endif
+);
+
+extern int XRectInRegion(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+#endif
+);
+
+extern int XSaveContext(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */,
+ _Xconst char* /* data */
+#endif
+);
+
+extern void XSetClassHint(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XClassHint* /* class_hints */
+#endif
+);
+
+extern void XSetIconSizes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XIconSize* /* size_list */,
+ int /* count */
+#endif
+);
+
+extern void XSetNormalHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */
+#endif
+);
+
+extern void XSetRGBColormaps(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* stdcmaps */,
+ int /* count */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetSizeHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetStandardProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ _Xconst char* /* window_name */,
+ _Xconst char* /* icon_name */,
+ Pixmap /* icon_pixmap */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* hints */
+#endif
+);
+
+extern void XSetTextProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetWMHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XWMHints* /* wm_hints */
+#endif
+);
+
+extern void XSetWMIconName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */
+#endif
+);
+
+extern void XSetWMName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */
+#endif
+);
+
+extern void XSetWMNormalHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */
+#endif
+);
+
+extern void XSetWMProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* window_name */,
+ XTextProperty* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+#endif
+);
+
+extern void XmbSetWMProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ _Xconst char* /* window_name */,
+ _Xconst char* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+#endif
+);
+
+extern void XSetWMSizeHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetRegion(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ Region /* r */
+#endif
+);
+
+extern void XSetStandardColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* colormap */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetZoomHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* zhints */
+#endif
+);
+
+extern void XShrinkRegion(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ int /* dx */,
+ int /* dy */
+#endif
+);
+
+extern void XSubtractRegion(
+#if NeedFunctionPrototypes
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+#endif
+);
+
+extern int XmbTextListToTextProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ char** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern int XwcTextListToTextProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ wchar_t** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern void XwcFreeStringList(
+#if NeedFunctionPrototypes
+ wchar_t** /* list */
+#endif
+);
+
+extern Status XTextPropertyToStringList(
+#if NeedFunctionPrototypes
+ XTextProperty* /* text_prop */,
+ char*** /* list_return */,
+ int* /* count_return */
+#endif
+);
+
+extern int XmbTextPropertyToTextList(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XTextProperty* /* text_prop */,
+ char*** /* list_return */,
+ int* /* count_return */
+#endif
+);
+
+extern int XwcTextPropertyToTextList(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XTextProperty* /* text_prop */,
+ wchar_t*** /* list_return */,
+ int* /* count_return */
+#endif
+);
+
+extern void XUnionRectWithRegion(
+#if NeedFunctionPrototypes
+ XRectangle* /* rectangle */,
+ Region /* src_region */,
+ Region /* dest_region_return */
+#endif
+);
+
+extern void XUnionRegion(
+#if NeedFunctionPrototypes
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+#endif
+);
+
+extern int XWMGeometry(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */,
+ _Xconst char* /* user_geometry */,
+ _Xconst char* /* default_geometry */,
+ unsigned int /* border_width */,
+ XSizeHints* /* hints */,
+ int* /* x_return */,
+ int* /* y_return */,
+ int* /* width_return */,
+ int* /* height_return */,
+ int* /* gravity_return */
+#endif
+);
+
+extern void XXorRegion(
+#if NeedFunctionPrototypes
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+#endif
+);
+
+_XFUNCPROTOEND
+
+#if defined(MAC_OSX_TK)
+# undef Region
+#endif
+
+#endif /* _XUTIL_H_ */
diff --git a/cobroutines/X11/cursorfont.h b/cobroutines/X11/cursorfont.h
new file mode 100644
index 0000000..617274f
--- /dev/null
+++ b/cobroutines/X11/cursorfont.h
@@ -0,0 +1,79 @@
+/* $XConsortium: cursorfont.h,v 1.2 88/09/06 16:44:27 jim Exp $ */
+#define XC_num_glyphs 154
+#define XC_X_cursor 0
+#define XC_arrow 2
+#define XC_based_arrow_down 4
+#define XC_based_arrow_up 6
+#define XC_boat 8
+#define XC_bogosity 10
+#define XC_bottom_left_corner 12
+#define XC_bottom_right_corner 14
+#define XC_bottom_side 16
+#define XC_bottom_tee 18
+#define XC_box_spiral 20
+#define XC_center_ptr 22
+#define XC_circle 24
+#define XC_clock 26
+#define XC_coffee_mug 28
+#define XC_cross 30
+#define XC_cross_reverse 32
+#define XC_crosshair 34
+#define XC_diamond_cross 36
+#define XC_dot 38
+#define XC_dotbox 40
+#define XC_double_arrow 42
+#define XC_draft_large 44
+#define XC_draft_small 46
+#define XC_draped_box 48
+#define XC_exchange 50
+#define XC_fleur 52
+#define XC_gobbler 54
+#define XC_gumby 56
+#define XC_hand1 58
+#define XC_hand2 60
+#define XC_heart 62
+#define XC_icon 64
+#define XC_iron_cross 66
+#define XC_left_ptr 68
+#define XC_left_side 70
+#define XC_left_tee 72
+#define XC_leftbutton 74
+#define XC_ll_angle 76
+#define XC_lr_angle 78
+#define XC_man 80
+#define XC_middlebutton 82
+#define XC_mouse 84
+#define XC_pencil 86
+#define XC_pirate 88
+#define XC_plus 90
+#define XC_question_arrow 92
+#define XC_right_ptr 94
+#define XC_right_side 96
+#define XC_right_tee 98
+#define XC_rightbutton 100
+#define XC_rtl_logo 102
+#define XC_sailboat 104
+#define XC_sb_down_arrow 106
+#define XC_sb_h_double_arrow 108
+#define XC_sb_left_arrow 110
+#define XC_sb_right_arrow 112
+#define XC_sb_up_arrow 114
+#define XC_sb_v_double_arrow 116
+#define XC_shuttle 118
+#define XC_sizing 120
+#define XC_spider 122
+#define XC_spraycan 124
+#define XC_star 126
+#define XC_target 128
+#define XC_tcross 130
+#define XC_top_left_arrow 132
+#define XC_top_left_corner 134
+#define XC_top_right_corner 136
+#define XC_top_side 138
+#define XC_top_tee 140
+#define XC_trek 142
+#define XC_ul_angle 144
+#define XC_umbrella 146
+#define XC_ur_angle 148
+#define XC_watch 150
+#define XC_xterm 152
diff --git a/cobroutines/X11/keysym.h b/cobroutines/X11/keysym.h
new file mode 100644
index 0000000..a8f1408
--- /dev/null
+++ b/cobroutines/X11/keysym.h
@@ -0,0 +1,35 @@
+/* $XConsortium: keysym.h,v 1.13 91/03/13 20:09:49 rws Exp $ */
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/* default keysyms */
+#define XK_MISCELLANY
+#define XK_LATIN1
+#define XK_LATIN2
+#define XK_LATIN3
+#define XK_LATIN4
+#define XK_GREEK
+
+#include
diff --git a/cobroutines/X11/keysymdef.h b/cobroutines/X11/keysymdef.h
new file mode 100644
index 0000000..b22d41b
--- /dev/null
+++ b/cobroutines/X11/keysymdef.h
@@ -0,0 +1,1169 @@
+/* $XConsortium: keysymdef.h,v 1.15 93/04/02 10:57:36 rws Exp $ */
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#define XK_VoidSymbol 0xFFFFFF /* void symbol */
+
+#ifdef XK_MISCELLANY
+/*
+ * TTY Functions, cleverly chosen to map to ascii, for convenience of
+ * programming, but could have been arbitrary (at the cost of lookup
+ * tables in client code.
+ */
+
+#define XK_BackSpace 0xFF08 /* back space, back char */
+#define XK_Tab 0xFF09
+#define XK_Linefeed 0xFF0A /* Linefeed, LF */
+#define XK_Clear 0xFF0B
+#define XK_Return 0xFF0D /* Return, enter */
+#define XK_Pause 0xFF13 /* Pause, hold */
+#define XK_Scroll_Lock 0xFF14
+#define XK_Sys_Req 0xFF15
+#define XK_Escape 0xFF1B
+#define XK_Delete 0xFFFF /* Delete, rubout */
+
+
+
+/* International & multi-key character composition */
+
+#define XK_Multi_key 0xFF20 /* Multi-key character compose */
+
+/* Japanese keyboard support */
+
+#define XK_Kanji 0xFF21 /* Kanji, Kanji convert */
+#define XK_Muhenkan 0xFF22 /* Cancel Conversion */
+#define XK_Henkan_Mode 0xFF23 /* Start/Stop Conversion */
+#define XK_Henkan 0xFF23 /* Alias for Henkan_Mode */
+#define XK_Romaji 0xFF24 /* to Romaji */
+#define XK_Hiragana 0xFF25 /* to Hiragana */
+#define XK_Katakana 0xFF26 /* to Katakana */
+#define XK_Hiragana_Katakana 0xFF27 /* Hiragana/Katakana toggle */
+#define XK_Zenkaku 0xFF28 /* to Zenkaku */
+#define XK_Hankaku 0xFF29 /* to Hankaku */
+#define XK_Zenkaku_Hankaku 0xFF2A /* Zenkaku/Hankaku toggle */
+#define XK_Touroku 0xFF2B /* Add to Dictionary */
+#define XK_Massyo 0xFF2C /* Delete from Dictionary */
+#define XK_Kana_Lock 0xFF2D /* Kana Lock */
+#define XK_Kana_Shift 0xFF2E /* Kana Shift */
+#define XK_Eisu_Shift 0xFF2F /* Alphanumeric Shift */
+#define XK_Eisu_toggle 0xFF30 /* Alphanumeric toggle */
+
+/* Cursor control & motion */
+
+#define XK_Home 0xFF50
+#define XK_Left 0xFF51 /* Move left, left arrow */
+#define XK_Up 0xFF52 /* Move up, up arrow */
+#define XK_Right 0xFF53 /* Move right, right arrow */
+#define XK_Down 0xFF54 /* Move down, down arrow */
+#define XK_Prior 0xFF55 /* Prior, previous */
+#define XK_Page_Up 0xFF55
+#define XK_Next 0xFF56 /* Next */
+#define XK_Page_Down 0xFF56
+#define XK_End 0xFF57 /* EOL */
+#define XK_Begin 0xFF58 /* BOL */
+
+/* Special Windows keyboard keys */
+
+#define XK_Win_L 0xFF5B /* Left-hand Windows */
+#define XK_Win_R 0xFF5C /* Right-hand Windows */
+#define XK_App 0xFF5D /* Menu key */
+
+/* Misc Functions */
+
+#define XK_Select 0xFF60 /* Select, mark */
+#define XK_Print 0xFF61
+#define XK_Execute 0xFF62 /* Execute, run, do */
+#define XK_Insert 0xFF63 /* Insert, insert here */
+#define XK_Undo 0xFF65 /* Undo, oops */
+#define XK_Redo 0xFF66 /* redo, again */
+#define XK_Menu 0xFF67
+#define XK_Find 0xFF68 /* Find, search */
+#define XK_Cancel 0xFF69 /* Cancel, stop, abort, exit */
+#define XK_Help 0xFF6A /* Help, ? */
+#define XK_Break 0xFF6B
+#define XK_Mode_switch 0xFF7E /* Character set switch */
+#define XK_script_switch 0xFF7E /* Alias for mode_switch */
+#define XK_Num_Lock 0xFF7F
+
+/* Keypad Functions, keypad numbers cleverly chosen to map to ascii */
+
+#define XK_KP_Space 0xFF80 /* space */
+#define XK_KP_Tab 0xFF89
+#define XK_KP_Enter 0xFF8D /* enter */
+#define XK_KP_F1 0xFF91 /* PF1, KP_A, ... */
+#define XK_KP_F2 0xFF92
+#define XK_KP_F3 0xFF93
+#define XK_KP_F4 0xFF94
+#define XK_KP_Home 0xFF95
+#define XK_KP_Left 0xFF96
+#define XK_KP_Up 0xFF97
+#define XK_KP_Right 0xFF98
+#define XK_KP_Down 0xFF99
+#define XK_KP_Prior 0xFF9A
+#define XK_KP_Page_Up 0xFF9A
+#define XK_KP_Next 0xFF9B
+#define XK_KP_Page_Down 0xFF9B
+#define XK_KP_End 0xFF9C
+#define XK_KP_Begin 0xFF9D
+#define XK_KP_Insert 0xFF9E
+#define XK_KP_Delete 0xFF9F
+#define XK_KP_Equal 0xFFBD /* equals */
+#define XK_KP_Multiply 0xFFAA
+#define XK_KP_Add 0xFFAB
+#define XK_KP_Separator 0xFFAC /* separator, often comma */
+#define XK_KP_Subtract 0xFFAD
+#define XK_KP_Decimal 0xFFAE
+#define XK_KP_Divide 0xFFAF
+
+#define XK_KP_0 0xFFB0
+#define XK_KP_1 0xFFB1
+#define XK_KP_2 0xFFB2
+#define XK_KP_3 0xFFB3
+#define XK_KP_4 0xFFB4
+#define XK_KP_5 0xFFB5
+#define XK_KP_6 0xFFB6
+#define XK_KP_7 0xFFB7
+#define XK_KP_8 0xFFB8
+#define XK_KP_9 0xFFB9
+
+
+
+/*
+ * Auxilliary Functions; note the duplicate definitions for left and right
+ * function keys; Sun keyboards and a few other manufactures have such
+ * function key groups on the left and/or right sides of the keyboard.
+ * We've not found a keyboard with more than 35 function keys total.
+ */
+
+#define XK_F1 0xFFBE
+#define XK_F2 0xFFBF
+#define XK_F3 0xFFC0
+#define XK_F4 0xFFC1
+#define XK_F5 0xFFC2
+#define XK_F6 0xFFC3
+#define XK_F7 0xFFC4
+#define XK_F8 0xFFC5
+#define XK_F9 0xFFC6
+#define XK_F10 0xFFC7
+#define XK_F11 0xFFC8
+#define XK_L1 0xFFC8
+#define XK_F12 0xFFC9
+#define XK_L2 0xFFC9
+#define XK_F13 0xFFCA
+#define XK_L3 0xFFCA
+#define XK_F14 0xFFCB
+#define XK_L4 0xFFCB
+#define XK_F15 0xFFCC
+#define XK_L5 0xFFCC
+#define XK_F16 0xFFCD
+#define XK_L6 0xFFCD
+#define XK_F17 0xFFCE
+#define XK_L7 0xFFCE
+#define XK_F18 0xFFCF
+#define XK_L8 0xFFCF
+#define XK_F19 0xFFD0
+#define XK_L9 0xFFD0
+#define XK_F20 0xFFD1
+#define XK_L10 0xFFD1
+#define XK_F21 0xFFD2
+#define XK_R1 0xFFD2
+#define XK_F22 0xFFD3
+#define XK_R2 0xFFD3
+#define XK_F23 0xFFD4
+#define XK_R3 0xFFD4
+#define XK_F24 0xFFD5
+#define XK_R4 0xFFD5
+#define XK_F25 0xFFD6
+#define XK_R5 0xFFD6
+#define XK_F26 0xFFD7
+#define XK_R6 0xFFD7
+#define XK_F27 0xFFD8
+#define XK_R7 0xFFD8
+#define XK_F28 0xFFD9
+#define XK_R8 0xFFD9
+#define XK_F29 0xFFDA
+#define XK_R9 0xFFDA
+#define XK_F30 0xFFDB
+#define XK_R10 0xFFDB
+#define XK_F31 0xFFDC
+#define XK_R11 0xFFDC
+#define XK_F32 0xFFDD
+#define XK_R12 0xFFDD
+#define XK_F33 0xFFDE
+#define XK_R13 0xFFDE
+#define XK_F34 0xFFDF
+#define XK_R14 0xFFDF
+#define XK_F35 0xFFE0
+#define XK_R15 0xFFE0
+
+/* Modifiers */
+
+#define XK_Shift_L 0xFFE1 /* Left shift */
+#define XK_Shift_R 0xFFE2 /* Right shift */
+#define XK_Control_L 0xFFE3 /* Left control */
+#define XK_Control_R 0xFFE4 /* Right control */
+#define XK_Caps_Lock 0xFFE5 /* Caps lock */
+#define XK_Shift_Lock 0xFFE6 /* Shift lock */
+
+#define XK_Meta_L 0xFFE7 /* Left meta */
+#define XK_Meta_R 0xFFE8 /* Right meta */
+#define XK_Alt_L 0xFFE9 /* Left alt */
+#define XK_Alt_R 0xFFEA /* Right alt */
+#define XK_Super_L 0xFFEB /* Left super */
+#define XK_Super_R 0xFFEC /* Right super */
+#define XK_Hyper_L 0xFFED /* Left hyper */
+#define XK_Hyper_R 0xFFEE /* Right hyper */
+#endif /* XK_MISCELLANY */
+
+/*
+ * Latin 1
+ * Byte 3 = 0
+ */
+#ifdef XK_LATIN1
+#define XK_space 0x020
+#define XK_exclam 0x021
+#define XK_quotedbl 0x022
+#define XK_numbersign 0x023
+#define XK_dollar 0x024
+#define XK_percent 0x025
+#define XK_ampersand 0x026
+#define XK_apostrophe 0x027
+#define XK_quoteright 0x027 /* deprecated */
+#define XK_parenleft 0x028
+#define XK_parenright 0x029
+#define XK_asterisk 0x02a
+#define XK_plus 0x02b
+#define XK_comma 0x02c
+#define XK_minus 0x02d
+#define XK_period 0x02e
+#define XK_slash 0x02f
+#define XK_0 0x030
+#define XK_1 0x031
+#define XK_2 0x032
+#define XK_3 0x033
+#define XK_4 0x034
+#define XK_5 0x035
+#define XK_6 0x036
+#define XK_7 0x037
+#define XK_8 0x038
+#define XK_9 0x039
+#define XK_colon 0x03a
+#define XK_semicolon 0x03b
+#define XK_less 0x03c
+#define XK_equal 0x03d
+#define XK_greater 0x03e
+#define XK_question 0x03f
+#define XK_at 0x040
+#define XK_A 0x041
+#define XK_B 0x042
+#define XK_C 0x043
+#define XK_D 0x044
+#define XK_E 0x045
+#define XK_F 0x046
+#define XK_G 0x047
+#define XK_H 0x048
+#define XK_I 0x049
+#define XK_J 0x04a
+#define XK_K 0x04b
+#define XK_L 0x04c
+#define XK_M 0x04d
+#define XK_N 0x04e
+#define XK_O 0x04f
+#define XK_P 0x050
+#define XK_Q 0x051
+#define XK_R 0x052
+#define XK_S 0x053
+#define XK_T 0x054
+#define XK_U 0x055
+#define XK_V 0x056
+#define XK_W 0x057
+#define XK_X 0x058
+#define XK_Y 0x059
+#define XK_Z 0x05a
+#define XK_bracketleft 0x05b
+#define XK_backslash 0x05c
+#define XK_bracketright 0x05d
+#define XK_asciicircum 0x05e
+#define XK_underscore 0x05f
+#define XK_grave 0x060
+#define XK_quoteleft 0x060 /* deprecated */
+#define XK_a 0x061
+#define XK_b 0x062
+#define XK_c 0x063
+#define XK_d 0x064
+#define XK_e 0x065
+#define XK_f 0x066
+#define XK_g 0x067
+#define XK_h 0x068
+#define XK_i 0x069
+#define XK_j 0x06a
+#define XK_k 0x06b
+#define XK_l 0x06c
+#define XK_m 0x06d
+#define XK_n 0x06e
+#define XK_o 0x06f
+#define XK_p 0x070
+#define XK_q 0x071
+#define XK_r 0x072
+#define XK_s 0x073
+#define XK_t 0x074
+#define XK_u 0x075
+#define XK_v 0x076
+#define XK_w 0x077
+#define XK_x 0x078
+#define XK_y 0x079
+#define XK_z 0x07a
+#define XK_braceleft 0x07b
+#define XK_bar 0x07c
+#define XK_braceright 0x07d
+#define XK_asciitilde 0x07e
+
+#define XK_nobreakspace 0x0a0
+#define XK_exclamdown 0x0a1
+#define XK_cent 0x0a2
+#define XK_sterling 0x0a3
+#define XK_currency 0x0a4
+#define XK_yen 0x0a5
+#define XK_brokenbar 0x0a6
+#define XK_section 0x0a7
+#define XK_diaeresis 0x0a8
+#define XK_copyright 0x0a9
+#define XK_ordfeminine 0x0aa
+#define XK_guillemotleft 0x0ab /* left angle quotation mark */
+#define XK_notsign 0x0ac
+#define XK_hyphen 0x0ad
+#define XK_registered 0x0ae
+#define XK_macron 0x0af
+#define XK_degree 0x0b0
+#define XK_plusminus 0x0b1
+#define XK_twosuperior 0x0b2
+#define XK_threesuperior 0x0b3
+#define XK_acute 0x0b4
+#define XK_mu 0x0b5
+#define XK_paragraph 0x0b6
+#define XK_periodcentered 0x0b7
+#define XK_cedilla 0x0b8
+#define XK_onesuperior 0x0b9
+#define XK_masculine 0x0ba
+#define XK_guillemotright 0x0bb /* right angle quotation mark */
+#define XK_onequarter 0x0bc
+#define XK_onehalf 0x0bd
+#define XK_threequarters 0x0be
+#define XK_questiondown 0x0bf
+#define XK_Agrave 0x0c0
+#define XK_Aacute 0x0c1
+#define XK_Acircumflex 0x0c2
+#define XK_Atilde 0x0c3
+#define XK_Adiaeresis 0x0c4
+#define XK_Aring 0x0c5
+#define XK_AE 0x0c6
+#define XK_Ccedilla 0x0c7
+#define XK_Egrave 0x0c8
+#define XK_Eacute 0x0c9
+#define XK_Ecircumflex 0x0ca
+#define XK_Ediaeresis 0x0cb
+#define XK_Igrave 0x0cc
+#define XK_Iacute 0x0cd
+#define XK_Icircumflex 0x0ce
+#define XK_Idiaeresis 0x0cf
+#define XK_ETH 0x0d0
+#define XK_Eth 0x0d0 /* deprecated */
+#define XK_Ntilde 0x0d1
+#define XK_Ograve 0x0d2
+#define XK_Oacute 0x0d3
+#define XK_Ocircumflex 0x0d4
+#define XK_Otilde 0x0d5
+#define XK_Odiaeresis 0x0d6
+#define XK_multiply 0x0d7
+#define XK_Ooblique 0x0d8
+#define XK_Ugrave 0x0d9
+#define XK_Uacute 0x0da
+#define XK_Ucircumflex 0x0db
+#define XK_Udiaeresis 0x0dc
+#define XK_Yacute 0x0dd
+#define XK_THORN 0x0de
+#define XK_Thorn 0x0de /* deprecated */
+#define XK_ssharp 0x0df
+#define XK_agrave 0x0e0
+#define XK_aacute 0x0e1
+#define XK_acircumflex 0x0e2
+#define XK_atilde 0x0e3
+#define XK_adiaeresis 0x0e4
+#define XK_aring 0x0e5
+#define XK_ae 0x0e6
+#define XK_ccedilla 0x0e7
+#define XK_egrave 0x0e8
+#define XK_eacute 0x0e9
+#define XK_ecircumflex 0x0ea
+#define XK_ediaeresis 0x0eb
+#define XK_igrave 0x0ec
+#define XK_iacute 0x0ed
+#define XK_icircumflex 0x0ee
+#define XK_idiaeresis 0x0ef
+#define XK_eth 0x0f0
+#define XK_ntilde 0x0f1
+#define XK_ograve 0x0f2
+#define XK_oacute 0x0f3
+#define XK_ocircumflex 0x0f4
+#define XK_otilde 0x0f5
+#define XK_odiaeresis 0x0f6
+#define XK_division 0x0f7
+#define XK_oslash 0x0f8
+#define XK_ugrave 0x0f9
+#define XK_uacute 0x0fa
+#define XK_ucircumflex 0x0fb
+#define XK_udiaeresis 0x0fc
+#define XK_yacute 0x0fd
+#define XK_thorn 0x0fe
+#define XK_ydiaeresis 0x0ff
+#endif /* XK_LATIN1 */
+
+/*
+ * Latin 2
+ * Byte 3 = 1
+ */
+
+#ifdef XK_LATIN2
+#define XK_Aogonek 0x1a1
+#define XK_breve 0x1a2
+#define XK_Lstroke 0x1a3
+#define XK_Lcaron 0x1a5
+#define XK_Sacute 0x1a6
+#define XK_Scaron 0x1a9
+#define XK_Scedilla 0x1aa
+#define XK_Tcaron 0x1ab
+#define XK_Zacute 0x1ac
+#define XK_Zcaron 0x1ae
+#define XK_Zabovedot 0x1af
+#define XK_aogonek 0x1b1
+#define XK_ogonek 0x1b2
+#define XK_lstroke 0x1b3
+#define XK_lcaron 0x1b5
+#define XK_sacute 0x1b6
+#define XK_caron 0x1b7
+#define XK_scaron 0x1b9
+#define XK_scedilla 0x1ba
+#define XK_tcaron 0x1bb
+#define XK_zacute 0x1bc
+#define XK_doubleacute 0x1bd
+#define XK_zcaron 0x1be
+#define XK_zabovedot 0x1bf
+#define XK_Racute 0x1c0
+#define XK_Abreve 0x1c3
+#define XK_Lacute 0x1c5
+#define XK_Cacute 0x1c6
+#define XK_Ccaron 0x1c8
+#define XK_Eogonek 0x1ca
+#define XK_Ecaron 0x1cc
+#define XK_Dcaron 0x1cf
+#define XK_Dstroke 0x1d0
+#define XK_Nacute 0x1d1
+#define XK_Ncaron 0x1d2
+#define XK_Odoubleacute 0x1d5
+#define XK_Rcaron 0x1d8
+#define XK_Uring 0x1d9
+#define XK_Udoubleacute 0x1db
+#define XK_Tcedilla 0x1de
+#define XK_racute 0x1e0
+#define XK_abreve 0x1e3
+#define XK_lacute 0x1e5
+#define XK_cacute 0x1e6
+#define XK_ccaron 0x1e8
+#define XK_eogonek 0x1ea
+#define XK_ecaron 0x1ec
+#define XK_dcaron 0x1ef
+#define XK_dstroke 0x1f0
+#define XK_nacute 0x1f1
+#define XK_ncaron 0x1f2
+#define XK_odoubleacute 0x1f5
+#define XK_udoubleacute 0x1fb
+#define XK_rcaron 0x1f8
+#define XK_uring 0x1f9
+#define XK_tcedilla 0x1fe
+#define XK_abovedot 0x1ff
+#endif /* XK_LATIN2 */
+
+/*
+ * Latin 3
+ * Byte 3 = 2
+ */
+
+#ifdef XK_LATIN3
+#define XK_Hstroke 0x2a1
+#define XK_Hcircumflex 0x2a6
+#define XK_Iabovedot 0x2a9
+#define XK_Gbreve 0x2ab
+#define XK_Jcircumflex 0x2ac
+#define XK_hstroke 0x2b1
+#define XK_hcircumflex 0x2b6
+#define XK_idotless 0x2b9
+#define XK_gbreve 0x2bb
+#define XK_jcircumflex 0x2bc
+#define XK_Cabovedot 0x2c5
+#define XK_Ccircumflex 0x2c6
+#define XK_Gabovedot 0x2d5
+#define XK_Gcircumflex 0x2d8
+#define XK_Ubreve 0x2dd
+#define XK_Scircumflex 0x2de
+#define XK_cabovedot 0x2e5
+#define XK_ccircumflex 0x2e6
+#define XK_gabovedot 0x2f5
+#define XK_gcircumflex 0x2f8
+#define XK_ubreve 0x2fd
+#define XK_scircumflex 0x2fe
+#endif /* XK_LATIN3 */
+
+
+/*
+ * Latin 4
+ * Byte 3 = 3
+ */
+
+#ifdef XK_LATIN4
+#define XK_kra 0x3a2
+#define XK_kappa 0x3a2 /* deprecated */
+#define XK_Rcedilla 0x3a3
+#define XK_Itilde 0x3a5
+#define XK_Lcedilla 0x3a6
+#define XK_Emacron 0x3aa
+#define XK_Gcedilla 0x3ab
+#define XK_Tslash 0x3ac
+#define XK_rcedilla 0x3b3
+#define XK_itilde 0x3b5
+#define XK_lcedilla 0x3b6
+#define XK_emacron 0x3ba
+#define XK_gcedilla 0x3bb
+#define XK_tslash 0x3bc
+#define XK_ENG 0x3bd
+#define XK_eng 0x3bf
+#define XK_Amacron 0x3c0
+#define XK_Iogonek 0x3c7
+#define XK_Eabovedot 0x3cc
+#define XK_Imacron 0x3cf
+#define XK_Ncedilla 0x3d1
+#define XK_Omacron 0x3d2
+#define XK_Kcedilla 0x3d3
+#define XK_Uogonek 0x3d9
+#define XK_Utilde 0x3dd
+#define XK_Umacron 0x3de
+#define XK_amacron 0x3e0
+#define XK_iogonek 0x3e7
+#define XK_eabovedot 0x3ec
+#define XK_imacron 0x3ef
+#define XK_ncedilla 0x3f1
+#define XK_omacron 0x3f2
+#define XK_kcedilla 0x3f3
+#define XK_uogonek 0x3f9
+#define XK_utilde 0x3fd
+#define XK_umacron 0x3fe
+#endif /* XK_LATIN4 */
+
+/*
+ * Katakana
+ * Byte 3 = 4
+ */
+
+#ifdef XK_KATAKANA
+#define XK_overline 0x47e
+#define XK_kana_fullstop 0x4a1
+#define XK_kana_openingbracket 0x4a2
+#define XK_kana_closingbracket 0x4a3
+#define XK_kana_comma 0x4a4
+#define XK_kana_conjunctive 0x4a5
+#define XK_kana_middledot 0x4a5 /* deprecated */
+#define XK_kana_WO 0x4a6
+#define XK_kana_a 0x4a7
+#define XK_kana_i 0x4a8
+#define XK_kana_u 0x4a9
+#define XK_kana_e 0x4aa
+#define XK_kana_o 0x4ab
+#define XK_kana_ya 0x4ac
+#define XK_kana_yu 0x4ad
+#define XK_kana_yo 0x4ae
+#define XK_kana_tsu 0x4af
+#define XK_kana_tu 0x4af /* deprecated */
+#define XK_prolongedsound 0x4b0
+#define XK_kana_A 0x4b1
+#define XK_kana_I 0x4b2
+#define XK_kana_U 0x4b3
+#define XK_kana_E 0x4b4
+#define XK_kana_O 0x4b5
+#define XK_kana_KA 0x4b6
+#define XK_kana_KI 0x4b7
+#define XK_kana_KU 0x4b8
+#define XK_kana_KE 0x4b9
+#define XK_kana_KO 0x4ba
+#define XK_kana_SA 0x4bb
+#define XK_kana_SHI 0x4bc
+#define XK_kana_SU 0x4bd
+#define XK_kana_SE 0x4be
+#define XK_kana_SO 0x4bf
+#define XK_kana_TA 0x4c0
+#define XK_kana_CHI 0x4c1
+#define XK_kana_TI 0x4c1 /* deprecated */
+#define XK_kana_TSU 0x4c2
+#define XK_kana_TU 0x4c2 /* deprecated */
+#define XK_kana_TE 0x4c3
+#define XK_kana_TO 0x4c4
+#define XK_kana_NA 0x4c5
+#define XK_kana_NI 0x4c6
+#define XK_kana_NU 0x4c7
+#define XK_kana_NE 0x4c8
+#define XK_kana_NO 0x4c9
+#define XK_kana_HA 0x4ca
+#define XK_kana_HI 0x4cb
+#define XK_kana_FU 0x4cc
+#define XK_kana_HU 0x4cc /* deprecated */
+#define XK_kana_HE 0x4cd
+#define XK_kana_HO 0x4ce
+#define XK_kana_MA 0x4cf
+#define XK_kana_MI 0x4d0
+#define XK_kana_MU 0x4d1
+#define XK_kana_ME 0x4d2
+#define XK_kana_MO 0x4d3
+#define XK_kana_YA 0x4d4
+#define XK_kana_YU 0x4d5
+#define XK_kana_YO 0x4d6
+#define XK_kana_RA 0x4d7
+#define XK_kana_RI 0x4d8
+#define XK_kana_RU 0x4d9
+#define XK_kana_RE 0x4da
+#define XK_kana_RO 0x4db
+#define XK_kana_WA 0x4dc
+#define XK_kana_N 0x4dd
+#define XK_voicedsound 0x4de
+#define XK_semivoicedsound 0x4df
+#define XK_kana_switch 0xFF7E /* Alias for mode_switch */
+#endif /* XK_KATAKANA */
+
+/*
+ * Arabic
+ * Byte 3 = 5
+ */
+
+#ifdef XK_ARABIC
+#define XK_Arabic_comma 0x5ac
+#define XK_Arabic_semicolon 0x5bb
+#define XK_Arabic_question_mark 0x5bf
+#define XK_Arabic_hamza 0x5c1
+#define XK_Arabic_maddaonalef 0x5c2
+#define XK_Arabic_hamzaonalef 0x5c3
+#define XK_Arabic_hamzaonwaw 0x5c4
+#define XK_Arabic_hamzaunderalef 0x5c5
+#define XK_Arabic_hamzaonyeh 0x5c6
+#define XK_Arabic_alef 0x5c7
+#define XK_Arabic_beh 0x5c8
+#define XK_Arabic_tehmarbuta 0x5c9
+#define XK_Arabic_teh 0x5ca
+#define XK_Arabic_theh 0x5cb
+#define XK_Arabic_jeem 0x5cc
+#define XK_Arabic_hah 0x5cd
+#define XK_Arabic_khah 0x5ce
+#define XK_Arabic_dal 0x5cf
+#define XK_Arabic_thal 0x5d0
+#define XK_Arabic_ra 0x5d1
+#define XK_Arabic_zain 0x5d2
+#define XK_Arabic_seen 0x5d3
+#define XK_Arabic_sheen 0x5d4
+#define XK_Arabic_sad 0x5d5
+#define XK_Arabic_dad 0x5d6
+#define XK_Arabic_tah 0x5d7
+#define XK_Arabic_zah 0x5d8
+#define XK_Arabic_ain 0x5d9
+#define XK_Arabic_ghain 0x5da
+#define XK_Arabic_tatweel 0x5e0
+#define XK_Arabic_feh 0x5e1
+#define XK_Arabic_qaf 0x5e2
+#define XK_Arabic_kaf 0x5e3
+#define XK_Arabic_lam 0x5e4
+#define XK_Arabic_meem 0x5e5
+#define XK_Arabic_noon 0x5e6
+#define XK_Arabic_ha 0x5e7
+#define XK_Arabic_heh 0x5e7 /* deprecated */
+#define XK_Arabic_waw 0x5e8
+#define XK_Arabic_alefmaksura 0x5e9
+#define XK_Arabic_yeh 0x5ea
+#define XK_Arabic_fathatan 0x5eb
+#define XK_Arabic_dammatan 0x5ec
+#define XK_Arabic_kasratan 0x5ed
+#define XK_Arabic_fatha 0x5ee
+#define XK_Arabic_damma 0x5ef
+#define XK_Arabic_kasra 0x5f0
+#define XK_Arabic_shadda 0x5f1
+#define XK_Arabic_sukun 0x5f2
+#define XK_Arabic_switch 0xFF7E /* Alias for mode_switch */
+#endif /* XK_ARABIC */
+
+/*
+ * Cyrillic
+ * Byte 3 = 6
+ */
+#ifdef XK_CYRILLIC
+#define XK_Serbian_dje 0x6a1
+#define XK_Macedonia_gje 0x6a2
+#define XK_Cyrillic_io 0x6a3
+#define XK_Ukrainian_ie 0x6a4
+#define XK_Ukranian_je 0x6a4 /* deprecated */
+#define XK_Macedonia_dse 0x6a5
+#define XK_Ukrainian_i 0x6a6
+#define XK_Ukranian_i 0x6a6 /* deprecated */
+#define XK_Ukrainian_yi 0x6a7
+#define XK_Ukranian_yi 0x6a7 /* deprecated */
+#define XK_Cyrillic_je 0x6a8
+#define XK_Serbian_je 0x6a8 /* deprecated */
+#define XK_Cyrillic_lje 0x6a9
+#define XK_Serbian_lje 0x6a9 /* deprecated */
+#define XK_Cyrillic_nje 0x6aa
+#define XK_Serbian_nje 0x6aa /* deprecated */
+#define XK_Serbian_tshe 0x6ab
+#define XK_Macedonia_kje 0x6ac
+#define XK_Byelorussian_shortu 0x6ae
+#define XK_Cyrillic_dzhe 0x6af
+#define XK_Serbian_dze 0x6af /* deprecated */
+#define XK_numerosign 0x6b0
+#define XK_Serbian_DJE 0x6b1
+#define XK_Macedonia_GJE 0x6b2
+#define XK_Cyrillic_IO 0x6b3
+#define XK_Ukrainian_IE 0x6b4
+#define XK_Ukranian_JE 0x6b4 /* deprecated */
+#define XK_Macedonia_DSE 0x6b5
+#define XK_Ukrainian_I 0x6b6
+#define XK_Ukranian_I 0x6b6 /* deprecated */
+#define XK_Ukrainian_YI 0x6b7
+#define XK_Ukranian_YI 0x6b7 /* deprecated */
+#define XK_Cyrillic_JE 0x6b8
+#define XK_Serbian_JE 0x6b8 /* deprecated */
+#define XK_Cyrillic_LJE 0x6b9
+#define XK_Serbian_LJE 0x6b9 /* deprecated */
+#define XK_Cyrillic_NJE 0x6ba
+#define XK_Serbian_NJE 0x6ba /* deprecated */
+#define XK_Serbian_TSHE 0x6bb
+#define XK_Macedonia_KJE 0x6bc
+#define XK_Byelorussian_SHORTU 0x6be
+#define XK_Cyrillic_DZHE 0x6bf
+#define XK_Serbian_DZE 0x6bf /* deprecated */
+#define XK_Cyrillic_yu 0x6c0
+#define XK_Cyrillic_a 0x6c1
+#define XK_Cyrillic_be 0x6c2
+#define XK_Cyrillic_tse 0x6c3
+#define XK_Cyrillic_de 0x6c4
+#define XK_Cyrillic_ie 0x6c5
+#define XK_Cyrillic_ef 0x6c6
+#define XK_Cyrillic_ghe 0x6c7
+#define XK_Cyrillic_ha 0x6c8
+#define XK_Cyrillic_i 0x6c9
+#define XK_Cyrillic_shorti 0x6ca
+#define XK_Cyrillic_ka 0x6cb
+#define XK_Cyrillic_el 0x6cc
+#define XK_Cyrillic_em 0x6cd
+#define XK_Cyrillic_en 0x6ce
+#define XK_Cyrillic_o 0x6cf
+#define XK_Cyrillic_pe 0x6d0
+#define XK_Cyrillic_ya 0x6d1
+#define XK_Cyrillic_er 0x6d2
+#define XK_Cyrillic_es 0x6d3
+#define XK_Cyrillic_te 0x6d4
+#define XK_Cyrillic_u 0x6d5
+#define XK_Cyrillic_zhe 0x6d6
+#define XK_Cyrillic_ve 0x6d7
+#define XK_Cyrillic_softsign 0x6d8
+#define XK_Cyrillic_yeru 0x6d9
+#define XK_Cyrillic_ze 0x6da
+#define XK_Cyrillic_sha 0x6db
+#define XK_Cyrillic_e 0x6dc
+#define XK_Cyrillic_shcha 0x6dd
+#define XK_Cyrillic_che 0x6de
+#define XK_Cyrillic_hardsign 0x6df
+#define XK_Cyrillic_YU 0x6e0
+#define XK_Cyrillic_A 0x6e1
+#define XK_Cyrillic_BE 0x6e2
+#define XK_Cyrillic_TSE 0x6e3
+#define XK_Cyrillic_DE 0x6e4
+#define XK_Cyrillic_IE 0x6e5
+#define XK_Cyrillic_EF 0x6e6
+#define XK_Cyrillic_GHE 0x6e7
+#define XK_Cyrillic_HA 0x6e8
+#define XK_Cyrillic_I 0x6e9
+#define XK_Cyrillic_SHORTI 0x6ea
+#define XK_Cyrillic_KA 0x6eb
+#define XK_Cyrillic_EL 0x6ec
+#define XK_Cyrillic_EM 0x6ed
+#define XK_Cyrillic_EN 0x6ee
+#define XK_Cyrillic_O 0x6ef
+#define XK_Cyrillic_PE 0x6f0
+#define XK_Cyrillic_YA 0x6f1
+#define XK_Cyrillic_ER 0x6f2
+#define XK_Cyrillic_ES 0x6f3
+#define XK_Cyrillic_TE 0x6f4
+#define XK_Cyrillic_U 0x6f5
+#define XK_Cyrillic_ZHE 0x6f6
+#define XK_Cyrillic_VE 0x6f7
+#define XK_Cyrillic_SOFTSIGN 0x6f8
+#define XK_Cyrillic_YERU 0x6f9
+#define XK_Cyrillic_ZE 0x6fa
+#define XK_Cyrillic_SHA 0x6fb
+#define XK_Cyrillic_E 0x6fc
+#define XK_Cyrillic_SHCHA 0x6fd
+#define XK_Cyrillic_CHE 0x6fe
+#define XK_Cyrillic_HARDSIGN 0x6ff
+#endif /* XK_CYRILLIC */
+
+/*
+ * Greek
+ * Byte 3 = 7
+ */
+
+#ifdef XK_GREEK
+#define XK_Greek_ALPHAaccent 0x7a1
+#define XK_Greek_EPSILONaccent 0x7a2
+#define XK_Greek_ETAaccent 0x7a3
+#define XK_Greek_IOTAaccent 0x7a4
+#define XK_Greek_IOTAdiaeresis 0x7a5
+#define XK_Greek_OMICRONaccent 0x7a7
+#define XK_Greek_UPSILONaccent 0x7a8
+#define XK_Greek_UPSILONdieresis 0x7a9
+#define XK_Greek_OMEGAaccent 0x7ab
+#define XK_Greek_accentdieresis 0x7ae
+#define XK_Greek_horizbar 0x7af
+#define XK_Greek_alphaaccent 0x7b1
+#define XK_Greek_epsilonaccent 0x7b2
+#define XK_Greek_etaaccent 0x7b3
+#define XK_Greek_iotaaccent 0x7b4
+#define XK_Greek_iotadieresis 0x7b5
+#define XK_Greek_iotaaccentdieresis 0x7b6
+#define XK_Greek_omicronaccent 0x7b7
+#define XK_Greek_upsilonaccent 0x7b8
+#define XK_Greek_upsilondieresis 0x7b9
+#define XK_Greek_upsilonaccentdieresis 0x7ba
+#define XK_Greek_omegaaccent 0x7bb
+#define XK_Greek_ALPHA 0x7c1
+#define XK_Greek_BETA 0x7c2
+#define XK_Greek_GAMMA 0x7c3
+#define XK_Greek_DELTA 0x7c4
+#define XK_Greek_EPSILON 0x7c5
+#define XK_Greek_ZETA 0x7c6
+#define XK_Greek_ETA 0x7c7
+#define XK_Greek_THETA 0x7c8
+#define XK_Greek_IOTA 0x7c9
+#define XK_Greek_KAPPA 0x7ca
+#define XK_Greek_LAMDA 0x7cb
+#define XK_Greek_LAMBDA 0x7cb
+#define XK_Greek_MU 0x7cc
+#define XK_Greek_NU 0x7cd
+#define XK_Greek_XI 0x7ce
+#define XK_Greek_OMICRON 0x7cf
+#define XK_Greek_PI 0x7d0
+#define XK_Greek_RHO 0x7d1
+#define XK_Greek_SIGMA 0x7d2
+#define XK_Greek_TAU 0x7d4
+#define XK_Greek_UPSILON 0x7d5
+#define XK_Greek_PHI 0x7d6
+#define XK_Greek_CHI 0x7d7
+#define XK_Greek_PSI 0x7d8
+#define XK_Greek_OMEGA 0x7d9
+#define XK_Greek_alpha 0x7e1
+#define XK_Greek_beta 0x7e2
+#define XK_Greek_gamma 0x7e3
+#define XK_Greek_delta 0x7e4
+#define XK_Greek_epsilon 0x7e5
+#define XK_Greek_zeta 0x7e6
+#define XK_Greek_eta 0x7e7
+#define XK_Greek_theta 0x7e8
+#define XK_Greek_iota 0x7e9
+#define XK_Greek_kappa 0x7ea
+#define XK_Greek_lamda 0x7eb
+#define XK_Greek_lambda 0x7eb
+#define XK_Greek_mu 0x7ec
+#define XK_Greek_nu 0x7ed
+#define XK_Greek_xi 0x7ee
+#define XK_Greek_omicron 0x7ef
+#define XK_Greek_pi 0x7f0
+#define XK_Greek_rho 0x7f1
+#define XK_Greek_sigma 0x7f2
+#define XK_Greek_finalsmallsigma 0x7f3
+#define XK_Greek_tau 0x7f4
+#define XK_Greek_upsilon 0x7f5
+#define XK_Greek_phi 0x7f6
+#define XK_Greek_chi 0x7f7
+#define XK_Greek_psi 0x7f8
+#define XK_Greek_omega 0x7f9
+#define XK_Greek_switch 0xFF7E /* Alias for mode_switch */
+#endif /* XK_GREEK */
+
+/*
+ * Technical
+ * Byte 3 = 8
+ */
+
+#ifdef XK_TECHNICAL
+#define XK_leftradical 0x8a1
+#define XK_topleftradical 0x8a2
+#define XK_horizconnector 0x8a3
+#define XK_topintegral 0x8a4
+#define XK_botintegral 0x8a5
+#define XK_vertconnector 0x8a6
+#define XK_topleftsqbracket 0x8a7
+#define XK_botleftsqbracket 0x8a8
+#define XK_toprightsqbracket 0x8a9
+#define XK_botrightsqbracket 0x8aa
+#define XK_topleftparens 0x8ab
+#define XK_botleftparens 0x8ac
+#define XK_toprightparens 0x8ad
+#define XK_botrightparens 0x8ae
+#define XK_leftmiddlecurlybrace 0x8af
+#define XK_rightmiddlecurlybrace 0x8b0
+#define XK_topleftsummation 0x8b1
+#define XK_botleftsummation 0x8b2
+#define XK_topvertsummationconnector 0x8b3
+#define XK_botvertsummationconnector 0x8b4
+#define XK_toprightsummation 0x8b5
+#define XK_botrightsummation 0x8b6
+#define XK_rightmiddlesummation 0x8b7
+#define XK_lessthanequal 0x8bc
+#define XK_notequal 0x8bd
+#define XK_greaterthanequal 0x8be
+#define XK_integral 0x8bf
+#define XK_therefore 0x8c0
+#define XK_variation 0x8c1
+#define XK_infinity 0x8c2
+#define XK_nabla 0x8c5
+#define XK_approximate 0x8c8
+#define XK_similarequal 0x8c9
+#define XK_ifonlyif 0x8cd
+#define XK_implies 0x8ce
+#define XK_identical 0x8cf
+#define XK_radical 0x8d6
+#define XK_includedin 0x8da
+#define XK_includes 0x8db
+#define XK_intersection 0x8dc
+#define XK_union 0x8dd
+#define XK_logicaland 0x8de
+#define XK_logicalor 0x8df
+#define XK_partialderivative 0x8ef
+#define XK_function 0x8f6
+#define XK_leftarrow 0x8fb
+#define XK_uparrow 0x8fc
+#define XK_rightarrow 0x8fd
+#define XK_downarrow 0x8fe
+#endif /* XK_TECHNICAL */
+
+/*
+ * Special
+ * Byte 3 = 9
+ */
+
+#ifdef XK_SPECIAL
+#define XK_blank 0x9df
+#define XK_soliddiamond 0x9e0
+#define XK_checkerboard 0x9e1
+#define XK_ht 0x9e2
+#define XK_ff 0x9e3
+#define XK_cr 0x9e4
+#define XK_lf 0x9e5
+#define XK_nl 0x9e8
+#define XK_vt 0x9e9
+#define XK_lowrightcorner 0x9ea
+#define XK_uprightcorner 0x9eb
+#define XK_upleftcorner 0x9ec
+#define XK_lowleftcorner 0x9ed
+#define XK_crossinglines 0x9ee
+#define XK_horizlinescan1 0x9ef
+#define XK_horizlinescan3 0x9f0
+#define XK_horizlinescan5 0x9f1
+#define XK_horizlinescan7 0x9f2
+#define XK_horizlinescan9 0x9f3
+#define XK_leftt 0x9f4
+#define XK_rightt 0x9f5
+#define XK_bott 0x9f6
+#define XK_topt 0x9f7
+#define XK_vertbar 0x9f8
+#endif /* XK_SPECIAL */
+
+/*
+ * Publishing
+ * Byte 3 = a
+ */
+
+#ifdef XK_PUBLISHING
+#define XK_emspace 0xaa1
+#define XK_enspace 0xaa2
+#define XK_em3space 0xaa3
+#define XK_em4space 0xaa4
+#define XK_digitspace 0xaa5
+#define XK_punctspace 0xaa6
+#define XK_thinspace 0xaa7
+#define XK_hairspace 0xaa8
+#define XK_emdash 0xaa9
+#define XK_endash 0xaaa
+#define XK_signifblank 0xaac
+#define XK_ellipsis 0xaae
+#define XK_doubbaselinedot 0xaaf
+#define XK_onethird 0xab0
+#define XK_twothirds 0xab1
+#define XK_onefifth 0xab2
+#define XK_twofifths 0xab3
+#define XK_threefifths 0xab4
+#define XK_fourfifths 0xab5
+#define XK_onesixth 0xab6
+#define XK_fivesixths 0xab7
+#define XK_careof 0xab8
+#define XK_figdash 0xabb
+#define XK_leftanglebracket 0xabc
+#define XK_decimalpoint 0xabd
+#define XK_rightanglebracket 0xabe
+#define XK_marker 0xabf
+#define XK_oneeighth 0xac3
+#define XK_threeeighths 0xac4
+#define XK_fiveeighths 0xac5
+#define XK_seveneighths 0xac6
+#define XK_trademark 0xac9
+#define XK_signaturemark 0xaca
+#define XK_trademarkincircle 0xacb
+#define XK_leftopentriangle 0xacc
+#define XK_rightopentriangle 0xacd
+#define XK_emopencircle 0xace
+#define XK_emopenrectangle 0xacf
+#define XK_leftsinglequotemark 0xad0
+#define XK_rightsinglequotemark 0xad1
+#define XK_leftdoublequotemark 0xad2
+#define XK_rightdoublequotemark 0xad3
+#define XK_prescription 0xad4
+#define XK_minutes 0xad6
+#define XK_seconds 0xad7
+#define XK_latincross 0xad9
+#define XK_hexagram 0xada
+#define XK_filledrectbullet 0xadb
+#define XK_filledlefttribullet 0xadc
+#define XK_filledrighttribullet 0xadd
+#define XK_emfilledcircle 0xade
+#define XK_emfilledrect 0xadf
+#define XK_enopencircbullet 0xae0
+#define XK_enopensquarebullet 0xae1
+#define XK_openrectbullet 0xae2
+#define XK_opentribulletup 0xae3
+#define XK_opentribulletdown 0xae4
+#define XK_openstar 0xae5
+#define XK_enfilledcircbullet 0xae6
+#define XK_enfilledsqbullet 0xae7
+#define XK_filledtribulletup 0xae8
+#define XK_filledtribulletdown 0xae9
+#define XK_leftpointer 0xaea
+#define XK_rightpointer 0xaeb
+#define XK_club 0xaec
+#define XK_diamond 0xaed
+#define XK_heart 0xaee
+#define XK_maltesecross 0xaf0
+#define XK_dagger 0xaf1
+#define XK_doubledagger 0xaf2
+#define XK_checkmark 0xaf3
+#define XK_ballotcross 0xaf4
+#define XK_musicalsharp 0xaf5
+#define XK_musicalflat 0xaf6
+#define XK_malesymbol 0xaf7
+#define XK_femalesymbol 0xaf8
+#define XK_telephone 0xaf9
+#define XK_telephonerecorder 0xafa
+#define XK_phonographcopyright 0xafb
+#define XK_caret 0xafc
+#define XK_singlelowquotemark 0xafd
+#define XK_doublelowquotemark 0xafe
+#define XK_cursor 0xaff
+#endif /* XK_PUBLISHING */
+
+/*
+ * APL
+ * Byte 3 = b
+ */
+
+#ifdef XK_APL
+#define XK_leftcaret 0xba3
+#define XK_rightcaret 0xba6
+#define XK_downcaret 0xba8
+#define XK_upcaret 0xba9
+#define XK_overbar 0xbc0
+#define XK_downtack 0xbc2
+#define XK_upshoe 0xbc3
+#define XK_downstile 0xbc4
+#define XK_underbar 0xbc6
+#define XK_jot 0xbca
+#define XK_quad 0xbcc
+#define XK_uptack 0xbce
+#define XK_circle 0xbcf
+#define XK_upstile 0xbd3
+#define XK_downshoe 0xbd6
+#define XK_rightshoe 0xbd8
+#define XK_leftshoe 0xbda
+#define XK_lefttack 0xbdc
+#define XK_righttack 0xbfc
+#endif /* XK_APL */
+
+/*
+ * Hebrew
+ * Byte 3 = c
+ */
+
+#ifdef XK_HEBREW
+#define XK_hebrew_doublelowline 0xcdf
+#define XK_hebrew_aleph 0xce0
+#define XK_hebrew_bet 0xce1
+#define XK_hebrew_beth 0xce1 /* deprecated */
+#define XK_hebrew_gimel 0xce2
+#define XK_hebrew_gimmel 0xce2 /* deprecated */
+#define XK_hebrew_dalet 0xce3
+#define XK_hebrew_daleth 0xce3 /* deprecated */
+#define XK_hebrew_he 0xce4
+#define XK_hebrew_waw 0xce5
+#define XK_hebrew_zain 0xce6
+#define XK_hebrew_zayin 0xce6 /* deprecated */
+#define XK_hebrew_chet 0xce7
+#define XK_hebrew_het 0xce7 /* deprecated */
+#define XK_hebrew_tet 0xce8
+#define XK_hebrew_teth 0xce8 /* deprecated */
+#define XK_hebrew_yod 0xce9
+#define XK_hebrew_finalkaph 0xcea
+#define XK_hebrew_kaph 0xceb
+#define XK_hebrew_lamed 0xcec
+#define XK_hebrew_finalmem 0xced
+#define XK_hebrew_mem 0xcee
+#define XK_hebrew_finalnun 0xcef
+#define XK_hebrew_nun 0xcf0
+#define XK_hebrew_samech 0xcf1
+#define XK_hebrew_samekh 0xcf1 /* deprecated */
+#define XK_hebrew_ayin 0xcf2
+#define XK_hebrew_finalpe 0xcf3
+#define XK_hebrew_pe 0xcf4
+#define XK_hebrew_finalzade 0xcf5
+#define XK_hebrew_finalzadi 0xcf5 /* deprecated */
+#define XK_hebrew_zade 0xcf6
+#define XK_hebrew_zadi 0xcf6 /* deprecated */
+#define XK_hebrew_qoph 0xcf7
+#define XK_hebrew_kuf 0xcf7 /* deprecated */
+#define XK_hebrew_resh 0xcf8
+#define XK_hebrew_shin 0xcf9
+#define XK_hebrew_taw 0xcfa
+#define XK_hebrew_taf 0xcfa /* deprecated */
+#define XK_Hebrew_switch 0xFF7E /* Alias for mode_switch */
+#endif /* XK_HEBREW */
+
diff --git a/cobroutines/case.c b/cobroutines/case.c
new file mode 100644
index 0000000..943101d
--- /dev/null
+++ b/cobroutines/case.c
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2003 Hudson Reis.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1,
+ * or (at your option) any later version.
+ *
+ * This library 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; see the file COPYING.LIB. If
+ * not, write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* Case routines */
+
+#include
+#include
+#include "globals.h"
+
+/*
+void cbl_tolower(char *in, char *out, unsigned int *ret) {
+ int i=0;
+ *ret=0;
+ if (cbl_align(in) != 0) { *ret=1; }
+ if (*ret == 0) {
+ for (i=0;i<=(strlen(in));i++) {
+ *out++ = tolower(in[i]);
+ }
+ }
+}
+
+void cbl_toupper(char *in, char *out, unsigned int *ret) {
+ int i=0;
+ *ret=0;
+ if (cbl_align(in) != 0) { *ret=1; }
+ if (*ret == 0) {
+ for (i=0;i<=(strlen(in));i++) {
+ *out++ = toupper(in[i]);
+ }
+ }
+}
+*/
+
+// ----------------------------------------------------------------------
+// Implemented by Walter Garrote ----------------------------------------
+// garrote@dm.com.br
+// Brazil
+// Goîânia-Goiás
+// ----------------------------------------------------------------------
+
+// return the string with all letter to lower
+void cbl_tolower(char *in, int size) {
+ int i;
+ char *c;
+ c = in;
+ for(i = 0; i < size; i++)
+ *c++ = tolower(*c);
+ return;
+}
+
+// return the string with all letter to upper
+void cbl_toupper(char *in, int size) {
+ int i;
+ char *c;
+ c = in;
+ for(i = 0; i < size; i++)
+ *c++ = toupper(*c);
+ return;
+}
+
+// return the string with all first word letter upper, and lower to the others
+void cbl_ucwords(char *in, int size) {
+ int i;
+ int force = 0;
+ char *c;
+ c = in;
+ for(i = 0; i < size; i++) {
+ if(!force)
+ switch(*c) {
+ case ' ':
+ case '.':
+ case ',':
+ case ';':
+ force = 1;
+ break;
+ default:
+ force = 0;
+ break;
+ }
+ if(isalpha(*c))
+ if(force || i == 0) {
+ *c++ = toupper(*c);
+ force = 0;
+ } else
+ *c++ = tolower(*c);
+ else
+ *c++;
+ }
+ return;
+}
+
+// return the string with the first word letter upper and lower to the others
+void cbl_ucfirst(char *in, int size) {
+ int i;
+ int first = 0;
+ char *c;
+ c = in;
+ for(i = 0; i < size; i++) {
+ if(isalpha(*c))
+ if(first == 0) {
+ *c++ = toupper(*c);
+ first = 1;
+ } else
+ *c++ = tolower(*c);
+ else
+ *c++;
+ }
+ return;
+}
+
+// return character for the ascii code
+void cbl_char(int *a, unsigned char *c) {
+ *c = (char) *a;
+ return;
+}
+
+// return ascii code for the character
+void cbl_ord(unsigned char *c, int *a) {
+ unsigned char ch;
+ ch = *c;
+ *a = (int) *(c);
+ *c = ch;
+ return;
+}
diff --git a/cobroutines/cobtools.h b/cobroutines/cobtools.h
new file mode 100644
index 0000000..27505fe
--- /dev/null
+++ b/cobroutines/cobtools.h
@@ -0,0 +1,50 @@
+char cobtools[] =
+ "set argc 0\n"
+ "set argv {}\n"
+ "proc split_fields {} {\n"
+ " global cobol_fields data_block\n"
+ " set ix 0\n"
+ " foreach {varname size} $cobol_fields {\n"
+ " global $varname\n"
+ " set $varname [string range $data_block $ix [expr $ix+$size-1]]\n"
+ " incr ix $size\n"
+ " }\n"
+ "}\n"
+ "proc ::returnCobol {} {\n"
+ " global cobol_fields result ready\n"
+ " set result \"\"\n"
+ " catch {\n"
+ " foreach {varname size} $cobol_fields {\n"
+ " global $varname\n"
+ " append result [format \"%-$size.${size}s\" [set $varname]]\n"
+ " }\n"
+ " }\n"
+ " set ready 1\n"
+ "}\n"
+ "proc ::do_exit {} {\n"
+ " label .labDoExit\n"
+ " bind .labDoExit returnCobol\n"
+ " destroy .labDoExit\n"
+ "}\n"
+ "proc ::cobol_preprocess {} { }\n"
+ "proc ::cobol_update {} { }\n";
+
+char compute_block_size[] =
+ "set block_size 0\n"
+ "foreach {varname size} $cobol_fields {\n"
+ " incr block_size $size\n"
+ "}\n";
+
+char wait_ready[] =
+ "split_fields\n"
+ "set ready 0\n"
+ "cobol_preprocess\n"
+ "if {!$ready} {\n"
+ " tkwait variable ready\n"
+ "}\n";
+
+char newgui[] =
+ "foreach child [winfo children .] {\n"
+ " destroy $child\n"
+ "}\n";
+
diff --git a/cobroutines/dir.c b/cobroutines/dir.c
new file mode 100644
index 0000000..dd47e80
--- /dev/null
+++ b/cobroutines/dir.c
@@ -0,0 +1,305 @@
+/*
+ * Copyright (C) 2003 Wesley Oliveira, Aline Oliveira, Hudson Reis.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1,
+ * or (at your option) any later version.
+ *
+ * This library 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; see the file COPYING.LIB. If
+ * not, write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define OK 0
+#define ERRO 1
+#define NDATA -1
+
+#ifdef __MSVCRT__
+ #define cbl_BARRA "\\"
+#else
+ #define cbl_BARRA "/"
+#endif
+
+typedef unsigned int cbl_t;
+DIR *current_directory;
+struct dirent *current_file;
+
+/* Prototypes */
+cbl_t cbl_open_dir(char *directory);
+cbl_t cbl_rewind_dir();
+cbl_t cbl_read_dir(char *file);
+cbl_t cbl_close_dir();
+cbl_t cbl_remove_file(char *file);
+void cbl_sleep(unsigned int *time);
+
+cbl_t cbl_copy_dir(char *entrada, char *saida);
+cbl_t cbl_create_dir(char *dados, int mode);
+cbl_t cbl_delete_dir(char *dados);
+cbl_t cbl_move_dir(char *origem, char *destino);
+cbl_t cbl_copy_file(char *entrada, char *saida);
+cbl_t cbl_delete_file(char *arquivo);
+
+int cbl_align(char *);
+
+/* Functions */
+void cbl_sleep(unsigned int *time) {
+ Sleep(*time);
+ return;
+}
+
+cbl_t cbl_open_dir(char *directory) {
+ char name[256];
+ int p;
+ if(current_directory) // close the current directory before
+ closedir(current_directory);
+ p = 0;
+ while(p<256 && *(directory+p) != ' ') {
+ name[p] = *(directory+p);
+ p++;
+ }
+ name[p] = 0;
+ current_directory = opendir(name);
+ if(!current_directory)
+ return ERRO;
+ return OK;
+}
+
+cbl_t cbl_rewind_dir() {
+ if(!current_directory)
+ return ERRO;
+ rewinddir(current_directory);
+ return OK;
+}
+
+cbl_t cbl_read_dir(char *file) {
+ int i;
+ if(!current_directory)
+ return ERRO;
+ current_file = readdir(current_directory);
+ if(!current_file)
+ return ERRO;
+ i = 0;
+ while(current_file->d_name[i]) {
+ *(file + i) = current_file->d_name[i];
+ i++;
+ }
+ return OK;
+}
+
+cbl_t cbl_close_dir() {
+ if(!current_directory) // close the current directory before
+ return ERRO;
+ closedir(current_directory);
+ return OK;
+}
+
+cbl_t cbl_remove_file(char *file) {
+ char name[256];
+ int p;
+ p = 0;
+ while(p<256 && *(file+p) != ' ') {
+ name[p] = *(file+p);
+ p++;
+ }
+ name[p] = 0;
+ if(unlink(&name[0])==0)
+ return OK;
+ return ERRO;
+}
+
+cbl_t cbl_copy_dir(char *entrada, char *saida)
+{
+ DIR *dir_a,*dir_b;
+ struct dirent *arquivo;
+ char *bufr, *bufs;
+ //cbl_t d;
+
+ if(*entrada){
+ if(cbl_align(entrada)==ERRO) return(1);
+ if(cbl_align(saida)==ERRO) return(1);
+ } else {
+ return(ERRO);
+ }
+
+ bufr = (char *) malloc(sizeof(char)*(strlen(entrada)+100));
+ if(!bufr) {
+ return(4);
+ }
+
+ bufs = (char *) malloc(sizeof(char)*(strlen(saida) +100));
+ if(!bufs) {
+ return(4);
+ }
+
+ if ( (dir_a = opendir(entrada)) == NULL ) {
+ return(2);
+ }
+
+ if((dir_b = opendir(saida)) != NULL) {
+ closedir(dir_a);
+ closedir(dir_b);
+ return(3);
+ }
+ else {
+ cbl_create_dir(saida,0766);
+ while( (arquivo=readdir(dir_a)) ) {
+ strcpy(bufr,saida);
+ strcpy(bufs,entrada);
+ strcat(bufr,cbl_BARRA);
+ strcat(bufs,cbl_BARRA);
+ if( !strcmp(arquivo->d_name,".") ) {
+ continue;
+ }
+ else
+ if( !strcmp(arquivo->d_name,"..") ) {
+ continue;
+ }
+
+ strcat(bufr,arquivo->d_name);
+ strcat(bufs,arquivo->d_name);
+ cbl_copy_file(bufs,bufr);
+ }
+ }
+ closedir(dir_a);
+ free(bufr);
+ free(bufs);
+ return(OK);
+}
+
+cbl_t cbl_create_dir(char *dados, int mode)
+{
+ DIR *dir;
+
+ if(*dados) {
+ if(cbl_align(dados)==ERRO){ return(1); }
+ }
+ else {
+ return(1);
+ }
+
+ if( (dir = opendir(dados)) != NULL ) {
+ return ERRO;
+ }
+
+// Nilo, 23rd april 2007
+// Aparently MINGW doesn't accept two parameters for mkdir....
+// if(mkdir(dados, mode) == -1){
+ if(mkdir(dados) == -1) {
+ return ERRO;
+ }
+
+ chmod(dados,mode);
+
+ return(OK);
+}
+
+cbl_t cbl_delete_dir(char *dados)
+{
+ DIR *dir;
+ struct dirent *file;
+
+ if(*dados) {
+ if(cbl_align(dados)==ERRO) {
+ return(1);
+ }
+ }
+ else {
+ return(1);
+ }
+
+ if( (dir = opendir(dados)) == NULL) {
+ return(2);
+ }
+
+ closedir(dir);
+
+ if( rmdir(dados) == 0 ) { /* Nao existe nada no diretorio */
+ return(OK);
+ }
+ else { /* Aqui existe arquivos no diretorio
+ * entao sao apagados e ai depois apaga
+ * o diretorio.
+ */
+ dir = opendir(dados);
+ while( (file = readdir(dir)) ) {
+ chdir(dados);
+ cbl_delete_file(file->d_name);
+ }
+ closedir(dir);
+ chdir("..");
+ if ( rmdir(dados) != 0 ) {
+ return(ERRO);
+ }
+ }
+
+ return(OK);
+}
+
+cbl_t cbl_move_dir(char *origem, char *destino)
+{
+ DIR *dir;
+ //cbl_t d;
+
+ if ( (!*origem) || (!*destino) ) {
+ return(1);
+ }
+
+ if ( cbl_align(origem) == ERRO ) {
+ return(1);
+ }
+
+ if ( cbl_align(destino) == ERRO ) {
+ return(1);
+ }
+
+ if ( (dir = opendir(destino)) != NULL ) {
+ closedir(dir);
+ return(ERRO);
+ }
+
+ if ( cbl_copy_dir(origem,destino) == OK ) {
+ if( cbl_delete_dir(origem) != OK ) {
+ return(ERRO);
+ }
+ }
+ else {
+ return(ERRO);
+ }
+
+ return(OK);
+}
+
+cbl_t cbl_change_dir(char *path) {
+ if ( cbl_align(path) != 0 ) {
+ return 1;
+ }
+
+ if ( chdir(path) != 0 ) {
+ return 2;
+ }
+
+ return 0;
+}
+
+void cbl_get_current_dir(char *path, cbl_t *retorno) {
+ *retorno = 0;
+
+ if ( getcwd(path, 1024) == NULL ) {
+ *retorno = 1;
+ }
+}
diff --git a/cobroutines/dir.o b/cobroutines/dir.o
new file mode 100644
index 0000000..d5cfb9a
Binary files /dev/null and b/cobroutines/dir.o differ
diff --git a/cobroutines/files.c b/cobroutines/files.c
new file mode 100644
index 0000000..80b1cb0
--- /dev/null
+++ b/cobroutines/files.c
@@ -0,0 +1,408 @@
+/*
+ * Copyright (C) 2003 Wesley Oliveira, Aline Oliveira, Hudson Reis,
+ * Husni Ali Husni.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1,
+ * or (at your option) any later version.
+ *
+ * This library 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; see the file COPYING.LIB. If
+ * not, write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include "globals.h"
+
+#ifndef MAXLINE
+ #define MAXLINE 1024
+ #define MINLINE 256
+#endif
+
+#if defined(SunOS)
+#include
+#else
+# if defined(__CYGWIN__)
+# include
+# else
+# if defined(__MINGW32__)
+# include //# include
+# else
+# include
+# endif
+# endif
+#endif
+
+char cobpri[MAXLINE], cobpro[MAXLINE];
+
+struct cbl_stream {
+ char path[MAXLINE];
+ FILE *fd;
+ int handle;
+} cbl_stream[MAXLINE];
+
+/* Prototypes */
+
+cbl_t cbl_copy_file(char *entrada, char *saida);
+cbl_t cbl_rename_file(char *old, char *new);
+cbl_t cbl_delete_file(char *arquivo);
+cbl_t cbl_check_file_exist(char *arquivo);
+cbl_t cbl_move_file(char *origem,char *destino);
+void cbl_open_file(char *arquivo,char *access_mode,
+ char *deny_mode, int file_handle,
+ cbl_t *retorno);
+void cbl_create_file(char *arquivo, unsigned char *access_mode,
+ unsigned char *deny_mode, char file_handle[5],
+ cbl_t *retorno);
+cbl_t cbl_close_file(int file_handle);
+cbl_t cbl_flush_file(int file_handle);
+void cbl_read_file(int file_handle, int number_bytes,
+ char *buffer_read, cbl_t *retorno);
+void cbl_write_file(int file_handle,int number_bytes,char *buffer_writed,cbl_t *retorno);
+
+/* Functions */
+
+cbl_t cbl_copy_file(char *entrada, char *saida) {
+ FILE *fd_in, *fd_out;
+ int c,valor;
+
+ if ( cbl_align(entrada) != 0 ) {
+ return 1;
+ }
+
+ if( cbl_align(saida) != 0 ) {
+ return 1;
+ }
+
+ if ( (valor=cbl_parm(entrada,saida)) == -2 ) {
+ return 0;
+ }
+
+ if ( valor == 1 ) {
+ return 1;
+ }
+
+ if ( (fd_in = fopen(cobpri,"rb")) == NULL ) {
+ return 3;
+ }
+ else {
+ if ( (fd_out=fopen(cobpro,"wb")) == NULL ) {
+ fclose(fd_in);
+ return 3;
+ }
+ }
+
+ while ( (c = fgetc(fd_in)) != EOF ) {
+ fputc(c,fd_out);
+ }
+
+#ifdef __MSVCRT__
+ chmod(cobpro,0666);
+#else
+ cbl_get_per(cobpro);
+#endif
+
+ fclose(fd_in);
+ fclose(fd_out);
+
+ return 0;
+}
+
+cbl_t cbl_rename_file(char *old, char *new) {
+ int valor;
+
+ if ( cbl_align(old) != 0 ) {
+ return 1;
+ }
+
+ if (cbl_align(new) != 0) {
+ return 1;
+ }
+
+ valor = cbl_parm(old,new);
+
+ if(valor == 1) {
+ return valor;
+ }
+
+ if (rename(cobpri,cobpro) == 0) {
+ return 0;
+ }
+ else {
+ return 3;
+ }
+}
+
+cbl_t cbl_delete_file(char *arquivo) {
+ int valor;
+
+ if ( cbl_align(arquivo) != 0 ) {
+ return 1;
+ }
+
+ if ( (valor=cbl_parm(arquivo,""))== -2 ) {
+ return 0;
+ }
+
+ if ( valor == 1 ) {
+ return valor;
+ }
+
+ chdir(cobpri);
+
+ if (remove(cobpri) != 0) {
+ return 2;
+ }
+
+ return 0;
+}
+
+cbl_t cbl_check_file_exist(char *arquivo) {
+ int valor;
+ //DIR *dir;
+
+ if (cbl_align(arquivo) != 0) {
+ return 1;
+ }
+
+ valor = cbl_parm(arquivo,"");
+
+ if ( opendir(cobpri) != NULL ) {
+ return(-1);
+ }
+
+ if ( access(cobpri,F_OK) != 0 ) {
+ return 1;
+ }
+
+ return 0;
+}
+
+cbl_t cbl_move_file(char *origem, char *destino) {
+ int valor;
+
+ if ( cbl_align(origem) != 0 ) {
+ return 1;
+ }
+
+ if ( cbl_align(destino) != 0 ) {
+ return 1;
+ }
+
+ valor = cbl_parm(origem,destino);
+
+ if ( valor == 1 ) {
+ return valor;
+ }
+
+ if (cbl_copy_file(cobpri,cobpro) == 0) {
+ if (cbl_delete_file(cobpri) != 0) {
+ return 5;
+ }
+ }
+ else {
+ return 3;
+ }
+
+ return 0;
+}
+
+void cbl_open_file(char *arquivo, char *access_mode,
+ char *deny_mode,int file_handle,
+ cbl_t *retorno) {
+ register int i;
+ int valor;
+
+ cbl_align(arquivo);
+ cbl_align(access_mode);
+ cbl_align(deny_mode);
+ valor=cbl_parm(arquivo,"");
+// if(valor == 1) { return valor; } walter
+ if ( valor == 1 ) {
+ *retorno = 1;
+ return;
+ }
+
+ if ( !strcmp(access_mode,deny_mode) ) {
+ *retorno = 1;
+ return;
+ }
+
+ for ( i=1 ; i max_col)
+ max_col = strlen(line);
+ max_lines++;
+ fgets(line, 1024, file);
+ }
+ fclose(file);
+
+ file = fopen(narq, "r");
+
+ // Alloc memory to put text
+ text = malloc( (sizeof(char) * ( max_col * max_lines )) + 128 );
+ *text = 0;
+ memset(text, ' ', (sizeof(char) * ( max_col * max_lines )) + 128);
+ fgets(line, 1024, file);
+
+ p = 0;
+ while ( !feof(file) ) {
+ memcpy(text + p, line, strlen(line));
+ p += max_col;
+ fgets(line, 1024, file);
+ }
+
+ fclose(file);
+
+ // show the file
+ fline = 0;
+ fcol = 0;
+ ncol = 80;
+
+ if(ncol > max_col)
+ ncol = max_col;
+
+ show = 1;
+ while(show) {
+ p = 0;
+ while( (fline + p) < max_lines && p < 24) {
+ move(p, 0);
+ pnt = ( (fline + p) * max_col ) + fcol;
+ addnstr(text + pnt, ncol);
+ p++;
+ }
+
+ move(0, 0);
+ ca = getch();
+
+ switch(ca) {
+ case 'i':
+ case 'I':
+ fline = 0;
+ fcol = 0;
+ break;
+
+ case 'a':
+ case 'A':
+ if ( fline > 0 )
+ fline--;
+ break;
+
+ case 'z':
+ case 'Z':
+ if ( fline < (max_lines - 24) )
+ fline++;
+ break;
+
+ case ',':
+ if ( fcol > 0 )
+ fcol--;
+ break;
+
+ case '.':
+ if ( fcol < (max_col - 80) )
+ fcol++;
+ break;
+
+ case 'f':
+ case 'F':
+ show = 0;
+ break;
+ }
+ }
+
+ // Return to the application
+ free(text);
+ free(narq);
+
+ return;
+}
diff --git a/cobroutines/files.o b/cobroutines/files.o
new file mode 100644
index 0000000..b5e9f02
Binary files /dev/null and b/cobroutines/files.o differ
diff --git a/cobroutines/globals.c b/cobroutines/globals.c
new file mode 100644
index 0000000..68188a5
--- /dev/null
+++ b/cobroutines/globals.c
@@ -0,0 +1,305 @@
+/*
+ * Copyright (C) 2003 Hudson Reis, Wesley Oliveira, Aline Oliveira.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1,
+ * or (at your option) any later version.
+ *
+ * This library 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; see the file COPYING.LIB. If
+ * not, write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* COB internal routines */
+
+#include
+#include
+#include
+#include
+#include