Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague



Podobné dokumenty
Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Soubory. Tomáš Oberhuber. Soubory. Soubory. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Programování v C++ 1, 1. cvičení

Operační systémy. Cvičení 4: Programování v C pod Unixem

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Operační systémy. Cvičení 3: Programování v C pod Unixem

MPASM a IDE pro vývoj aplikací MCU (Microchip)

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Struktura programu v době běhu

11. Přehled prog. jazyků

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

ČÁST 1. Základy 32bitového programování ve Windows

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Práce se soubory. Základy programování 2 Tomáš Kühr

- jak udělat konstantu long int: L long velka = 78L;

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

IUJCE 07/08 Přednáška č. 1

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Úvod do programování. Lekce 1

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Vstupní požadavky, doporučení a metodické pokyny

Úvod do programovacích jazyků (Java)

IUJCE 07/08 Přednáška č. 6

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Základy programování (IZP)

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

VISUAL BASIC. Práce se soubory

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Úvod do programování. Lekce 3

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Programovací jazyk C++ Hodina 1

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

09. Memory management. ZOS 2006, L.Pešička

Algoritmizace a programování

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016

Algoritmizace a programování

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Základy programování (IZP)

PROGRAMOVÁNÍ V C++ CVIČENÍ

8 Třídy, objekty, metody, předávání argumentů metod

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

10 Práce s řetězci - pokračování

IPA - Lab.1 Úvod do programování v ASM

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Opakování programování

Více o konstruktorech a destruktorech

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Vstup a výstup datové proudy v C

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Pointery II. Jan Hnilica Počítačové modelování 17

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

přetížení operátorů (o)

Základy algoritmizace a programování

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Jazyk C++, některá rozšíření oproti C

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Ukazka knihy z internetoveho knihkupectvi

Martin Flusser. December 15, 2016

Překladač a jeho struktura

Formátové specifikace formátovací řetězce

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Vývoj rozhraní pro vzdálené ovládání systému mainframe. Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze

Transkript:

v Tomáš Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

v v 1 2 3 4 5 v 6 7 8 9 10 11 Práce se soubory

v (7. kapitola v Introduction to the New Mainframe) návrh aplikace vývoj a testování postupné nasazování, často v souběhu s původním systémem

v Assembler umožňuje kontrolu nad kódem na úrovni bitů/bytů vhodný pro psaní subrutin volaných z jiných jazyků je napsaný v assembleru

v COBOL - Common Bussines-Oriented Language PL/I Java CLIST obdoba shellových skriptů prakticky se ale napoužívá, nahrazuje ho Rexx Rexx - Restructured Extended Executor LANGUAGE ENVIRONMENT systemové API použitelné ve všech jazycích

v velké programy se dělí na menší logické celky - moduly v C++ většinou jednu třídu implementujeme v jednom souboru z jednoho souboru můžeme volat funkce nebo metody implementované někde jinde jejichž kód není známý

v Pro urychlení vytváření se proces překladu dělí na několik kroků: Preprocessing/prekompilace Kompilace programu

Preprocesing/prekompilace v jde o zpracování maker preprocesoru #include, #define se subsytémy CICS (transkace), DB2(databáze) se nepoužívají funkce ale makra EXEC SQL... to je stejné i v Unixu nebo ve Windows

Kompilace v zdrojový kód zpracovaný preprocesorem se předá překladači ten vytváří strojový kód tzv. object modul - ten ještě nelze spouštět překladač nezná kód ani adresu funkcí implementovaných v jiných modulech místo toho si poznamená pouze jméno volané funkce - symbolický odkaz nahrazení symbolických odkazů je práce pro linker (binder)

v linkování provádí tzv. LINKER, mainframe používá i tzv. BINDER binder je "modernější" - umožňuje např. uložit výstup do PDSE linker potom bere všechny objektové moduly a nahrazuje symbolické odkazy skoky na skutečné adresy nebo vloží patřičný binární kód to, co dělá linker se někdy může provádět za chodu programu, kdy objektový modul linkuje dynamicky - DLL

Spoušt ení v dříve obstarával tzv. BATCH LOADER dnes je nahrazen BINDERem načítá dané moduly do VIRTUAL STORAGE a spouští je

v ukládájí se do PDS, tím dostáváme knihovnu zdrojové texty - SOURCE (MODUL) LIBRARY objektové moduly - OBJECT (MODUL) LIBRARY spustitelné programy - LOAD (MODUL) LIBRARY

v v Je několik způsobů, jak překládat a linkovat programy v v závislosti na adresování 16. bitové, 31. bitové a 64. bitové s využítím IPA = Interprocedural Analysis překladač běžně provádí jen optimalizace na úrovni jednotlivých procedur pomocí parametru IPA(NOLINK) provede překladač první fázi překladu, kdy do výsledného přídá dodatečné informace druhá fáze se volá s parametrem IPA(LINK), kdy dojde k samotnému provedení optimalizací s využitím XPLINK = Extra Performance Linking jde o optimalizaci pro rychlé volání funkcí

