File Definition Language

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

File Definition Language (FDL) je jazyk popisující organizaci souboru a formát záznamů v operačním systému OpenVMS. Na rozdíl od OS Unix a většiny novějších operačních systémů včetně MS-DOSu a MS Windows je součástí OpenVMS vrstva Record Management Services, která umožňuje pracovat na úrovni operačního systému s různými formáty a organizacemi souborů. FDL je nástroj, který umožňuje zvolit organizaci nově vytvářeného souboru nebo vytvořit kopii existujícího souboru s jinou organizací.

Organizace souborů

RMS podporuje čtyři přístupové metody k záznamům: * Sekvenční přístup * Přístup podle relativního čísla záznamu * Record File Address přístup * Indexovaný přístup

RMS podporuje čtyři formáty záznamů: * záznamy s pevnou délkou * záznamy s proměnnou délkou * záznamy s proměnnou délkou a s pevnou délkou řídicích bloků * soubory tvořené proudem bytů (v nichž jsou záznamy oddělené ukončovacími znaky) ** STREAM: záznamy zakončené znaky CRLF ** STREAM_CR: záznamy zakončené znakem CR ** STREAM_LF: záznamy zakončené znakem LF

Formáty textového souboru

Obyčejný textový soubor (členěný na řádky) může být na disku uložen různými způsoby:

* soubor je proud bytů každý řádek je zakončen k tomu určeným znakem nebo posloupností znaků: ** MS-Windows a MS-DOS používají dvojici znaků CR a LF ** Unixové systémy používají znak LF ** Počítače Apple Macintosh používají znak CR * řádky jsou proměnné délky, na začátku každého řádku je informace o jeho délce - toto je standardní formát textových souborů v OpenVMS * všechny řádky jsou doplněny mezerami nebo jinými znaky na pevnou délku, informace o délce řádků je uložena v metadatech souboru - tento formát byl obvyklý v době používání děrných štítků

OpenVMS umožňuje přímo prostředky operačního systému konvertovat soubory mezi uvedenými formáty.

Použití

Systém pro každý soubor udržuje informace o jeho organizaci a formátu záznamu. Tyto atributy se při kopírování souboru zachovávají. Problém může nastat:

* pokud se soubor zkopíruje z počítače, který používá jiný operační systém * pokud jsou soubory sdíleny protokolem, který informace o atributech souboru nepodporuje (např. NFS) * pokud jsou soubory zabaleny do archivu, který tyto atributy nepodporuje (například ZIP bez použití parametru "-V")

OpenVMS umožňuje:

* vytvořit soubor s určitými atributy * vypsat atributy souboru * opravit atributy souboru, pokud se liší od skutečného formátu souboru (bez změny vlastních dat) * vytvořit kopii souboru, která bude mít stejný obsah, ale jiné atributy

Výpis atributů

Pro výpis atributů souboru lze použít buď příkaz DIR s parametrem /FULL nebo příkaz ANALYZE:

DIR /FULL ABC.TXT

Directory USER_DISK:[USER.SMITH]

ABC. TXT;2 File ID: (407115,857,0) Size: 1/64 Owner: [MZ,SMITHJ] Created: 8-DEC-2015 13:23:34. +more38 Revised: 12-APR-2019 11:31:00. 37 (61) Expires: Backup: Effective: Recording: Accessed: Attributes: Modified: Linkcount: 1 File organization: Sequential Shelved state: Online Caching attribute: Writethrough File attributes: Allocation: 64, Extend: 0, Global buffer count: 0, No version limit Record format: Stream_LF, maximum 0 bytes, longest 32767 bytes Record attributes: Carriage return carriage control RMS attributes: None Journaling enabled: None File protection: System:RWD, Owner:RWED, Group:R, World: Access Cntrl List: None Client attributes: None.

Total of 1 file, 1/64 blocks.

ANALYZE/RMS_FILE/FDL/OUTPUT=POPIS.FDL ABC.TXT TYPE POPIS.FDL

IDENT FDL_VERSION 02 "10-MAY-2019 08:01:05 OpenVMS ANALYZE/RMS_FILE Utility"

SYSTEM SOURCE OpenVMS

FILE ALLOCATION 64 BEST_TRY_CONTIGUOUS no CLUSTER_SIZE 64 CONTIGUOUS no EXTENSION 0 FILE_MONITORING no NAME "USER_DISK:[USER. SMITHJ]ABC. +moreTXT;2" ORGANIZATION sequential OWNER [MZ,SMITHJ] PROTECTION (system:RWD, owner:RWED, group:R, world:) GLOBAL_BUFFER_COUNT 0 GLBUFF_CNT_V83 0 GLBUFF_FLAGS_V83 none.

RECORD BLOCK_SPAN yes CARRIAGE_CONTROL carriage_return FORMAT stream_lf SIZE 0

Oprava atributů

Pokud organizace souboru na disku nesouhlasí s organizací uvedenou v metadatech souboru, je možné informace v metadatech upravit:

SET FILE /ATTRIB=(...)

popis ve .FDL souboruVýznamSET FILE /ATTRIB=(…)
FORMAT streamřádky zakončené CR+LFRFM:STM
FORMAT stream_crřádky zakončené CRRFM:STMCR
FORMAT stream_lfřádky zakončené LFRFM:STMLF
FORMAT fixedzáznamy pevné délkyRFM:FIX
FORMAT undefinednedefinovaný formátRFM:UDF
FORMAT variablezáznamy proměnné délkyRFM:VAR
FORMAT vfcRFM:VFC
CARRIAGE_CONTROL noneRAT:NONE
SIZEdélka záznamuLRL:32256

