Chapter Contents

Previous

Next
SAS/CONNECT User's Guide

Miscellaneous Questions and Problems

The following sections address the miscellaneous questions that may develop as you use SAS/CONNECT.


DOWNLOAD and UPLOAD Procedures

Problem

During a PROC DOWNLOAD or a PROC UPLOAD step, you receive the following error message:

 ERROR 200-322: The symbol is not recognized.

Explanation

This problem occurs if the remote file that is being referenced by the INFILE or the OUTFILE option begins with a special character and is specified as FILEREF(filename), for example:

 PROC UPLOAD INFILE=pcflref 
    OUTFILE=hstflref($filname); 
 run;

To avoid the problem, put single quotes (') around the filename, as shown in the following example:

 PROC UPLOAD INFILE=pcflref 
    OUTFILE=hstflref('$filname'); 
 run;

Problem

You transfer a variable block binary file that has a record length (LRECL) greater than 256 bytes, and SAS/CONNECT segments the file into multiple 256-byte records. For example, downloading a binary file that has an LRECL of 1024 results in four 256-byte records.

Explanation

The data is not lost when the file is segmented by SAS/CONNECT. Using the LRECL option in the remote or the local FILENAME statement does not avoid this problem. To avoid the problem, follow these steps:

  1. Define the OS/390 FILENAME statement by using the RECFM=U parameter.
    FILENAME VFILE 'VARIABLE.BLOCK.FILE' RECFM=U;

  2. Use the DOWNLOAD procedure with the BINARY option to transfer the file. Information displayed in the local Log windows regarding the transfer shows how many bytes were transferred. For example:
    NOTE:  1231 bytes were transferred at 
           1231 bytes/second.

  3. On the local host, use the RECFM= and the LRECL= options in the INFILE statement, which points to the transferred file, where RECFM is set to S370VB and LRECL is set to the number of bytes that are transferred.


Problem

You transfer a fixed block binary file that has a record length (LRECL) greater than 256 bytes and SAS/CONNECT segments the file into multiple 256-byte records. For example, downloading a binary file that has an LRECL of 1024 results in four 256-byte records.

Explanation

The data is not lost when the file is segmented by SAS/CONNECT. Using the LRECL option in the remote or the local FILENAME statement does not avoid this problem. To avoid the problem, follow these steps:

  1. Use the DOWNLOAD procedure with the BINARY option to transfer the file.

  2. The INFILE statement that is used to read in the transferred file must contain the options RECFM=F and LRECL=xxxx, where LRECL is equal to the LRECL parameter on the remote system.


Problem

When you use DOWNLOAD on a print file, the EBCDIC carriage-control character 'F1'x is not downloaded.

Explanation

To avoid the problem, change the SAS system option FILECC to NOFILECC. The NOFILECC option indicates that the data in column 1 of a printer file should be treated as data and not carriage control. For SAS software Releases 6.07 and 6.08, the default setting is NOFILECC. Earlier releases use FILECC as the default setting, and you must change it to NOFILECC to DOWNLOAD 'F1'x successfully. In addition, the DCB characteristics of the print file must include a RECFM of FBA or VBA.

Problem

The DOWNLOAD procedure does not translate the carriage-control character F1 that occurs in the external file that you downloaded.

Explanation

The OS/390 carriage-control character 'F1'x should be translated to ASCII '31'x, instead, it is translated to ASCII '20'x.

ASCII '31'x is 1. It is not possible to DOWNLOAD an external file and convert the OS/390 carriage-control character 'F1'x to the ASCII carriage-control character '0D'x. The OS/390 EBCDIC value would have to be '0D'x to convert to ASCII '0D'x. If '31'x is missing, refer to the previous problem.


Remote Submit Events

Problem

The first time that you remote submit a PROC statement, you receive the following message:

 ERROR 2-12:  Invalid option.

Explanation

The remote AUTOEXEC.SAS file contains an OPTIONS statement that has not been closed by a semicolon (;). To avoid this problem, add the semicolon (;) to the OPTIONS statement in the remote AUTOEXEC.SAS file.

Problem

After signing on by using the NOTERMINAL option, which is specified for the remote host, a requestor window appears when a LIBNAME statement that uses the WAIT= option is remote-submitted.

Explanation

To prevent this window from appearing, specify the NOFILEPROMPT SAS system option on the remote host.

Problem

After you start a SAS/CONNECT session by using the NOTERMINAL option, any remote-submitted statements that follow a syntax error are only parsed and not processed.

Explanation

When a SAS/CONNECT session is started with the NOTERMINAL option, the internal option $SYNTAXCHECK is automatically set. If you remote-submit a statement that follows a syntax error, the statement is parsed but not processed. In the following example,

 data a; 
    do i=1 to 10;
       outpt;
    end;
 run;
 data b; 
    x=1;
 run;
data set A is not created because of the syntax error that is caused by OUTPT. Data set B is not created because SAS software is in syntax check mode from the previous OUTPT syntax error. The DATA step will only be parsed.

To avoid this problem, add the NO$SYNTAXCHECK option to the remote SAS system invocation options in the script file.

Problem

You cannot remote-submit code that uses square brackets because the keyboard on your local host does not support these characters.

Explanation

The less than (<) and greater than (>) symbols can be used in place of square brackets. Use < for the left square bracket ([) and > for the right square bracket (]).

In OpenVMS Alpha, square brackets are typically used to delineate the directory name in a path name. However, you can use < and > as equivalent delimiters. For example:

 libname sales 'disk:<sales.years.1991>';

Problem

After remote-submitting a full-screen procedure, you receive the following message:

 ERROR:  No terminal connected to the SAS session.

Explanation

SAS/CONNECT does not support remote submission of full-screen procedures.

Problem

When remote submitting a JCL batch job under OS/390 when using Release 6.08 of SAS, you receive the following message:

 JOB OPTIONS(JOB01501) SUBMITTED ***.

Explanation

A Break window appears on the local host display and explains that a message was received from the remote host. Press ENTER on the remote host host and select CONTINUE from the local Break window.

When remote submitting a JCL batch job under OS/390 when using Release 6.07 of SAS, the message does not appear on the remote host; therefore, the Break window does not appear. A beep sounds, but the remote submit continues uninterrupted.

The following is an example of a remote submission of a JCL batch job:

 DM 'RSUBMIT'; 
    X 'SUBMIT JOBS.CNTL(OPTIONS)'; 
 ENDRSUBMIT;

Note:   If remote submit is not used and the JCL batch job is submitted from either Release 6.07 or Release 6.08 of SAS under OS/390, the message does appear. Press ENTER to continue SAS software processing.  [cautionend]

To avoid receiving the above message and the interaction that is required to clear it, you can direct your JCL to the internal reader. The FILENAME statement can be used in place of the TSO ALLOCATE or the JCL DD statement. A sample SAS program that uses the FILENAME statement to write to an internal reader is:

rsubmit;

      /*************************************/
      /* filename to point to JCL code     */
      /*************************************/
   filename injcl '.misc.jcl' disp=shr;

      /*************************************/
      /* filename to internal reader       */
      /*************************************/
   filename outrdr sysout=a pgm=intrdr 
      recfm=fb lrecl=80;

      /*************************************/
      /* data step to submit job to batch  */
      /* queue                             */
      /*************************************/
   data _null_;
      infile injcl(myjcl);
      file outrdr noprint notitles;
      input;
      put _infile_;
   run;

      /*************************************/
      /* filename to clear                 */
      /*************************************/
   filename outrdr clear;
endrsubmit;


Servers

Question

Does SAS/CONNECT provide both single and multi-user services?

Explanation

SAS/SHARE is the only software in the SAS System that provides multi-user update access to SAS data libraries or SAS files. However, SAS/CONNECT is the only SAS software that gives you compute services, data transfer services, and single-user RLS.

Question

How do I initialize a server?

Explanation

Single-user Server
Execution of the LIBNAME statement initializes the server.

Multi-user Server
The server is initialized and controlled by the system administrator. The LIBNAME statement connects to a pre-existing server.


Question

How are the two servers different?

Explanation

Single-user Server

Multi-user Server


Macros

Question

Why is it that a macro will execute on a local host but sometimes not on a remote host?

Explanation

This has been observed when a macro does not end with a semicolon, and it is the last line in an invocation RSUBMIT block. A remote submitted macro invocation requires the semicolon, and a locally submitted macro does not. For example, the following macro executes on a local host but not on a remote host:

RSUBMIT;
   %MACRO MYDATE;
      %PUT &SYSDATE;
   %MEND MYDATE;
   %MYDATE           /* semicolon omitted */
ENDRSUBMIT;

During the processing of a remote submit block, SAS/CONNECT software checks the beginning of each statement for the ENDRSUBMIT statement. The semicolon is used to indicate the end of each statement (except comments). If the semicolon is omitted, then the ENDRSUBMIT statement is inadvertently submitted for remote processing. This results in the macro not executing.

During local processing, SAS/CONNECT does not search for the ENDRSUBMIT statement and, therefore, does not require the semicolon.

Question

When processing macros, what gets processed on the remote host, and what gets processed on the local host?

Explanation

When a macro is compiled, two things are produced: (1) compiled macro program statements or instructional code and (2) text. Only items stored as text are passed to the remote host for processing. All statements and instructional code are processed on the local host.

Items stored as text include:

SAS Guide to Macro Processing discusses each item in detail.

Note:   A good tool to determine what is instructional code and will be processed on the local host, is the option MLOGIC. MLOGIC specifies whether the macro processor prints a message whenever the SAS System executes any macro instructional code within a macro. Any statements produced by MLOGIC are processed on the local host and everything else is executed on the remote host.  [cautionend]

For example, in the following code, all the %LET statements are inside the RSUBMIT block. The &USER1 macro is assigned in the local SAS session rather than the remote. However, by placing the %LET statement inside a macro, &USER2 is set in the remote session.

%macro client;
   RSUBMIT;
      %let user1 = %sysget(LOGNAME);

      %macro remote;
         %global user2;
         %let user2 = %sysget(LOGNAME);
      %mend remote;
      %remote

      data _null_;
        put "user 1 = &user1";
        put "     2 = &user2";
        run;
   ENDRSUBMIT;
%mend client;
%client

In the macro CLIENT, everything within the macro is stored as text except the %LET statement that creates the macro variable USER1. This means everything within the macro is passed to the remote host except the %LET statement. Because the %LET statement is executed on the local host, the macro variable USER1 is created on the local host. The %LET statement that creates the macro variable USER2 and the references to the USER1 and USER2 variables are both seen as text and are executed on the remote host.


Chapter Contents

Previous

Next

Top of Page

Copyright 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.