示例#1
0
文件: tzerrord.c 项目: arksoftgit/10c
/////////////////////////////////////////////////////////////////////////////
//
//    OPERATION: zwTZERRORD_ErrorListSaveToFile
//
//
/////////////////////////////////////////////////////////////////////////////
zOPER_EXPORT zSHORT /*DIALOG */  OPERATION
zwTZERRORD_ErrorListSaveToFile( zVIEW vSubtask )
{
   zVIEW  vTZERROR;
   zULONG ulZFlags = 0;
   zLONG  lLth;
   zLONG  FileHandle;
   zCHAR  szMsg[300];
   zCHAR  szTool[50];
   zCHAR  szTitle[ 100 ];
   zCHAR  szName[ 33 ];
   zCHAR  szFileName[ zMAX_FILENAME_LTH + 1];

   if ( GetViewByName( &vTZERROR, "TZERROR", vSubtask, zLEVEL_TASK ) < 0 )
      return( -1 );

   if ( CompareAttributeToInteger( vTZERROR, "ErrorList", "MetaType",
                                   zSOURCE_ERD_META ) == 0 )
   {
      zstrcpy( szTool, "Data Model" );
      zstrcpy( szName, "Entity" );
      lLth = 32;
   }
   else
   if ( CompareAttributeToInteger( vTZERROR, "ErrorList", "MetaType",
                                   zSOURCE_REPLACE_BMP ) == 0 )
   {
      zstrcpy( szTool, "Bitmap" );
      zstrcpy( szName, "Dialog" );
      lLth = 8;
   }
   else
   {
      zstrcpy( szTool, "" );
      zstrcpy( szName, "" );
      lLth = 1;
   }

   szFileName[ 0 ] = 0;
   ulZFlags = zOFN_OVERWRITEPROMPT | zOFN_CREATEPROMPT | zOFN_SAVEAS | zOFN_HIDEREADONLY;

   if ( OperatorPromptForFile( vSubtask, szFileName, sizeof( szFileName ),
                               "Text Files (*.txt)|*.txt|", "txt", ulZFlags ) == 1 )
   {
      FileHandle = SysOpenFile( vSubtask, szFileName, COREFILE_WRITE );

      if ( FileHandle == -1 )
      {
         zstrcpy( szMsg, "Unable to open " );
         zstrcat( szMsg, szFileName );
         zstrcpy( szTitle, szTool );
         zstrcat( szTitle, " Maintenance" );
         MessageSend( vSubtask, "FEH001", szTitle, szMsg,
                      zMSGQ_OBJECT_CONSTRAINT_ERROR, 0 );
         return( -1 );
      }

      zwfnTZERRORD_WriteErrorListToFile( vTZERROR, FileHandle, szTool, szName, lLth );
      SysCloseFile( vSubtask, FileHandle, 0 );
   }

   return( 0 );

} // zwTZERRORD_ErrorListSaveToFile
示例#2
0
//:   VIEW vReportDef     BASED ON LOD TZRPSRCO
zOPER_EXPORT zSHORT OPERATION
oTZRPSRCO_GenerateXSLT_XML( zVIEW     vSourceOI,
                            zPCHAR    szReportName,
                            zPCHAR    szXMLFileName,
                            zPCHAR    szTopEntityName )
{
   zVIEW     vReportDef = 0; 
   //:VIEW vReportLODRecurs BASED ON LOD TZRPSRCO
   zVIEW     vReportLODRecurs = 0; 
   //:VIEW vReportDefRoot BASED ON LOD TZRPSRCO
   zVIEW     vReportDefRoot = 0; 
   //:VIEW vSourceOIHier
   zVIEW     vSourceOIHier = 0; 
   //:VIEW vSourceOIDebug
   zVIEW     vSourceOIDebug = 0; 
   //:VIEW vLOD           BASED ON LOD TZZOLODO
   zVIEW     vLOD = 0; 
   //:VIEW vTaskLPLR  BASED ON LOD TZCMLPLO
   zVIEW     vTaskLPLR = 0; 
   //:STRING ( 200 )  szMsg
   zCHAR     szMsg[ 201 ] = { 0 }; 
   //:STRING ( 200 )  szFileName
   zCHAR     szFileName[ 201 ] = { 0 }; 
   //:STRING ( 32 )   szReturnedEntityName
   zCHAR     szReturnedEntityName[ 33 ] = { 0 }; 
   //:STRING ( 32 )   szLastReturnedEntityName
   zCHAR     szLastReturnedEntityName[ 33 ] = { 0 }; 
   //:STRING ( 32 )   szParentEntityName
   zCHAR     szParentEntityName[ 33 ] = { 0 }; 
   //:STRING ( 32 )   szDrivingViewName
   zCHAR     szDrivingViewName[ 33 ] = { 0 }; 
   //:STRING ( 50 )   szIndentationValue
   zCHAR     szIndentationValue[ 51 ] = { 0 }; 
   //:STRING ( 50 )   szIndentationSubValue
   zCHAR     szIndentationSubValue[ 51 ] = { 0 }; 
   //:STRING ( 1 )    szInNodeFlag
   zCHAR     szInNodeFlag[ 2 ] = { 0 }; 
   //:STRING ( 5000 ) szOutputLine
   zCHAR     szOutputLine[ 5001 ] = { 0 }; 
   //:INTEGER         lFileHandle
   zLONG     lFileHandle = 0; 
   //:INTEGER         Indentation
   zLONG     Indentation = 0; 
   //:SHORT           ReturnedHierLevel
   zSHORT    ReturnedHierLevel = 0; 
   //:SHORT           LastHierLevel
   zSHORT    LastHierLevel = 0; 
   //:SHORT           nRC
   zSHORT    nRC = 0; 
   zSHORT    lTempInteger_0; 
   zSHORT    RESULT; 


   //:// Build an XSLT XML FO object for the passed in application object and Report Definition.

   //:// First we need to activate the report def...
   //:SysReadZeidonIni( -1, "[WorkStation]", "ResourcePath", szFileName )
   SysReadZeidonIni( -1, "[WorkStation]", "ResourcePath", szFileName );
   //://szFileName = "c:\lplr\zencas\bin\"
   //:szFileName = szFileName + szReportName + ".xrp"
   ZeidonStringConcat( szFileName, 1, 0, szReportName, 1, 0, 201 );
   ZeidonStringConcat( szFileName, 1, 0, ".xrp", 1, 0, 201 );
   //:SfActivateSysOI_FromFile( vReportDef, "TZRPSRCO", vSourceOI, szFileName, zSINGLE )
   SfActivateSysOI_FromFile( &vReportDef, "TZRPSRCO", vSourceOI, szFileName, zSINGLE );

   //:// Get the Name of the Driving object, as we will need that in processing mapping.
   //:IF vReportDef.DrivingViewObjRef EXISTS
   lTempInteger_0 = CheckExistenceOfEntity( vReportDef, "DrivingViewObjRef" );
   if ( lTempInteger_0 == 0 )
   { 
      //:szDrivingViewName = vReportDef.DrivingViewObjRef.Name
      GetVariableFromAttribute( szDrivingViewName, 0, 'S', 33, vReportDef, "DrivingViewObjRef", "Name", "", 0 );
      //:ELSE
   } 
   else
   { 
      //:szMsg = "The report must have a 'Driving View' set in the report details."
      ZeidonStringCopy( szMsg, 1, 0, "The report must have a 'Driving View' set in the report details.", 1, 0, 201 );
      //:MessageSend( vReportDef, "", "Generate XSLT",
      //:             szMsg, zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 )
      MessageSend( vReportDef, "", "Generate XSLT", szMsg, zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 );
      //:RETURN -1
      return( -1 );
   } 

   //:END

   //:// Open XML output file.
   //:SysReadZeidonIni( -1, "[Workstation]", "XSLTDirectory", szFileName )
   SysReadZeidonIni( -1, "[Workstation]", "XSLTDirectory", szFileName );
   //:szFileName = szFileName + szXMLFileName + ".xml"
   ZeidonStringConcat( szFileName, 1, 0, szXMLFileName, 1, 0, 201 );
   ZeidonStringConcat( szFileName, 1, 0, ".xml", 1, 0, 201 );
   //:lFileHandle = SysOpenFile( vReportDef, szFileName, COREFILE_WRITE )
   lFileHandle = SysOpenFile( vReportDef, szFileName, COREFILE_WRITE );
   //:IF lFileHandle < 0
   if ( lFileHandle < 0 )
   { 
      //:szMsg = "Cannot open XSLT Output File, " + szFileName
      ZeidonStringCopy( szMsg, 1, 0, "Cannot open XSLT Output File, ", 1, 0, 201 );
      ZeidonStringConcat( szMsg, 1, 0, szFileName, 1, 0, 201 );
      //:MessageSend( vReportDef, "", "Generate XSLT",
      //:             szMsg, zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 )
      MessageSend( vReportDef, "", "Generate XSLT", szMsg, zMSGQ_OBJECT_CONSTRAINT_WARNING, 0 );
      //:RETURN -1
      return( -1 );
   } 

   //:END

   //:// Navigate the vSourceOI object/subobject hierarchically and create an XML node for each entity that has a corresponding
   //:// GroupSet entity in the Report Def.

   //:// Generate basic header.
   //:szOutputLine = "<?xml version=" + QUOTES + "1.0" + QUOTES + " encoding=" + QUOTES + "iso-8859-1" + QUOTES + "?>"
   ZeidonStringCopy( szOutputLine, 1, 0, "<?xml version=", 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, QUOTES, 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, "1.0", 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, QUOTES, 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, " encoding=", 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, QUOTES, 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, "iso-8859-1", 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, QUOTES, 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, "?>", 1, 0, 5001 );
   //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
   oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );
   //:szOutputLine = "<zOI>"
   ZeidonStringCopy( szOutputLine, 1, 0, "<zOI>", 1, 0, 5001 );
   //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
   oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );

   //:// Process the page header. 
   //:SET CURSOR FIRST vReportDef.GroupSet WHERE vReportDef.GroupSet.Type = "PH"
   RESULT = SetCursorFirstEntityByString( vReportDef, "GroupSet", "Type", "PH", "" );
   //:IF RESULT >= zCURSOR_SET
   if ( RESULT >= zCURSOR_SET )
   { 
      //:szOutputLine = "<PageHeader>"
      ZeidonStringCopy( szOutputLine, 1, 0, "<PageHeader>", 1, 0, 5001 );
      //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
      oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );
      //:XML_PageHeaderFooter( vReportDef, vSourceOI, szOutputLine, lFileHandle, szIndentationValue )
      oTZRPSRCO_XML_PageHeaderFooter( vReportDef, vSourceOI, szOutputLine, lFileHandle, szIndentationValue );
      //:szOutputLine = "</PageHeader>"
      ZeidonStringCopy( szOutputLine, 1, 0, "</PageHeader>", 1, 0, 5001 );
      //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
      oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );
   } 

   //:END

   //:szOutputLine = "   <GR_" + szTopEntityName + ">"
   ZeidonStringCopy( szOutputLine, 1, 0, "   <GR_", 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, szTopEntityName, 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, ">", 1, 0, 5001 );
   //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
   oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );

   //:// Process Top Entity Header, if it exists.
   //:CreateViewFromView( vReportLODRecurs, vReportDef )
   CreateViewFromView( &vReportLODRecurs, vReportDef );

   //:GenerateXML_LODRecurs( vReportDef, vReportLODRecurs, vSourceOI, szOutputLine, lFileHandle, szIndentationValue )
   oTZRPSRCO_GenerateXML_LODRecurs( vReportDef, vReportLODRecurs, vSourceOI, szOutputLine, lFileHandle, szIndentationValue );


   //:szOutputLine = "   </GR_" + szTopEntityName + ">"
   ZeidonStringCopy( szOutputLine, 1, 0, "   </GR_", 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, szTopEntityName, 1, 0, 5001 );
   ZeidonStringConcat( szOutputLine, 1, 0, ">", 1, 0, 5001 );
   //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
   oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );

   //:// Process the page footer. 
   //:SET CURSOR FIRST vReportDef.GroupSet WHERE vReportDef.GroupSet.Type = "PF"
   RESULT = SetCursorFirstEntityByString( vReportDef, "GroupSet", "Type", "PF", "" );
   //:IF RESULT >= zCURSOR_SET
   if ( RESULT >= zCURSOR_SET )
   { 
      //:szOutputLine = "<PageFooter>"
      ZeidonStringCopy( szOutputLine, 1, 0, "<PageFooter>", 1, 0, 5001 );
      //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
      oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );
      //:XML_PageHeaderFooter( vReportDef, vSourceOI, szOutputLine, lFileHandle, szIndentationValue )
      oTZRPSRCO_XML_PageHeaderFooter( vReportDef, vSourceOI, szOutputLine, lFileHandle, szIndentationValue );
      //:szOutputLine = "</PageFooter>"
      ZeidonStringCopy( szOutputLine, 1, 0, "</PageFooter>", 1, 0, 5001 );
      //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
      oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );
   } 

   //:END

   //:// Terminate and close the XML file.
   //:szOutputLine = "</zOI>"
   ZeidonStringCopy( szOutputLine, 1, 0, "</zOI>", 1, 0, 5001 );
   //:GenerateXMLLine( vReportDef, lFileHandle, szOutputLine )
   oTZRPSRCO_GenerateXMLLine( vReportDef, lFileHandle, szOutputLine );
   //:SysCloseFile( vReportDef, lFileHandle, 0 )
   SysCloseFile( vReportDef, lFileHandle, 0 );
   return( 0 );
