es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se puede generar el archivo “data1.dat” utilizando la subrutina “iswap” con el siguiente código?

subrutina iswap (archivo, b)
entero b
abrir(1,archivo = 'archivo',estado='desconocido',forma='no formateado&##39;)
escribir (1) b
cerrar(1)
fin subrutina

programa callex
abrir(22, archivo = 'data1.dat')
llamar iswap(archivo,2)
cerrar(22)
parar
fin programa

Resultado: archivo data1.dat vacío

Soy completamente nuevo en Fortran. Estoy intentando escribir el código que produce un archivo de salida “data1.dat” que contiene el valor de b, es decir, 2, utilizando la subrutina “iswap”, pero obtengo un archivo vacío. ¿Podrías decirme el error que cometí en el código?

Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Basado en el código proporcionado, parece que no estás pasando el argumento de archivo correcto a la subrutina “iswap”. En el programa “callex”, estás abriendo el archivo con el número de unidad 22 y luego llamando a la subrutina “iswap” con la variable de archivo. Sin embargo, la variable de archivo no recibe ningún valor antes de la llamada, por lo que la subrutina “iswap” está abriendo y escribiendo en un archivo desconocido.

    Para solucionar este problema, debes pasar el número de unidad correcto para el archivo abierto a la subrutina “iswap”. Aquí tienes el código corregido:

    subroutine iswap (unidad, b)
      integer unidad, b
      write (unidad) b
      end
    
    program callex
      integer unidad
      open(unidad, file = 'dat1.dat', status='unknown', form='unformatted')
      call iswap(unidad, 2)
      close(unidad)
      end
    

    En esta versión del código, el programa “callex” abre el archivo con el número de unidad “unidad” y luego pasa ese número de unidad a la subrutina “iswap” junto con el valor de “b”. La subrutina “iswap” escribe el valor de “b” en el archivo asociado con el número de unidad dado. El programa “callex” cierra el archivo antes de finalizar.

    Con estos cambios, el código debería generar ahora el archivo de salida “dat1.dat” que contiene el valor de “b”.

Comments are closed.