v //OBETO80J JOB (90300000), OBETO80,CLASS=A,REGION=48M, // MSGLEVEL=(1,1),MSGCLASS=H,NOTIFY=&SYSUID // JCLLIB ORDER=(CEE.SCEEPROC,CBC.SCBCPRC) //COMPILE EXEC PGM=CCNDRVR, // PARM= /SEARCH( CEE.SCEEH.+ ) NOOPT SO OBJ LIST //STEPLIB DD DSNAME=CEE.SCEERUN,DISP=SHR // DD DSNAME=CEE.SCEERUN2,DISP=SHR // DD DSNAME=CBC.SCCNCMP,DISP=SHR //SYSLIN DD DSNAME=OBETO80.INTRO.OBJ(HELLO),DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD DSNAME=OBETO80.INTRO.C(HELLO),DISP=SHR

v pro se jmenuje CCNDRVR Parametry se předávají pomocí PARM: // PARM= [run-time-options]/program-parameters zdvojené se používá pro vložení apostrofu do předávaného řetězce SEARCH( CEE.SCEEH.+ ) kde jsou uloženy hlavičkové soubory - obdoba -I u gcc LSEARCH se používá pro uživatelské hlavičkové soubory (ne systemové) NOOPT - NOOPTMIZE/OPTIMIZE žádné optimalizace, jiná možnost je OPT(2) nebo OPT(3) - použije se IPA SO - SOURCE/NOSOURCE vypisuje zdrojový kód a některé diagnostické zprávy OBJ - OBJECT/NOOBJECT zda se má vytvářet object modul LIST - vypíše výsledný kód v assembleru

v DEBUG - překlad s informacemi pro ladění ARCH - architektura 0 - spustitelné všude 5 - na z/900 CHECKOUT - varování před možnými chybami v COMPACT - zmenšuje výsledný kód DEFINE - definice pro preprocesor DLL - generování DLL GOFF - Generalized Object File Format INLINE - vkládané funkce IPA - Interprocedural Analysis

v LP64/ILP32-64. bitový nebo 31. bitový překlad OPTFILE - udává data set s volbami pro optimalizace PPONLY - spustit pouze preprocesor RTTI - run-time type information - umožňuje použít dynamic_cast SQL - pro zpracování SQL maker UNROLL - rozbalování smyček XPLINK - Extraperformance linking

v Použité DDNAMES: SYSIN - zdrojový kód SYSLIB - systemové hlavičkové soubory SYSOUT - chybová hlášení STEPLIB - run-time knihovny

v V JCL pro překlad je nutné pojit následující knihovny: CEE.SCEERUN - PDS knihovna obsahující run-time rutiny pro, COBOL, PL/I, FORTRAN CEE.SCEERUN2 - PDSE knihovna obsahující run-time rutiny pro a COBOL CBC.SCCNCMP -

v K linkováni se používá tzv. BINDER. Existují tři způsoby, jak linkovat program: 1 jedno jediné linkování 2 linkování jednotlivých objektových modulů 3 přelinkovat změněný object modul Program pro linkování se jmenuje IEWL.

- jedno jediné linkování v

- linkování jednotlivých objektových modulů v

- přelinkovat změněný object modul v

v V lze použít příkazy: CALL program-data-set-member-name [ parameters ] CALL obeto80.intro.load(hello)

v Jazyk C jazyk C++ Význam EDCC CBCC překlad 31-bitových a 64-bitových EDCCB CBCCB překlad a linkování 31-bitových EDCQCB CBCQCB překlad a linkování 64-bitových EDCCBG CBCCBG překlad, linkování a spuštění 31-bitového programu EDCQCBG CBCQCBG překlad, linkování a spuštění 64-bitového programu Další y viz.: User s Guide - str. 297, 298, Language Environment Programming Guide - str. 105

Program pro vypsání argumentů příkazové řádky v INTRO.C(ARGS) #include <stdio.h> int main( int argc, char* argv[] ) { int i; for( i = 0; i < argc; i ++ ) printf( "Argument %d -> %s\n", i, argv[ i ] ) return 0; }

v Program pro vypsání argumentů příkazové řádky JCL kód pro překlad a linkování - využívá katalogovanou u EDCCB: INTRO.JCL(ARGS) //OBETO80J JOB (90300000), OBETO80,CLASS=A, // REGION=48M,MSGLEVEL=(1,1),MSGCLASS=H, // NOTIFY=&SYSUID //MYLIB JCLLIB ORDER=( CEE.SCEEPROC, CBC.SCBCPRC ) //COMPPRC EXEC PROC=EDCCB, // CPARM= SO LIST, // INFILE= OBETO80.INTRO.C(ARGS), // OUTFILE= OBETO80.INTRO.LOAD(ARGS),DISP=SHR

