Uso de ejecutar con sin argumentos en SUB debe provocar el error

Seleccione idioma Seleccione idioma
Id. de artículo: 48398 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

<filename>En el entorno QB.EXE o QBX.EXE, una instrucción ejecutar sin ningún argumento <nombredearchivo> produce un error a un "Error de subprograma" y puede bloquearse en determinadas condiciones (consulte el siguiente programa nº 3) cuando se invoca dentro de un subprograma (SUB.. END SUB). Este uso incorrecto de ejecutar correctamente genera un "subprograma error" cuando se compila con BC.EXE en las versiones de QuickBasic 4.00, 4.00b y 4.50 y en Microsoft Basic Professional desarrollo del sistema (PDS) versiones 7.00 y 7.10.

Estado

Microsoft ha confirmado trata de un error en el entorno QB.EXE de las versiones de QuickBasic 4.00, 4.00b y 4.50 para MS-DOS; en el entorno QB.EXE de las versiones de Microsoft Basic Compiler 6,00 y 6.00b (buglist6.00, buglist6.00b) para MS-DOS; y en el entorno QBX.EXE de PDS básica versiones 7.00 y 7.10 (buglist7.00, buglist7.10) de Microsoft para MS-DOS. Se está investigando este problema y se publicará nueva información aquí, en Microsoft Knowledge Base, cuando esté disponible.

Más información

Normalmente, la instrucción ejecutar sin ningún argumento reinicia el programa actual. Sin embargo, mediante ejecutar ningún argumento para reiniciar un programa se admite únicamente en el código de nivel de módulo de un programa, no en un procedimiento de subprograma o FUNCTION. <filename>En un procedimiento de subprograma o FUNCTION, debe utilizar ejecutar <nombredearchivo>, ya que no se permiten ejecutar <linenumber> y ejecutar sin ningún argumento en subprogramas. <filename>Sin embargo, puede utilizar ejecutar <nombredearchivo> para ejecutar propio desde dentro de un subprograma o FUNCTION un programa.

El uso apropiado de ejecutar correctamente se documenta en 367 de página del manual "Microsoft QuickBasic 4.0: Basic Language Reference":
Porque un número de línea en una instrucción ejecutar debe hacer referencia a una línea en el código de nivel de módulo, se permite sólo la forma de "especificaciónDeArchivo" ejecutar de la instrucción en un SUB o FUNCTION.
La instrucción anterior correcta debe reemplazar las instrucciones incorrectas descritas más bajo.

Error de documentación

El ejecutar <linenumber> opción viene documentada incorrectamente en 317 de página del manual "Microsoft QuickBasic 4.5: Basic Language Reference" de la versión 4.50 y 303 de página del manual para PDS básica versiones 7.00 y 7.10 "Basic 7.0: referencia del lenguaje Microsoft". Estas páginas proporcionan las siguientes instrucciones incorrectas:
Por lo tanto, una instrucción de ejecutar en un procedimiento SUB o FUNCTION debe apuntar a las etiquetas en el nivel de módulo. Si no se especifica ninguna etiqueta de línea, ejecución siempre comienza por la primera línea ejecutable del módulo principal.
Este mismo error de documentación se produce en el sistema de Ayuda en línea QB Asesor QuickBasic 4.50 y en el sistema de Ayuda en pantalla de Asesor de Microsoft para 7.00 PDS básica y 7.10 y se encuentra manera desde dentro del entorno QB.EXE o QBX.EXE entorno:

  1. Presione las teclas MAYÚS+F1.
  2. Seleccione el índice.
  3. Tipo R .
  4. Haga doble clic el botón primario del mouse en "Ejecutar instrucción" o coloque el cursor en "Ejecutar" y presione ENTRAR.
  5. Seleccione detalles.

Programa # 1

Programa # 1 siguiente correctamente hace que un "Error de subprograma" durante la compilación con BC.EXE 4.00, 4.00b y 4.50, pero el editor QB.EXE o QBX.EXE produce un error para proporcionarle una mensaje de error y ejecuta el ejecutar:
   ' **** PROGRAM #1: Test.Bas
   ' Main level (module level):
   PRINT "Inside Main Level"
   CALL Test
   ' Subprogram level:
   SUB Test
   PRINT "Inside Test"
   RUN
   END SUB
				

Programa # 2

<filename>Programa # 2 es el método correcto para utilizar Ejecutar (con un argumento <nombredearchivo>) en un subprograma y funciona cuando el programa está compilado con BC.EXE o se ejecutar en el editor QB.EXE o QBX.EXE:
   ' **** Program #2: Test.Bas
   ' Main level (module level):
   PRINT "Inside Main Level"
   CALL Test
   ' Subprogram level:
   SUB Test
   PRINT "Inside Test"
   RUN "Test"   ' This is legal for both QB.EXE/QBX.EXE and BC.EXE
   END SUB
				

Programa nº 3

En QB.EXE o QBX.EXE, el programa puede bloquearse si se invoca la instrucción ejecutar sin parámetros (o con un número de línea) en un no STATIC SUB o procedimiento de función y el procedimiento SUB o FUNCTION utiliza DIM o REDIM para una matriz dinámica local para ese procedimiento de dimensión:
   'Warning!!!!! This program is going to hang your machine.
   DECLARE SUB sub1 ()
   sub1
   END
   SUB sub1
      DIM y(1)
      y(1) = 1
      PRINT y(1);
      ' Note: Invoking ERASE Y before the RUN will prevent the hang.
      ' Must then press CTRL+BREAK to stop the program, since it keeps
      ' running itself.
      RUN

   END SUB
				
puede cambiar el programa nº 3 para ejecutar correctamente sin francesa en QB.EXE/QBX.EXE si lo hace uno de los siguientes:

  1. ERASE el array(s) dinámico local antes de ejecutar el.
  2. Compruebe el SUB STATIC.
  3. Hacer la matriz global dimensiones con SHARED DIM o COMMON SHARED del nivel de módulo del programa.
  4. Pasar la matriz como parámetro para el subprograma.

Propiedades

Id. de artículo: 48398 - Última revisión: jueves, 13 de febrero de 2014 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft QuickBasic 4.0
  • Microsoft QuickBASIC 4.0b
  • Microsoft QuickBasic 4.5 para MS-DOS
  • Microsoft BASIC Compiler 6.0
  • Microsoft BASIC Compiler 6.0b
  • Microsoft BASIC Professional Development System 7.0
  • Microsoft BASIC Professional Development System 7.1
Palabras clave: 
kbnosurvey kbarchive kbmt KB48398 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 48398

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com