示例#1
0
        private string RunSASProgram(string sasCode)
        {
            StringBuilder logBuilder = new StringBuilder();

            if (activeSession != null && activeSession.Workspace != null)
            {
                logBuilder.AppendLine("Running SAS ...");

                activeSession.Workspace.LanguageService.Submit(sasCode);

                bool hasErrors = false, hasWarnings = false;

                Array carriage, lineTypes, lines;
                do
                {
                    SAS.LanguageServiceCarriageControl CarriageControl = new SAS.LanguageServiceCarriageControl();
                    SAS.LanguageServiceLineType        LineType        = new SAS.LanguageServiceLineType();

                    activeSession.Workspace.LanguageService.FlushLogLines(1000,
                                                                          out carriage,
                                                                          out lineTypes,
                                                                          out lines);

                    for (int i = 0; i < lines.GetLength(0); i++)
                    {
                        SAS.LanguageServiceLineType pre =
                            (SAS.LanguageServiceLineType)lineTypes.GetValue(i);
                        switch (pre)
                        {
                        case SAS.LanguageServiceLineType.LanguageServiceLineTypeError:
                            hasErrors = true;
                            break;

                        case SAS.LanguageServiceLineType.LanguageServiceLineTypeNote:
                            break;

                        case SAS.LanguageServiceLineType.LanguageServiceLineTypeWarning:
                            hasWarnings = true;
                            break;

                        case SAS.LanguageServiceLineType.LanguageServiceLineTypeTitle:
                        case SAS.LanguageServiceLineType.LanguageServiceLineTypeFootnote:
                            break;

                        default:
                            break;
                        }

                        logBuilder.AppendLine(string.Format("{0}{1}", lines.GetValue(i) as string, Environment.NewLine));
                    }
                }while (lines != null && lines.Length > 0);

                if (hasWarnings && hasErrors)
                {
                    logBuilder.AppendLine("Program complete - has ERRORS and WARNINGS");
                }
                else if (hasErrors)
                {
                    logBuilder.AppendLine("Program complete - has ERRORS");
                }
                else if (hasWarnings)
                {
                    logBuilder.AppendLine("Program complete - has WARNINGS");
                }
                else
                {
                    logBuilder.AppendLine("Program complete - no warnings or errors!");
                }
            }

            return(logBuilder.ToString());
        }
        /// <summary>
        /// Collect the results of a job from the SAS server
        /// </summary>
        private void FetchResults()
        {
            bool hasErrors = false, hasWarnings = false;

            // when code is complete, update the log viewer
            Array carriage, lineTypes, lines;

            do
            {
                activeSession.Workspace.LanguageService.FlushLogLines(1000,
                                                                      out carriage,
                                                                      out lineTypes,
                                                                      out lines);
                for (int i = 0; i < lines.GetLength(0); i++)
                {
                    SAS.LanguageServiceLineType pre =
                        (SAS.LanguageServiceLineType)lineTypes.GetValue(i);
                    switch (pre)
                    {
                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeError:
                        hasErrors             = true;
                        txtLog.SelectionColor = Color.Red;
                        break;

                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeNote:
                        txtLog.SelectionColor = Color.DarkGreen;
                        break;

                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeWarning:
                        hasWarnings           = true;
                        txtLog.SelectionColor = Color.DarkCyan;
                        break;

                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeTitle:
                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeFootnote:
                        txtLog.SelectionColor = Color.Blue;
                        break;

                    default:
                        txtLog.SelectionColor = txtLog.ForeColor;
                        break;
                    }

                    txtLog.AppendText(string.Format("{0}{1}", lines.GetValue(i) as string, Environment.NewLine));
                }
            }while (lines != null && lines.Length > 0);

            // and update the Listing viewer
            do
            {
                activeSession.Workspace.LanguageService.FlushListLines(1000, out carriage, out lineTypes, out lines);
                for (int i = 0; i < lines.GetLength(0); i++)
                {
                    SAS.LanguageServiceLineType pre = (SAS.LanguageServiceLineType)lineTypes.GetValue(i);
                    switch (pre)
                    {
                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeTitle:
                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeFootnote:
                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeByline:
                        txtListing.SelectionColor = Color.Blue;
                        break;

                    default:
                        txtListing.SelectionColor = txtListing.ForeColor;
                        break;
                    }

                    txtListing.AppendText(string.Format("{0}{1}", lines.GetValue(i) as string, Environment.NewLine));
                }
            }while (lines != null && lines.Length > 0);

            if (hasWarnings && hasErrors)
            {
                statusMsg.Text = "Program complete - has ERRORS and WARNINGS";
            }
            else if (hasErrors)
            {
                statusMsg.Text = "Program complete - has ERRORS";
            }
            else if (hasWarnings)
            {
                statusMsg.Text = "Program complete - has WARNINGS";
            }
            else
            {
                statusMsg.Text = "Program complete - no warnings or errors!";
            }
        }
示例#3
0
        static int Main(string[] args)
        {
            int       exitcode      = 0;
            SasServer activeSession = new SasServer();

            //string code = ReadFileFromAssembly("");

            string path     = args[0];
            string readCode = "proc setinit; run;";

            // This text is added only once to the file.
            if (File.Exists(path))
            {
                readCode = File.ReadAllText(path);
            }

            //connect to sas server
            try
            {
                activeSession.Connect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //run sas code
            if (activeSession != null && activeSession.Workspace != null)
            {
                activeSession.Workspace.LanguageService.Submit(readCode);
            }


            PopulateDatasetList(activeSession, "work");

            // when code is complete, check error/warning
            bool          hasErrors = false, hasWarnings = false;
            StringBuilder log = new StringBuilder();
            Array         carriage, lineTypes, lines;

            do
            {
                activeSession.Workspace.LanguageService.FlushLogLines(1000,
                                                                      out carriage,
                                                                      out lineTypes,
                                                                      out lines);
                for (int i = 0; i < lines.GetLength(0); i++)
                {
                    SAS.LanguageServiceLineType pre =
                        (SAS.LanguageServiceLineType)lineTypes.GetValue(i);
                    Console.WriteLine(lines.GetValue(i));
                    switch (pre)
                    {
                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeError:
                        hasErrors = true;
                        break;

                    case SAS.LanguageServiceLineType.LanguageServiceLineTypeWarning:
                        hasWarnings = true;
                        break;

                    default:
                        break;
                    }
                    log.Append(string.Format("{0}{1}", lines.GetValue(i) as string, Environment.NewLine));
                }
            }while (lines != null && lines.Length > 0);

            using (StreamWriter outfile = new StreamWriter("log.txt"))
            {
                outfile.Write(log.ToString());
            }

            if (hasWarnings && hasErrors)
            {
                Console.WriteLine("Program complete - has ERRORS and WARNINGS"); exitcode = 4;
            }
            else if (hasErrors)
            {
                Console.WriteLine("Program complete - has ERRORS"); exitcode = 4;
            }
            else if (hasWarnings)
            {
                Console.WriteLine("Program complete - has WARNINGS"); exitcode = 0;
            }
            else
            {
                Console.WriteLine("Program complete - no warnings or errors!"); exitcode = 0;
            }


            return(exitcode);
        }