v JCL pro spuštění: INTRO.JCL(ARGSJOB) Program pro vypsání argumentů příkazové řádky //OBETO80J JOB (90300000), OBETO80,CLASS=A, // REGION=4096K,MSGLEVEL=(1,1),MSGCLASS=H, // NOTIFY=&SYSUID //JOBLIB DD DSN=OBETO80.INTRO.LOAD,DISP=SHR //MYARGS EXEC PGM=ARGS, // PARM= /ARG1 ARG2 ARG3 ARG4 //SYSOUT DD SYSOUT=* /*

v Virtuální metody svou funkcí často nahrazují příkaz switch příkaz switch lze překládání lépe optimalizovat volání virtuálních metod je náročnější

v Virtuální metody svou funkcí často nahrazují příkaz switch příkaz switch lze překládání lépe optimalizovat volání virtuálních metod je náročnější Výjimky tvoří velkou překážku pro optimalizaci je nutné generovat mnoho navíc pro možnost sledování šíření výjimek výrazně zpomalují kód, pokud k výjimce dojde - viz. M. Virius, Pasti a propasti jazyka C++, Výjimky by měly zůstat výjimečné zpomalují ale i v případě, kdy výjimka nevznikne

v RTTI - dynamic_cast<> Runtime Type Information - umožňuje změnu typu za chodu programu z toho plyne, že až za chodu programu se určuje, jaký kód se bude provádět, to znemožnuje optimalizaci u, kde hodně záleží na výkonu je lepší RTTI odstranit často se lze RTTI vyhnout pomocí lepšího (jednoduššího) návrhu aplikace STL - standard template library je dobré dobře znát, co se děje uvnitř a jakou třídu použít na který problém - seznamy, vektory apod.

v New/delete - dynamické alokace paměti dynamické alokace je VELMI nákladná je lepší nešetřit příliš pamětí, alokovat si všechny struktury dopředu a neuvolňovat je, když je budu brzy opět potřebovat dynamická alokace může vést k fragmentaci paměti a velkému užírání paměti viz. článek na root.cz - Jak funguje malloc a free http://www.root.cz/clanky/jak-funguje-malloc-a-free někdy je možné alokaci na haldě nahradit alokací na zásobníku pomocí alloca http://www.gnu.org/software/libc/manual/ html_node/variable-size-automatic.html#variable-size-automatic

v ANSI aliasing rules používat konstanty - const proměnná se pak nemůže měnit a není nutné ji před použitím vždy znovu načítat v paměti - stačí ji mít stále uloženou v registru přístupu k datům přes ukazatel je lépe použít dočasnou proměnnou používat lokální proměnné místo globálních každé volání funkce může změnit hodnotu globální proměnné, u lokálních se to stát nemůže častém přístupu k globálním proměnným je lépe udělat lokální kopii IPA toto umí řešit sama je efektivnější předávat data jako argument, než pomocí globálních proměnných pro proměnné v rámci modulu je dobré pužít označení static zaručuje, že se nebudou měnit volání funkcí mimo modul omezit používání ukazatelů

v Zápis matematických výrazů Při zápisu: a = b * ( x * y * z ); c = x * y * z * d; je rozpoznán stejný výraz x * y * z, ale pří zápisu a = b * x * y * z; c = x * y * z * d; již tomu tak není. doporučuje se, stejné výrazy psát vlevo nebo do závorek obzvlášt vhodné pro neměnný výraz uvnitř smyčky

v Převod float na int je náročný: float a[ 10 ]; for( i = 0; i < 10; i ++ ) a[ i ] = a[ i ] * i; je lepší ve tvaru float x = 1.0; for( i = 0; i < 10; i ++ ) { a[ i ] = a[ i ] * x; x = x + 1.0; }

v je lepší používat násobení než dělení zápis x * ( 1.0 / 3.0 ) je rychlejší než x / 3.0 nebot v prvním případě se dělení provede v době překladu pro aritmetické operace je výhodnějí použít int, než char nebo unsigned int

v funkce memcpy nebo memcmp bývají efektivnější než cykly memcmp může být výhodnější pro porovnávání struktur, než je běžné porovnávání memxxx jsou rychlejší než strxxx

v Typy souborů v : Práce se soubory OS files - klasické soubory HFS files - Hierarchical file system - unixové soubory v USS - Unix System Services VSAM data sets - Virtual Storage Acces Method - databázové soubory Terminal files - práce s terminálem Memory files - dočasné soubory Hiperspace memory files - dočasné soubory uložené v paměti - do 2 GB CICS Data Queus LE Message File - soubor pro stderr/cerr