// END
} 
示例#3
0
文件: tzcmrptd.c 项目: arksoftgit/10c
zSHORT  /* LOCAL */  OPERATION
zwTZCMRPTD_ExportTextAUX( zVIEW vSubtask,
                          zPCHAR pszFileName )
{
   zVIEW   vTZBRAU3O;
   zLONG   lfFile;
   zCHAR   szMsg[ 256 ];
   zCHAR   szText[ 1000 ];
   zPCHAR  szAttr;

   if ( GetViewByName( &vTZBRAU3O, "TZBRAU3O", vSubtask, zLEVEL_TASK ) > 0 )
   {
      lfFile = SysOpenFile( vSubtask, pszFileName, COREFILE_WRITE );

      if ( lfFile < 0 )
      {
         strcpy( szMsg, "Error writing the File '" );
         strcat( szMsg, pszFileName );
         strcat( szMsg, "'." );
         MessageSend( vSubtask, "CM00xxx", "Configuration Management",
                      szMsg, zMSGQ_OBJECT_CONSTRAINT_ERROR, zBEEP );
      }

      strcpy( szText, "AuditTrail Print created with (c) Zeidon 1997" );
      SysWriteLine( vSubtask, lfFile, szText );

      strcpy( szText, "---------------------------------------------" );
      SysWriteLine( vSubtask, lfFile, szText );

      // save the CPLR-Name:
      strcpy( szText, "CPLR:\t\t" );
      GetStringFromAttribute( szMsg, vTZBRAU3O, "CPLR", "Name" );
      strcat( szText, szMsg );
      SysWriteLine( vSubtask, lfFile, szText );

      // save the DateTime:
      strcpy( szText, "Date:\t\t" );
      GetStringFromAttributeByContext( szMsg, vTZBRAU3O, "AuditTrail", "TimeStamp",
                                       "DD.MM.YYYY HH:MM:SS", 20);
      strcat( szText, szMsg );
      SysWriteLine( vSubtask, lfFile, szText );

      // save the User:
      strcpy( szText, "User:\t\t" );
      GetStringFromAttribute( szMsg, vTZBRAU3O, "AuditTrail", "UserName" );
      strcat( szText, szMsg );
      strcat( szText, " " );
      GetStringFromAttribute( szMsg, vTZBRAU3O, "AuditTrail", "UserDesc" );
      strcat( szText, szMsg );
      SysWriteLine( vSubtask, lfFile, szText );

      // save the ShortDesc:
      strcpy( szText, "ShortDesc:\t" );
      GetStringFromAttribute( szMsg, vTZBRAU3O, "AuditTrail", "ShortDesc" );
      strcat( szText, szMsg );
      SysWriteLine( vSubtask, lfFile, szText );

      strcpy( szText, "---------------------------------------------" );
      SysWriteLine( vSubtask, lfFile, szText );

      GetAddrForAttribute( &szAttr, vTZBRAU3O, "AuditTrail", "Desc" );
      SysWriteLine( vSubtask, lfFile, szAttr );

      // Close the template file.
      SysCloseFile( vSubtask, lfFile, 0 );
   }
   else
   {
      IssueError( vSubtask, 0, 0,
                  "Object TZCMAU3O does not exist (zwTZCMRPTD_ExportTextAUX)" );
   }

   return( 0 );
}
示例#4
0
文件: tzogsrco.c 项目: arksoftgit/10c
   //:VIEW OperationXOG    BASED ON LOD TZZOXOGO
