Specifoj de la formato de la dosieroj cyloop

Tiu dokumento priskribita la strukturo de la dosieroj uzitaj de la libera programaro Cyloop disvolvita de Bernard Chardonneau (Francio) por enmemorigi la informojn kiuj tiu programara permesas trakti.

La dosieroj de kiuj la formato estas priskribita en tiu dokumento estas nomitaj "dosieroj cyloop".

La bildo de tiu teksto al la identa, lia traduko en aliaj lingvoj kaj lia disvastigo estas liberaj.

Okaze de diferencoj de signifo inter 2 versioj de la teksto skribitaj en malsamaj lingvoj, estas la franca versio estas tiu kiu konstituas la referencon.

Sufikso de la dosieroj kaj formatoj de datumoj uzitaj

La dosieroj cyloop estas dosiero de kiu la nomo finas sin per la sufikso .cyl aŭ .CYL .
Temis pri duumaj dosieroj. La informoj kiujn ili enhavas estas enskribitaj en la sekvaj formatoj :
Estas eble enmemorigi la ciferecajn valorojn de la bajtoj da forta pezo al la bajtoj da malforta pezo (big endian) aŭ de la bajtoj da malforta pezo al la bajtoj da forta pezo (little endian).
Tamen, la ordo de la bajtoj en la ciferecaj valoroj estas indikita en la dosiero cyloop.

Se la ciferecaj valoroj estas enmemorigitaj de la bajto da malforta pezo al la bajto da forta pezo kiel estas la kazo sur la personaj komputiloj (mikroprocesoro Intel aŭ kongrua), la nomo de la dosieroj cyloop finas sin per la sufikso .cyl kaj la 3 unuaj bajtoj de la dosiero cyloop estas cyl (en minusklaj leteroj).

Se la ciferecaj valoroj estas enmemorigitaj de la bajto da forta pezo al la bajto da malforta pezo, la nomo de la dosieroj cyloop finas sin per la sufikso .CYL kaj la 3 unuaj bajtoj de la dosiero cyloop estas CYL (en leteroj majuskloj).

Fine, se la mastruma sistemo uzita ne permesas elekti eniru de la minusklaj leteroj aŭ de la leteroj majuskloj por la nomoj de dosieroj, estas la signumo de la dosiero cyloop (konstituita de liaj 3 unuaj bajtoj) kiu permesas difini la ordon de la bajtoj en la ciferecaj valoroj.

Strukturo de dosiero cyloop

La dosieroj cyloop havas la sekvan ĝeneralan strukturon :


Ekzistas unuopa kazo por la dosieroj cyloop kiu enmemorigas nur solan variablon sen nomo.
En tiu kazo, la dosieroj cyloop havas la sekvan strukturon :


Obstinas lin de la dosiero cyloop

Obstinas lin de dosiero cyloop estas konstituita de 16 bajtoj kaj enhavas en la ordo la sekvajn kampojn :