v Práce se soubory Tři typy souborů podle zacházení s daty: text streams stejné jako v Unixu jde o text s několika speciálními řídícími znaky \n, \r, \t tyto znaky se ukládají do souboru - u record I/O tomu tak není binary streams posloupnost bytů, žádné nemají speciální význam record I/O - logické záznamy - věty - F, FB, V, VB obecně jde o bloky určité velikosti lze s nimi použít pouze funkce fread(), fwrite() nelze použít fprintf(), fscanf(), getc(), putc() pokud chceme do věty zapsat více dat, než je její velikost, data se oříznou změně obsahu věty se nemění velikost (např. u V, VB), pouze se přepíše příslušná část velikost věty nelze měnit, jakmile je jednou vytvořena

v Lze použít stejně jako v Unixu/Windows: #include <stdio.h> Příkaz fopen int main( int argc, char* argv[] ) { FILE* f1; int i; printf( "Vytvarim soubor intro.cfile" ); f1 = fopen( "intro.cfile", "w" ); if( f1 == NULL ) { printf( "Nemuzu otevrit soubor intro.cfile" ); return 16; } for( i = 0; i < 100; i ++ ) fprintf( f1, "radek %d\n", i); printf("stiskni klavesu..."); getchar(); close( f1 ); return 0; }

Příkaz fopen v Funkci fopen lze udat i atributy data setu - DCB = DATA CONTROL BLOCK atributy RECFM - formát dat LRECL - logical record - věta - základní struktura dat pro danou aplikaci BLKSIZE - physical blocks množství dat, které budou načteny z disku do bufferu jedné operaci čtení

v DCB tyto atributy se zjišt ují: Příkaz fopen 1 z parametrů volání funkce fopen(), freopen() 2 atributů pro dané ddname (z JCL) 3 z atributů existujícího souboru ( otevírání) - pomocí recfm=* 4 defaultní hodnoty pro fopen() a freopen() pro binární soubory je to VB pro spool soubory FB jinak pro textové soubory je to F a LRECL = BLKSIZE = 254 V - pokud je udáno LRECL a BLKSIZE VB jinak

Příkaz fopen v Možné formáty RECFM: F - fixed, V - variable, B - blocked, U - undefined A - ASA znaky - pro formátování tisku na tiskárně M - machine control characters S - standard format každý blok musí být zaplněn větami, než se vytvoří nový

v #include <stdio.h> Příkaz fopen int main( int argc, char* argv[] ) { FILE* f1; int i; printf( "Vytvarim soubor intro.cfileps\n" ); f1 = fopen( "intro.cfileps", "w,recfm=fb,lrecl=20,blksize=312 if( f1 == NULL ) { printf( "Nemuzu otevrit soubor intro.cfileps" ); return 16; } for( i = 0; i < 100; i ++ ) fprintf( f1, "radek %d 012345678901234567890\n", i); printf("stiskni klavesu..."); getchar(); close( f1 ); return 0; }

Fixed format record v F, FB, FBS, FS, FM, FBA, FBM, FBS, FSA, FSM, FBSA, FBSM S - spanned files = jedna věta může být rozdělena do více bloků binární data nezaplněné věty se doplňují nulami data postupně přetékají z jedné věty do druhé nezaplněné bloky se nedoplňují

v Fixed format record text non-asa zápis do nového záznamu se provede pomocí znaku \n nebo uzavřením a otevřením souboru data, která se nevejdou do věty jsou odseknuta prázdná místa věty po \n se doplňují mezerami, znak \n se neukládá čtení se znak \n vloží na místo první mezery sekvence mezer na konci věty přepisování věty změní jen přepsané pozice, ne celou větu text ASA obsahuje speciální znaky ASA první pozice ve větě obsahuje speciální znak určující, co se má provést přechodu k nové větě new line, carriage return, form feed

Variable-format record v V, VB, VBS, VS, VM, VBA, VBM, VBS, VSA, VSM, VBSA, VBSM Obsahuje BDW a RDW. binární data data "přetékají" do dalších vět věta může mít maximálně LRECL-4 bytů textová data konec věty se určuje pomocí \n prázdná věta se uloží jako jedna mezera změně obsahu již nelze změnit délku zápisu více dat -> oseknutí zápisu méně dat -> doplnění mezerami text ASA - podobné jako u fixed

Undefined v vše se zpracovává jako data - i BDW, RDW a řídíci znaky LRECL nemá žádný význam, ale musí být menší než BLKSIZE věta odpovídá bloku binární data postupně zaplňují jednotlivé bloky text \n znamená hranici bloku

Udávání ddnames v Provádí se pomocí předpony DD: v názvu souboru: #include<stdio.h> char text[ 80 ], *result; FILE *fp; int main( void ) { fp = fopen( "DD:INFILE", "r" ); while( fscanf( fp,"%s", text )!= EOF ) printf( "%s\n", text ); fclose( fp ); return 0; }