zOPER_EXPORT zSHORT OPERATION
oTZOGSRCO_GenerateXOG( zVIEW     OperationGroup )
{
   zVIEW     OperationXOG = 0; 
   //:VIEW OperationGroupT BASED ON LOD TZOGSRCO
   zVIEW     OperationGroupT = 0; 
   //:VIEW CurrentLPLR     BASED ON LOD TZCMLPLO
   zVIEW     CurrentLPLR = 0; 
   //:STRING ( 513 ) XOG_FileName 
   zCHAR     XOG_FileName[ 514 ] = { 0 }; 
   //:STRING ( 513 ) POG_FileName
   zCHAR     POG_FileName[ 514 ] = { 0 }; 
   //:STRING ( 200 ) szMsg
   zCHAR     szMsg[ 201 ] = { 0 }; 
   //:INTEGER        lFile
   zLONG     lFile = 0; 
   //:SHORT          nRC                 
   zSHORT    nRC = 0; 
   zSHORT    RESULT; 
   zCHAR     szTempString_0[ 33 ]; 
   zCHAR     szTempString_1[ 33 ]; 


   //:// Build the executable Global Object executable for all Operations in the LPLR.

   //:// Activate or initialize the XOG executable object.
   //:GET VIEW CurrentLPLR NAMED "TaskLPLR"
   RESULT = GetViewByName( &CurrentLPLR, "TaskLPLR", OperationGroup, zLEVEL_TASK );
   //:XOG_FileName = CurrentLPLR.LPLR.ExecDir + "\" + CurrentLPLR.LPLR.Name + ".XOG"
   GetStringFromAttribute( XOG_FileName, CurrentLPLR, "LPLR", "ExecDir" );
   ZeidonStringConcat( XOG_FileName, 1, 0, "\\", 1, 0, 514 );
   GetVariableFromAttribute( szTempString_0, 0, 'S', 33, CurrentLPLR, "LPLR", "Name", "", 0 );
   ZeidonStringConcat( XOG_FileName, 1, 0, szTempString_0, 1, 0, 514 );
   ZeidonStringConcat( XOG_FileName, 1, 0, ".XOG", 1, 0, 514 );
   //:lFile = SysOpenFile( OperationGroup, XOG_FileName, COREFILE_READ )
   lFile = SysOpenFile( OperationGroup, XOG_FileName, COREFILE_READ );
   //:IF lFile < 0
   if ( lFile < 0 )
   { 
      //:// Executable has not yet been generated.
      //:ACTIVATE OperationXOG EMPTY 
      RESULT = ActivateEmptyObjectInstance( &OperationXOG, "TZZOXOGO", OperationGroup, zSINGLE );
      //:CREATE ENTITY OperationXOG.TZZOXOGO 
      RESULT = CreateEntity( OperationXOG, "TZZOXOGO", zPOS_AFTER );
      //:OperationXOG.TZZOXOGO.NAME = CurrentLPLR.LPLR.Name
      SetAttributeFromAttribute( OperationXOG, "TZZOXOGO", "NAME", CurrentLPLR, "LPLR", "Name" );
      //:ELSE
   } 
   else
   { 
      //:SysCloseFile( OperationGroup, lFile, 0 )
      SysCloseFile( OperationGroup, lFile, 0 );
      //:// Get current executable File.
      //:ActivateOI_FromFile( OperationXOG, "TZZOXOGO", OperationGroup, XOG_FileName, zSINGLE )
      ActivateOI_FromFile( &OperationXOG, "TZZOXOGO", OperationGroup, XOG_FileName, zSINGLE );

      //:// Delete current source file entries.
      //:FOR EACH OperationXOG.GLOBALOPERATIONSOURCEFILE 
      RESULT = SetCursorFirstEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "" );
      while ( RESULT > zCURSOR_UNCHANGED )
      { 
         //:DELETE ENTITY OperationXOG.GLOBALOPERATIONSOURCEFILE NONE 
         RESULT = DeleteEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", zREPOS_NONE );
         RESULT = SetCursorNextEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "" );
      } 

      //:END
   } 

   //:END
   //:NAME VIEW OperationXOG "OperationXOG"
   SetNameForView( OperationXOG, "OperationXOG", 0, zLEVEL_TASK );

   //:// Build the executable components from each POG Operation.
   //:SET CURSOR FIRST CurrentLPLR.W_MetaType WHERE CurrentLPLR.W_MetaType.Type = 14   // 14 is Global Operation Group 
   RESULT = SetCursorFirstEntityByInteger( CurrentLPLR, "W_MetaType", "Type", 14, "" );
   //:FOR EACH CurrentLPLR.W_MetaDef 
   RESULT = SetCursorFirstEntity( CurrentLPLR, "W_MetaDef", "" );
   while ( RESULT > zCURSOR_UNCHANGED )
   { 
      //:POG_FileName = CurrentLPLR.LPLR.MetaSrcDir + "\" + CurrentLPLR.W_MetaDef.Name + ".POG"
      GetStringFromAttribute( POG_FileName, CurrentLPLR, "LPLR", "MetaSrcDir" );
      ZeidonStringConcat( POG_FileName, 1, 0, "\\", 1, 0, 514 );
      GetVariableFromAttribute( szTempString_1, 0, 'S', 33, CurrentLPLR, "W_MetaDef", "Name", "", 0 );
      ZeidonStringConcat( POG_FileName, 1, 0, szTempString_1, 1, 0, 514 );
      ZeidonStringConcat( POG_FileName, 1, 0, ".POG", 1, 0, 514 );
      //:nRC = ActivateOI_FromFile( OperationGroupT, "TZOGSRCO", OperationGroup, POG_FileName, zSINGLE + 8192 )
      nRC = ActivateOI_FromFile( &OperationGroupT, "TZOGSRCO", OperationGroup, POG_FileName, zSINGLE + 8192 );
      //:IF nRC < 0
      if ( nRC < 0 )
      { 
         //:szMsg = "Can't open POG file, " + POG_FileName
         ZeidonStringCopy( szMsg, 1, 0, "Can't open POG file, ", 1, 0, 201 );
         ZeidonStringConcat( szMsg, 1, 0, POG_FileName, 1, 0, 201 );
         //:IssueError( OperationGroup,0,0, szMsg )
         IssueError( OperationGroup, 0, 0, szMsg );
         //:RETURN -1
         return( -1 );
      } 

      //:END
      //:// Create Source file entry.
      //:CREATE ENTITY OperationXOG.GLOBALOPERATIONSOURCEFILE 
      RESULT = CreateEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", zPOS_AFTER );
      //:OperationXOG.GLOBALOPERATIONSOURCEFILE.NAME         = OperationGroupT.GlobalOperationGroup.Name 
      SetAttributeFromAttribute( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "NAME", OperationGroupT, "GlobalOperationGroup", "Name" );
      //:OperationXOG.GLOBALOPERATIONSOURCEFILE.LANGUAGETYPE = OperationGroupT.GlobalOperationGroup.LanguageType 
      SetAttributeFromAttribute( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "LANGUAGETYPE", OperationGroupT, "GlobalOperationGroup", "LanguageType" );

      //:// Create each Operation entry.
      //:FOR EACH OperationGroupT.Operation 
      RESULT = SetCursorFirstEntity( OperationGroupT, "Operation", "" );
      while ( RESULT > zCURSOR_UNCHANGED )
      { 
         //:CREATE ENTITY OperationXOG.OPERATION 
         RESULT = CreateEntity( OperationXOG, "OPERATION", zPOS_AFTER );
         //:OperationXOG.OPERATION.NAME = OperationGroupT.Operation.Name 
         SetAttributeFromAttribute( OperationXOG, "OPERATION", "NAME", OperationGroupT, "Operation", "Name" );
         //:OperationXOG.OPERATION.TYPE = OperationGroupT.Operation.Type 
         SetAttributeFromAttribute( OperationXOG, "OPERATION", "TYPE", OperationGroupT, "Operation", "Type" );

         //:FOR EACH OperationGroupT.Parameter 
         RESULT = SetCursorFirstEntity( OperationGroupT, "Parameter", "" );
         while ( RESULT > zCURSOR_UNCHANGED )
         { 
            //:CREATE ENTITY OperationXOG.PARAMETER 
            RESULT = CreateEntity( OperationXOG, "PARAMETER", zPOS_AFTER );
            //:OperationXOG.PARAMETER.NAME     = OperationGroupT.Parameter.ShortDesc 
            SetAttributeFromAttribute( OperationXOG, "PARAMETER", "NAME", OperationGroupT, "Parameter", "ShortDesc" );
            //:OperationXOG.PARAMETER.DATATYPE = OperationGroupT.Parameter.DataType 
            SetAttributeFromAttribute( OperationXOG, "PARAMETER", "DATATYPE", OperationGroupT, "Parameter", "DataType" );
            RESULT = SetCursorNextEntity( OperationGroupT, "Parameter", "" );
         } 

         RESULT = SetCursorNextEntity( OperationGroupT, "Operation", "" );
         //:END 
      } 

      RESULT = SetCursorNextEntity( CurrentLPLR, "W_MetaDef", "" );
      //:END
   } 

   //:END
   //:CommitOI_ToFile( OperationXOG, XOG_FileName, zASCII )
   CommitOI_ToFile( OperationXOG, XOG_FileName, zASCII );
   //:DropObjectInstance( OperationXOG )
   DropObjectInstance( OperationXOG );
   return( 0 );
// END
}