TipoNomoPriskribo
3 bajtojsignature Permesas kontroli ke la dosiero estas bone dosiero cyloop al la bona formato.
Enhavas en la ordo :
  • la karakteroj cyl se la ciferecaj valoroj estas enmemorigitaj de la bajto da malforta pezo al la bajto da forta pezo (estas la kazo sur la personaj komputiloj),
  • la karakteroj CYL se la ciferecaj valoroj estas enmemorigitaj de la bajto da forta pezo al la bajto da malforta pezo.
  • bajtonb_var Numeras de variabloj enmemorigitaj en la dosiero cyloop.
  • Se nb_var = 0, la dosiero cyloop enmemorigas solan variablon kiu ne posedas nomon.
  • Se nb_var > 0 (valoro inter 1 kaj 255), la dosiero cyloop enmemorigas nb_var variabloj. Ĉiu povas esti identigita de lia nomo aŭ per responda numero al lia pozicio en la listo de la variabloj priskribita al la sekva alineo.
  • bajtocaract_gen Kampo de bitoj kiujn difinis la ĝeneralaj karakteristikoj de la dosiero cyloop.
    Ĉiu indiko estas enmemorigita sur bito.
  • bito 0
  • cycle_decl Ciklo aktivigita.
  • Se cycle_decl = 0, ĉiu nova ciklo komencas tuj fine de la precedenco (funkciado per difekto de Cyloop).
  • Se cycle_decl = 1, estas necese lanĉi la komision cyldecl por starti novan ciklon.
  • bito 1
  • temps_utc Komenco de cikloj kalkulitaj en universala tempo (UTC aŭ GMT).
  • Se temps_utc = 0, la komencoj de ciklo estas kalkulitaj koncerne al la loka horo (kiu povas esti malakorda se la somera tempo estas aplikita parto de la jaro).
  • Se temps_utc = 1, la komencoj de ciklo estas kalkulitaj koncerne al la horo en universala tempo (UTC aŭ GMT).
  • bito 2
  • cycle_ireg Uzo ciklo de malregula daŭro bazita sur la kalendaro.
  • Se cycle_ireg = 0, ĉiuj cikloj havas la saman daŭron kiu estas fiksita de la valoro de duree_cycle.
  • Se cycle_ireg = 1, oni uzas ciklon de malregula, monata aŭ ĉiujara daŭro.
  • bito 3
  • cycle_annuel Elekto inter monata aŭ ĉiujara ciklo.
    Tiu bito ne estas signife ke se la bito cycle_ireg estas al 1
  • Se cycle_annuel = 0, la dosiero cyloop funkcias laŭ monata ciklo komencante al la unua tago de la monato.
  • Se cycle_annuel = 1, la dosiero cyloop funkcias laŭ ĉiujara ciklo komencante al la unua tago de la jaro.
  • Bitoj 4 al 7 senutiligitaj
  • Ili devas esti lasitaj al 0.
    bajtoetat_cyloop Bitoj da stato de la dosiero cyloop.
  • bito 0
  • heure_ete Tiu bito enmemorigas se oni estis akurate de somero (bito al 1) aŭ de vintro dum la lasta ĝisdatigita de la datumoj.
    Li ne estas signife ke se la bito temps_utc = 0 (loka horo).
  • Bitoj 1 al 7 senutiligitaj
  • Ili devas esti lasitaj al 0.
    uint16nb_don_cycle Nombro de datumoj per ciklo de mezuro.
    Estas la nombro de pecoj de identa daŭro (eventuale al dua apude) en kiu ĉiu ciklo estas detranĉita.
    uint32deb_cycle Momento de starto de la komuna ciklo.
    Estas la valoro reveninta de la funkcio time() al la momento de la komenco de tiu ciklo (nombro de sekundoj fluintaj ekde la 1a januaro 1970 je la 0 H UTC).
    uint32duree_cycle Daŭrinta en sekundoj de la komuna ciklo.

    La listo de la variabloj

    Tiu listo ekzistas nur se la valoro nb_var de obstinas lin de la dosiero cyloop ne estas al 0. En tiu kazo, la listo entenas nb_var elementoj kiuj havas la sekvan strukturon :

    Obstinas lin de variablo

    Obstinas lin de variablo estas konstituita de 6 aŭ 8 bajtoj kaj enhavas en la ordo la sekvajn kampojn :

    TipoNomoPriskribo
    uint16  der_enreg Numero de la lasta datumo ĝisdatigita en la aktuala ciklo.
  • Se der_enreg = 0, oni ne ankoraŭ ĝisdatigis la datumon en la aktualan ciklon.
  • En la kontraŭa kazo, der_enreg estas komprenita inter 1 kaj nb_don_cycle.
  • bajtotypedon Kampo de bitoj kiujn difinis la karakteristikoj de la variablo.
    Ĉiu indiko estas enmemorigita sur bito.
  • bito 0
  • cmoy_sep Koeficiento coef_moy malsama por ĉiu momento de la ciklo.
  • Per difekto, (cmoy_sep = 0) la kalkulo de la meza valoro por ĉiu datumo de ciklo estas farita koncerne al la valoro de la kampo coef_moy difinita fine de tiu obstinas. La kampo coef_moy enhavas valoron en rilato kun la nombro de cikloj plenumitaj.
  • Se cmoy_sep = 1, al ĉiu de la datumoj korespondanto al momento de la ciklo estas asociita valoro coef_moy malsama.
  • bito 1
  • cpt_cycle_vide Prenita en konsideron de la malplenaj cikloj en la kalkuloj de ekvilibreco.
    Tiu bito ne estas signife ke se la valoro de la kampo ponderation diferencas de 0.
  • Per difekto (cpt_cycle_vide = 0), se unu aŭ pluraj cikloj fluas sin sen neniu registrado de datumoj, ili estas ignoritaj dum la proksima kalkulo de ekvilibreco de la datumoj jam enskribitaj.
  • Se tiu bito estas al 1, la kalkulo de ekvilibreco estas realigita tenante sin konton de la malplenaj cikloj.
  • bito 2
  • cumul_donnees Permesi plurajn vetojn al tagoj al ĉiu momento de la ciklo.
  • Per difekto, dum ciklo, ĉiu de la datumoj korespondanto al momento de la ciklo ne povas esti ĝisdatigita ke unu fojo.
  • Se tiu bito estas al 1, sama datumo povas esti ĝisdatigita pluraj fojoj tuj.
  • bito 3
  • compteur Elekto inter variablo ujo de la valoroj aŭ nombrilo de paso.
  • Per difekto (compteur = 0) estas necese enkonduki valoron por ĝisdatigi la datumon korespondanto al momento de la ciklo.
  • Se compteur = 1, la variablo estas nombrilo de pasoj kiuj estas inkrementita aŭtomate.
  • bito 4
  • donnees_32bits Formato de la ŝajnigitaj nombrila variablo.
    Tiu bito ne estas signife ke se la bito compteur estas al 1.
  • Per difekto (donnees_32bits = 0), la datumoj de la nombrilo estas enmemorigitaj sur 2 bajtoj (uint16).
  • Se donnees_32bits = 1, la datumoj de la nombrilo estas enmemorigitaj sur 4 bajtoj (uint32).
  • bito 5
  • val_float Formato de la ŝajnigitaj klasika variablo.
    Tiu bito ne estas signife ke se la bito compteur estas al 0.
  • Per difekto (val_float = 0), la datumoj de la variablo estas tiam plenaj valoroj sur 4 bajtoj da tipo int32.
  • Se val_float = 1, la datumoj de la variablo estas enmemorigitaj en valoroj de tipo float.
  • bito 6
  • mem_min_max Enmemorigo de la valoroj minimumo kaj maksimumo de la datumoj enkondukitaj al ĉiu momento de la ciklo.
    Tiu bito ne estas signife ke se la bito compteur estas al 0.
  • Per difekto (mem_min_max = 0), oni enmemorigas nur sumon eventuale ekvilibrecita de la ŝajnigitaj ĉiu momento de la ciklo, same kiel indiko por kalkuli ilian mezan valoron
  • Se mem_min_max = 1, la valoroj minimumo kaj maksimumo de la datumoj enkondukitaj por ĉiu de la momentoj de la ciklo estas same enmemorigitaj.
  • bito 7
  • cpt_toute_don Tiu bito ne estas signife ke se cmoy_sep = 1 kaj cumul_donnees = 1.
  • Tiel krome, cpt_toute_don = 1, la valoro coef_moy asociitino al ĉiu momento de la ciklo estas inkrementita dum ĉiu ĝisdatigita de la responda datumo.
  • Se cpt_toute_don = 0, la inkrementito efektiviĝas nur dum la unua ĝisdatigita de la ŝajnigita tiu momento de la ciklo.
  • bajtoponderation Koeficiento de ekvilibreco por la valoroj de la antaŭaj cikloj.
  • Se ponderation = 0, neniu operacio ne estas realigita sur la datumoj jam enmemorigitaj dum ŝanĝo de ciklo. En ĉiu nova ciklo, la novaj datumoj aldonas sin al tiuj de la antaŭaj cikloj.
  • En la kontraŭa kazo (ponderation komprenita inter 1 kaj 255), la datumoj devenintaj de la antaŭaj cikloj estas multobligitaj de (ponderation / 256). Li estas pri tio de sama por la koeficiento(j) coef_moy enmemorigita(j).
    Tiel, la datumoj de la lastaj cikloj prenas pli ol gravecon en la kalkulo de la meza valoro kiu tiuj de la plej malnovaj cikloj.

  • Se la bito cpt_cycle_vide de la kampo typedon estas al 1 kaj ke pluraj cikloj fluis sin sen ĝisdatigita de la datumoj, la kalkulo de ekvilibreco estas plenumita por ĉiu de tiuj cikloj
  • uint16extention Disponebla kampo por eventuala onta uzo. En 0 atendante.
    uint16coef_moy (laŭvola) Koeficiento permesante kalkuli la mezan valoron de la datumoj enmemorigitaj por ĉiu momento de la ciklo.
  • Se la bito cmoy_sep de la kampo typedon estas al 0, tiu koeficiento enhavas valoron ĝisdatigitan komence de ĉiu ciklo kiu permesas la kalkulon de la mezaj valoroj de la ŝajnigitaj ĉiu de la momentoj de la ciklo.
  • Se la bito cmoy_sep de la kampo typedon estas al 1, tiu koeficiento ne ekzistas en obstinas lin de la variablo cyloop, sed koeficiento de sama naturo estas enmemorigita aparte en la dosiero cyloop por ĉiu de la momentoj de la ciklo.

  • Strukturo de la datumoj de variablo

    Post obstinas lin de variablo, la datumoj asociitaj al tiu variablo estas enplantitaj sinsekve.

    Oni trovas unue la aron de la relativaj datumoj al la unua momento de la ciklo, poste tiuj koncerne la sekva momento, kaj tiel tuj.

    Laŭ la valoro de la bitoj cmoy_sep, compteur, donnees_32bits, val_float kaj mem_min_max de la kampo typedon figuranto en obstinas lin de la variablo, povas esti iu aŭ pluraj valoroj enmemorigitaj por ĉiu momento de la ciklo, kaj pluraj formatoj de stokado por ĉiu de tiuj valoroj.

    Grupo de valoroj korespondanto al momento de la ciklo entenas en la ordo :
    Sume, tiu grupo de valoro aperas nb_don_cycle fojo (valoro difinita en obstinas lin de la dosiero) por enmemorigi la plenan ciklon.

    Strukturo de la ŝajnigitaj la nombrilaj variabloj

    Strukturo de la ŝajnigitaj la "valoraj" variabloj