Například pro nastavení správného formátu záznamů u .BCK souboru lze použít:

SET FILE /ATTRIB=(RFM:FIX,RAT:NONE,LRL:32256) soubor.BCK

Textový soubor přenesený z Windows, který má špatné atributy, což se projevuje tak, že v editoru se zobrazuje na konci každého řádku nesmyslný znak, lze opravit příkazem:

SET FILE /ATTRIB=(RFM:STM) ABC.TXT

Textový soubor přenesený z Unixu, který má špatné atributy, což se projevuje tak, že se vypisuje schodovitě takto:

MACH1:BOB> TYPE MY_SCRIPT.COM $! $! MY_SCRIPT.COM $! $! Author: Bob Smith $! $! Date: 11-JUL-2013 $!

lze opravit příkazem:

SET FILE /ATTRIB=(RFM:STMLF) MY_SCRIPT.COM

Vytvoření souboru

Vytvořit soubor s určitými atributy:

CREATE /FDL=popis.FDL soubor

Zkonvertování souboru

Pro zkonvertování textového souboru organizovaného jako soubor s proměnnou délkou záznamů na textový soubor v unixovém formátu (konce řádku jsou LF) lze použít následující FDL soubor STREAM_LF.FDL:

RECORD FORMAT stream_lf

Vlastní konverze se provede příkazem:

CONVERT /FDL=STREAM_LF.FDL vstup.TXT vystup.TXT

Pro vytvoření textového souboru ve formátu MS-DOS nebo MS-Windows (konce řádku jsou CR+LF) by FDL soubor vypadal takto:

RECORD FORMAT stream

Zkonvertování souboru mimo OpenVMS

Pokud byl textový soubor s proměnnou délkou záznamů přenesen bez konverze z OpenVMS na jiný systém je možné k jeho konverzi použít následující skript vms2unix v jazyce Perl:

#!/usr/bin/perl

$filename=$ARGV[0]; open(FILE, $filename) || die "Error opening file $filename: $. \n"; do { $read=read(FILE, $buf, 2); ($len)=unpack("v", $buf); $read=read(FILE, $buf, $len); $read=read(FILE, $skip, 1) if $len % 2; $buf=~s/\x01\x8D//; print $buf, "\n"; } while (. +moreeof(FILE)); close(FILE);.

Konverze se provede příkazem

$ vms2unix vstup.txt > vystup.txt

Historický příklad - konverze na soubor se pevnou délkou záznamu

Pro zkonvertování textového souboru záznamy s pevnou délkou 80 znaků (formát děrných štítků) lze použít soubor FIXED80.FDL obsahující:

RECORD FORMAT fixed SIZE 80

Vlastní konverze se provede příkazem:

CONVERT /FDL=FIXED80.FDL /FIXED_CONTROL /PAD=" " vstup.TXT vystup.TXT

Vytvoření FDL souboru

Soubor s popisem atributů lze získat několika způsoby:

* z existujícího souboru příkazem ANALYZE/RMS_FILE/FDL/OUTPUT=popis.FDL soubor * příkazem EDIT /FDL popis.FDL * vytvořit textový soubor popis.FDL

Organizaci souboru lze popsat *.FDL souborem. *.FDL pro existují soubor se vyrobí příkazem

ANALYZE/RMS_FILE/FDL/OUTPUT=organizace.FDL soubor

Pro výpis popisu organizace souboru na obrazovku lze použít /OUTPUT=SYS$OUTPUT

Kompletní popis textového souboru používajícího záznamy proměnné délky ve FDL:

IDENT FDL_VERSION 02 " 3-APR-2014 08:54:40 OpenVMS ANALYZE/RMS_FILE Utility"

SYSTEM SOURCE OpenVMS

FILE ALLOCATION 64 BEST_TRY_CONTIGUOUS no CLUSTER_SIZE 64 CONTIGUOUS no EXTENSION 0 FILE_MONITORING no NAME "USER_DISK:[USER. SMITHJ]VYPIS. +moreTXT;1" ORGANIZATION sequential OWNER [SMITHJ] PROTECTION (system:RWED, owner:RWED, group:RE, world:) GLOBAL_BUFFER_COUNT 0 GLBUFF_CNT_V83 0 GLBUFF_FLAGS_V83 none.

RECORD BLOCK_SPAN yes CARRIAGE_CONTROL carriage_return FORMAT variable SIZE 0

Úvodní obrazovka příkazu EDIT /FDL soubor.FDL:

OpenVMS FDL Editor

Add to insert one line into the FDL definition Delete to remove one line from the FDL definition Exit to leave the FDL Editor after creating the FDL file Help to obtain information about the FDL Editor Invoke to initiate a script of related questions Modify to change an existing line in the FDL definition Quit to abort the FDL Editor with no FDL file creation Set to specify FDL Editor characteristics View to display the current FDL Definition

Main Editor Function (Keyword)[Help] :

Reference

[url=https://web.archive.org/web/20140425002939/http://h71000.www7.hp.com/doc/73final/6027/6027pro.html]OpenVMS Record Management Utilities Reference Manual[/url]

Kategorie:OpenVMS

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top