En aquest tema, explorarem com interactuar amb els serveis del sistema a OpenVMS utilitzant diferents llenguatges de programació. Els serveis del sistema són funcions proporcionades pel sistema operatiu que permeten als programes realitzar tasques específiques com la gestió de processos, la manipulació de fitxers, la comunicació entre processos, etc.

Objectius d'Aprenentatge

  • Comprendre què són els serveis del sistema a OpenVMS.
  • Aprendre a utilitzar serveis del sistema des de diferents llenguatges de programació.
  • Implementar exemples pràctics d'ús de serveis del sistema.
  • Resoldre problemes comuns relacionats amb la interfície amb serveis del sistema.

Conceptes Clau

Què són els Serveis del Sistema?

Els serveis del sistema són funcions proporcionades pel sistema operatiu que permeten als programes interactuar amb el sistema de manera controlada i segura. A OpenVMS, aquests serveis es poden invocar des de diversos llenguatges de programació com C, Fortran, i COBOL.

Tipus de Serveis del Sistema

  • Gestió de Processos: Creació, terminació i sincronització de processos.
  • Gestió de Fitxers: Creació, lectura, escriptura i esborrat de fitxers.
  • Comunicació entre Processos: Enviament i recepció de missatges entre processos.
  • Gestió de Memòria: Assignació i alliberament de memòria.

Utilització de Serveis del Sistema en C

Exemple: Creació d'un Fitxer

#include <stdio.h>
#include <stdlib.h>
#include <descrip.h>
#include <lib$routines.h>
#include <starlet.h>

int main() {
    struct dsc$descriptor_s file_name;
    file_name.dsc$w_length = strlen("testfile.txt");
    file_name.dsc$a_pointer = "testfile.txt";
    file_name.dsc$b_dtype = DSC$K_DTYPE_T;
    file_name.dsc$b_class = DSC$K_CLASS_S;

    unsigned long status;
    status = sys$create(&file_name, 0, 0, 0, 0, 0, 0);

    if (!(status & 1)) {
        printf("Error creating file\n");
        exit(1);
    }

    printf("File created successfully\n");
    return 0;
}

Explicació del Codi

  1. Incloure Llibreries: Les llibreries descrip.h, lib$routines.h i starlet.h són necessàries per utilitzar els serveis del sistema.
  2. Descriptor de Fitxer: Es defineix un descriptor per al nom del fitxer.
  3. Crida al Servei del Sistema: sys$create és el servei del sistema utilitzat per crear un fitxer.
  4. Gestió d'Errors: Es comprova l'estat retornat per la crida al servei per assegurar-se que el fitxer s'ha creat correctament.

Exercici Pràctic

Objectiu: Escriu un programa en C que llegeixi el contingut d'un fitxer existent i el mostri per pantalla.

Pistes:

  • Utilitza el servei del sistema sys$open per obrir el fitxer.
  • Utilitza el servei del sistema sys$read per llegir el contingut del fitxer.

Utilització de Serveis del Sistema en Fortran

Exemple: Creació d'un Fitxer

PROGRAM CreateFile
  IMPLICIT NONE
  INTEGER :: status
  CHARACTER(len=11) :: file_name
  file_name = 'testfile.txt'

  CALL LIB$CREATE_FILE(file_name, status)
  IF (status .NE. 1) THEN
    PRINT *, 'Error creating file'
    STOP
  END IF

  PRINT *, 'File created successfully'
END PROGRAM CreateFile

Explicació del Codi

  1. Definició de Variables: Es defineix una variable per al nom del fitxer i una per a l'estat.
  2. Crida al Servei del Sistema: LIB$CREATE_FILE és el servei del sistema utilitzat per crear un fitxer.
  3. Gestió d'Errors: Es comprova l'estat retornat per la crida al servei per assegurar-se que el fitxer s'ha creat correctament.

Exercici Pràctic

Objectiu: Escriu un programa en Fortran que llegeixi el contingut d'un fitxer existent i el mostri per pantalla.

Pistes:

  • Utilitza el servei del sistema LIB$OPEN_FILE per obrir el fitxer.
  • Utilitza el servei del sistema LIB$READ_FILE per llegir el contingut del fitxer.

Utilització de Serveis del Sistema en COBOL

Exemple: Creació d'un Fitxer

IDENTIFICATION DIVISION.
PROGRAM-ID. CreateFile.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  FILE-NAME PIC X(11) VALUE 'testfile.txt'.
01  STATUS    PIC S9(9) COMP.

PROCEDURE DIVISION.
    CALL 'LIB$CREATE_FILE' USING BY DESCRIPTOR FILE-NAME
                                 BY REFERENCE STATUS.
    IF STATUS NOT = 1
        DISPLAY 'Error creating file'
        STOP RUN
    END-IF.

    DISPLAY 'File created successfully'.
    STOP RUN.

Explicació del Codi

  1. Definició de Variables: Es defineixen variables per al nom del fitxer i l'estat.
  2. Crida al Servei del Sistema: LIB$CREATE_FILE és el servei del sistema utilitzat per crear un fitxer.
  3. Gestió d'Errors: Es comprova l'estat retornat per la crida al servei per assegurar-se que el fitxer s'ha creat correctament.

Exercici Pràctic

Objectiu: Escriu un programa en COBOL que llegeixi el contingut d'un fitxer existent i el mostri per pantalla.

Pistes:

  • Utilitza el servei del sistema LIB$OPEN_FILE per obrir el fitxer.
  • Utilitza el servei del sistema LIB$READ_FILE per llegir el contingut del fitxer.

Resum

En aquest tema, hem après què són els serveis del sistema a OpenVMS i com utilitzar-los des de diferents llenguatges de programació com C, Fortran i COBOL. Hem vist exemples pràctics de com crear fitxers utilitzant aquests serveis i hem proposat exercicis per reforçar els conceptes apresos. La interfície amb serveis del sistema és una habilitat essencial per a qualsevol programador que treballi amb OpenVMS, ja que permet realitzar operacions avançades i interactuar de manera eficient amb el sistema operatiu.

Curs de Programació OpenVMS

Mòdul 1: Introducció a OpenVMS

Mòdul 2: Comandes Bàsiques d'OpenVMS

Mòdul 3: Sistema de Fitxers d'OpenVMS

Mòdul 4: Scripting amb DCL

Mòdul 5: Gestió del Sistema OpenVMS

Mòdul 6: Xarxes a OpenVMS

Mòdul 7: Programació Avançada a OpenVMS

Mòdul 8: Clúster d'OpenVMS

Mòdul 9: Seguretat a OpenVMS

Mòdul 10: Resolució de Problemes i Optimització

© Copyright 2024. Tots els drets reservats