Projet
MonsterBook







Par

Les Chevaliers de Malte







Date de création:

1990 (Alpha MalteBook)

1994 (Bêta MonsterBook)





Auteur/Concepteur/Programmeur du projet:
Sylvain Maltais









Table des matières


Table des matières

1. Manifeste du Projet 5

Le traitement de texte 9

Le chiffrier électronique (tableur) 9

Le programme de dessin bitmap 14

Le programme de dessin technique 15

La base de données 15

Le gestionnaire de fichiers 15

Le gestionnaire de programmes 16

Les applications terminal 18

Les outils de programmeurs 21

Les accessoires supplémentaires 22

La sécurité 22

L'environnement 23

2. Spécifications technique 25

Système d'exploitation 26

Noyau 27

Ressources 27

Système de compatibilité 29

Lancement 29

Environnement système 35

Environnement des périphériques 37

Gestionnaire de fichiers 42

Environnement graphique 43

Traitement de texte 45

L'instruction PageFormat 50

Les instructions Put et PutLn 50

Chiffrier électronique (tableur) 50

Programme de dessin technique 51

Applications terminal 52

Outils programmeurs 52

Gestionnaire de programmes 54

Navigateur HTML (Gestionnaire de programmes) 54

Accessoires supplémentaires 55

3. Programmation du projet 56

Les routines de détection 57

Détection du CMOS 60

Les fichiers 61

ShortBF 61

Les polices de caractères 62

Les pays et les régions 62

Les bases de données 67

Le traitement de texte 67

Le tableur 72

Annexe A: Les abréviations interne de programmation du projet 79

Annexe B: Les répertoires attribués au projet 83

Annexe C: Les répertoires des bases de données 85

Annexe D: Les principaux fichiers de code sources 87

Annexe E: Structures des fichiers 89

Base de données serveur de format Mentronix 89

Table de base de données de format Mentronix 90

Structure d'un fichier dBase III+ 91

Base de registres de format Malte Genesis IV: Chantal 92

Document de format GAT 93

Document de format Premier Choix (First Choice) 94

Structure d'un fichier tableur MGC 95

Définition d'une cellule vide 95

Définition d'une cellule à valeur numérique 96

Définition d'une cellule texte 96

Définition d'une cellule de formule 97

Définition d'une cellule de formule avec décimal 97

Structure d'un fichier image BGX (Bitmap Genesis graphiX) 98

Structure d'un fichier image Bitmap Windows 98

Structure d'une image d'impression GPX 99

Structure d'un fichier image Gem/Img Ventura 99

Structure d'un fichier image LBM 100

Structure d'un fichier d'image Targa 101

Structure d'un fichier d'image GIF 102

Annexe F : Code d'erreurs 104

Erreur de compilateur 111

Erreur de format 114

Erreur de compression du format de fichier ZIP 114

Erreur interface 115

Erreur d'installation d'interface 116

Erreur d'appel d'application externe 116

Erreur application 116

Index 118











Chapitre 1

Manifeste du Projet



1. Manifeste du Projet


Étant jeune, je lisais des bandes dessinés comme Astérix. Je trouvais ces personnages rigolos et amusant face à un envahisseur roman. Ils refusaient toujours de faire partie de l'empire Roman quoi qu'il arrive et ils trouvaient immanquablement une solution afin de se sortir de leur mauvais pas. De la même manière, je me voyais confronter à quelques choses dont je n'avais pas réaliser l'ampleur à cette époque: Le monde fabrique tout en anglais. Les romans d'autrefois sont maintenant les anglais d'aujourd'hui! Ainsi, se manifeste fut tout d'abord une cause désespérée afin de renverser ce problème. Bien qu'il n'y a pas encore arriver a être développer entièrement en français, mais dans ses instructions du code source à 100%, il est d'abord développer en français.

Ensuite nous nous rendâmes compte qu'un point s'incrustait de plus en plus dans le domaine de l'informatique. A l'image exacte du mari de madame Bauvary, une médiocrité très profonde s'installa de plus en plus. L'impérialisme anglais, n'est pas le seul empire dont ce manifeste tant à braver, il y a en plus celui d'un système travaillant contre son utilisateur: truffer de “bug”, éloignant toujours plus les utilisateurs de son noyau (désinformant), gros, lent, inefficace, partie manquante, sans ressource de réparation,...

Ayant pour base toutes les raisons cité plus haut, ce projet a donc pour but d'offrir un ensemble complet permettant l'exploitation total de la machine sans passer par aucune autre application, logiciel, progiciel ou système d'exploitation existant. Il pourra cependant fonctionner sous un système d'exploitation compatible au DOS ou sans lui. La machine requise pour faire fonctionner ce projet devra être n'importe quel micro-ordinateur basé sur un processeur de la famille 8086.


Le projet sera essentiellement divisée en trois parties: soit un noyau système d'exploitation, un environnement graphique et la partie des applications. Ceux-ci seront particulièrement fusionner et mélanger et/ou spécifiquement les deux derniers juste nommée.

Noyau

Système d’exploitation




Base de données globale Mentronix





MonsterBook

Environnement graphique





Application

Caméléon







Premièrement, on retrouvera donc un noyau offrant des possibilités comparable à un système d'exploitation DOS. Donc essentiellement centrer sur des possibilités de gestion des fichiers et de la mémoire. Ceux-ci étant naturellement disponible comme base a partir du DR-DOS, FreeDos, MS-DOS 2.0 ou postérieur, Windows 3.1, 3.11, 95, 98, 98SE, Me, NT et 2000, OS/2 et DOSEmu de Linux. Ce noyau offrira la possibilité de démarrer à partir d'une partition primaire ou logique, aussi bien sur une FAT12, FAT16, FAT32 ou HPFS. Le noyau devra charger les routines appropriés correspondant à la capacité du microprocesseur, ainsi il devra charger des routines de transfert et d'effacement de 32 bits si un CPU 80386 ou postérieur est installé, et une simple routine 8 bits dans le cas d'un CPU 8088.

Deuxièmement, l'environnement graphique sera tant qu'à elle une application complète de format exécutable. On retrouvera à ce niveau la plus grande partie du projet le MonsterBook à proprement parler. Celui-ci offrir une grande flexibilité d'environnement, c'est-à-dire qu'il pourra prendre la forme d'un bureau Windows 9X, OS/2 Warp 3 ou 4, StarOffice, Linux, Amiga,...

Le fonctionnement de l'environnement graphique du MonsterBook sera de son côté en liaison constante avec une base de données global fournissant des informations de conformité au matériel, aux possibilités particulières de l'application et aux ajouts éventuel a être intégrer au noyau. Ce compromis quoi habituellement très onéreux en terme d'espace disque devra être orientée de façon particulière afin de ne pas être un confronter à une application de 500 Ko brancher sur une base de données de 20 Mo. Elle devra donc être optimiser au niveau de l'espace et offrir des supports important au niveau des enregistrements de taille irrégulière.

Et enfin troisièmement, les applications seront de leurs côtés totalement intégrer à l'environnement graphique au niveau de l'exécutable de programme mais toutefois écrit de façon particulière à l'intérieur de celui-ci. En fait, ils seront gérer sur un concept de recouvrement (overlay) et ne seront donc pas charger automatiquement en mémoire, ceci afin d'économiser le temps de démarrage sur les machines très lentes.

Les applications seront regrouper sous les catégories suivantes: traitement de texte (comprenant toutes les applications possible pouvant être effectuer avec du texte, aussi bien le code source, éditeur HTML, éditeur de mise en forme,...), le gestionnaire de fichiers, le chiffrier électronique (tableur), base de données (avec support de langage SQL-92), application terminal (prompt DOS, shell Unix, VAX,...), programme de dessin bitmap et programme de dessin technique, gestionnaire de programmes (comprenant naturellement le panneau de configuration et le menu déroulant à la Windows 9X sans oublier la fenêtre de dossier de répertoire à l'explorateur), système de son.

On pourra à l'aide de l'environnement graphique lancer des clones d'application existante, comme par exemple au lieu du Norton Commander, on lancera Clone Commander, une copie pratiquement conforme de celui-ci. Ainsi, on pourra lancer également un CuteHTML reprenant les critères du programme de même nom! Il ne s'agira pas d'application complètement reprogrammer à l'intérieur du MonsterBook mais plutôt d'une application interne existante avec des paramètres adaptable au besoin pour atteindre l'apparence de ceux-ci. De cette façon, l'application principal ne grossira pas vraiment et ne dépaysera pas trop l'utilisateur pour autant!

Le traitement de texte

Le traitement de texte devra s'adapter aux nombreuses situations. Tout d'abord, il devra offrir la possibilité d'un filtre d'entrée pour le chargement d'information de format concurrent (Premier Choix, Professionnal Write, RTF, HTML, Word,...), d'un filtre de sortie pour la sauvegarde dans un format de fichier étranger et en plus un filtre interne visant à offrir la conversion de type de police de caractère de format ANSI par exemple à ASCII. En plus, il devra être capable de lire et d'éditer les codes sources Ada, Assembleur, Basic, C/C++, Cobol, Euphoria, Fortran, Java, Pascal, PL/1, SQL et de les afficher en mode typer. A se niveau, on devra donc intégrer des propriétés pour obtenir des applications comparables à Netscape Composer renommer Clone Composer, CuteHTML, Word Perfect, Microsoft Office.

Étant donnée le trop grand nombre d'espace consommer par un simple plan d'électronique mais pourtant avec son nombre réduit de caractère spéciaux, il faudra ajouter un support de police de caractères supplémentaire permettant l'édition de ceux-ci à l'intérieur d'un traitement de texte sans toutefois que le traitement de texte se laisse transparaître par sa forme...

Un système de base de données de mots devra servir d'outil de base à des mécanismes de correction ou de dictionnaire.

Il faudra aussi offrir la possibilité d'intégrer un mot de passe à un document afin de protéger certains document juger secret ou personnel.



Le chiffrier électronique (tableur)

Le chiffrier électronique aussi connu sous le nom de tableur devra offrir la possibilité de manipuler des chiffres sous toutes ses formes possibles, il devra également être muni de possibilitées supplémentaires lui donnant accès a de la compréhension des chaînes de caractères pour effectuer des estimations à partir de ceux-ci en autre. Il devra bien entendu offrir un support de formule compatible à Lotus 1-2-3, Quattro Pro ou Excel. Voici donc les différentes formules supportées:

Fonction

Paramètres

Compatibilité

@ABS

N

Quattro Pro, Lotus 1-2-3

@ACOS

N

Quattro Pro, Lotus 1-2-3

@ACTUEL


Quattro Pro, Lotus 1-2-3

@ALEAT


Quattro Pro, Lotus 1-2-3

@AMORANN

N,N,N,N

Quattro Pro, Lotus 1-2-3

@AMORDEG

N,N,N,N

Quattro Pro, Lotus 1-2-3

@AMORLIN

N,N,N

Quattro Pro, Lotus 1-2-3

@AMORT

N,C

Quattro Pro, Lotus 1-2-3

@ANNEE

N

Quattro Pro, Lotus 1-2-3

@ARRONDI

N,N

Quattro Pro, Lotus 1-2-3

@ASIN

N

Quattro Pro, Lotus 1-2-3

@ATAN

N

Quattro Pro, Lotus 1-2-3

@ATAN2

N,N

Quattro Pro, Lotus 1-2-3

@AUJOURDHUI


Quattro Pro, Lotus 1-2-3

@BCOMPTE

C,N,C

Quattro Pro, Lotus 1-2-3

@BMAX

C,N,C

Quattro Pro, Lotus 1-2-3

@BMIN

C,N,C

Quattro Pro, Lotus 1-2-3

@BMOYENNE

C,N,C

Quattro Pro, Lotus 1-2-3

@BSOMME

C,N,C

Quattro Pro, Lotus 1-2-3

@BSTD

C,N,C

Quattro Pro, Lotus 1-2-3

@BSTDS

C,N,C

Quattro Pro, Lotus 1-2-3

@BVAR

C,N,C

Quattro Pro, Lotus 1-2-3

@BVARS

C,N,C

Quattro Pro, Lotus 1-2-3

@C

C

Quattro Pro, Lotus 1-2-3

@CAR

N

Quattro Pro, Lotus 1-2-3

@CELLINDEX

S,C,N,N

Quattro Pro, Lotus 1-2-3

@CELL

S,C

Quattro Pro, Lotus 1-2-3

@CELLPOINTER

S

Quattro Pro, Lotus 1-2-3

@CELLULE

S,C

Quattro Pro, Lotus 1-2-3

@CHAINE

N,N

Quattro Pro, Lotus 1-2-3

@CHAR

N

Quattro Pro, Lotus 1-2-3

@CHERCHE

S,S,N

Quattro Pro, Lotus 1-2-3

@CHOIX

N,V

Quattro Pro, Lotus 1-2-3

@CHOOSE

N,V

Quattro Pro, Lotus 1-2-3

@CLEAN


Quattro Pro, Lotus 1-2-3

@CODE

S

Quattro Pro, Lotus 1-2-3

@COL

C

Quattro Pro, Lotus 1-2-3

@COLS

C

Quattro Pro, Lotus 1-2-3

@COMPTE

C

Quattro Pro, Lotus 1-2-3

@CONSH

N,C,N

Quattro Pro, Lotus 1-2-3

@CONSV

N,C,N

Quattro Pro, Lotus 1-2-3

@COS

N

Quattro Pro, Lotus 1-2-3

@COSH

N

Lotus 1-2-3

@COUNT

C

Quattro Pro, Lotus 1-2-3

@CTERM

N,N,N

Quattro Pro, Lotus 1-2-3

@CURVALUE

S,S

Quattro Pro, Lotus 1-2-3

@DATE

N,N,N

Quattro Pro, Lotus 1-2-3

@DATEVALUE

V

Quattro Pro, Lotus 1-2-3

@DATVAL

V

Quattro Pro, Lotus 1-2-3

@DAVG

CNC

Quattro Pro, Lotus 1-2-3

@DAY

N

Quattro Pro, Lotus 1-2-3

@DCOUNT

CNC

Quattro Pro, Lotus 1-2-3

@DDB

NNNN

Quattro Pro, Lotus 1-2-3

@DEBUT

SN

Quattro Pro, Lotus 1-2-3

@DEG

N

Quattro Pro, Lotus 1-2-3

@DEGREES

N

Quattro Pro, Lotus 1-2-3

@DSUM

C,N,C

Quattro Pro, Lotus 1-2-3

@DVAR

C,N,C

Quattro Pro, Lotus 1-2-3

@DUREE

N,N,N

Quattro Pro, Lotus 1-2-3

@DUREECOMP

N,N,N

Quattro Pro, Lotus 1-2-3

@EGAL

SS

Quattro Pro, Lotus 1-2-3

@ENT

N

Quattro Pro, Lotus 1-2-3

@EPURE

S

Quattro Pro, Lotus 1-2-3

@ERR


Quattro Pro, Lotus 1-2-3

@ESTCHAINE

V

Quattro Pro, Lotus 1-2-3

@ESTERR

V

Quattro Pro, Lotus 1-2-3

@ESTND

V

Quattro Pro, Lotus 1-2-3

@ESTNUM

V

Quattro Pro, Lotus 1-2-3

@EXP

N

Quattro Pro, Lotus 1-2-3

@FALSE


Quattro Pro, Lotus 1-2-3

@FAUX


Quattro Pro, Lotus 1-2-3

@FICHIEREXISTE

S

Quattro Pro, Lotus 1-2-3

@FILEEXISTS

S

Quattro Pro, Lotus 1-2-3

@FIN

S,N

Quattro Pro, Lotus 1-2-3

@FIND

S,S,N

Quattro Pro, Lotus 1-2-3

@FV

N,N,N

Quattro Pro, Lotus 1-2-3

@FVAL

N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@HEURE

V

Quattro Pro, Lotus 1-2-3

@HEURVAL

V

Quattro Pro, Lotus 1-2-3

@HEXANUM

S

Quattro Pro, Lotus 1-2-3

@HEXTONUM

S

Quattro Pro, Lotus 1-2-3

@HLOOKUP

N,C,N

Quattro Pro, Lotus 1-2-3

@HOUR

V

Quattro Pro, Lotus 1-2-3

@IF

B,V,V

Quattro Pro, Lotus 1-2-3

@INDEX

C,N,N

Quattro Pro, Lotus 1-2-3

@INT

N

Quattro Pro, Lotus 1-2-3

@INTERET

N,N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@IPAYMT

N,N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@IRATE

N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@IRR

N,C

Quattro Pro, Lotus 1-2-3

@ISAAF

S

Quattro Pro, Lotus 1-2-3

@ISAPP

S

Quattro Pro, Lotus 1-2-3

@ISERR

V

Quattro Pro, Lotus 1-2-3

@ISNA

V

Quattro Pro, Lotus 1-2-3

@ISNUMBER

V

Quattro Pro, Lotus 1-2-3

@ISSTRING

V

Quattro Pro, Lotus 1-2-3

@JOUR

N

Quattro Pro, Lotus 1-2-3

@LEFT

S,N

Quattro Pro, Lotus 1-2-3

@LENGTH

S

Quattro Pro, Lotus 1-2-3

@LIGNES

C

Quattro Pro, Lotus 1-2-3

@LN

N

Quattro Pro, Lotus 1-2-3

@LOG

N

Quattro Pro, Lotus 1-2-3

@LONG

S

Quattro Pro, Lotus 1-2-3

@LOWER

S

Quattro Pro, Lotus 1-2-3

@MAJUSC

S

Quattro Pro, Lotus 1-2-3

@MAX

C

Quattro Pro, Lotus 1-2-3

@MEMAVAIL


Quattro Pro, Lotus 1-2-3

@MEMDISPO


Quattro Pro, Lotus 1-2-3

@MEMMEMSAVAIL


Quattro Pro, Lotus 1-2-3

@MEMMEMSDISPO


Quattro Pro, Lotus 1-2-3

@MID

S,N,N

Quattro Pro, Lotus 1-2-3

@MILIEU

S,N,N

Quattro Pro, Lotus 1-2-3

@MIN

C

Quattro Pro, Lotus 1-2-3

@MINUSC

S

Quattro Pro, Lotus 1-2-3

@MINUTE

N

Quattro Pro, Lotus 1-2-3

@MOD

NN

Quattro Pro, Lotus 1-2-3

@MOIS

N

Quattro Pro, Lotus 1-2-3

@MOYENNE

C

Quattro Pro, Lotus 1-2-3

@N

C

Quattro Pro, Lotus 1-2-3

@NA


Quattro Pro, Lotus 1-2-3

@ND


Quattro Pro, Lotus 1-2-3

@NOMPROPRE

S

Quattro Pro, Lotus 1-2-3

@NOW


Quattro Pro, Lotus 1-2-3

@NPER

NNNNN

Quattro Pro, Lotus 1-2-3

@NPV

NCN

Quattro Pro, Lotus 1-2-3

@NUMAHEX

S

Quattro Pro, Lotus 1-2-3

@NUMTOHEX

S

Quattro Pro, Lotus 1-2-3

@PI


Quattro Pro, Lotus 1-2-3

@PMT


Quattro Pro, Lotus 1-2-3

@POINTCELL

S

Quattro Pro, Lotus 1-2-3

@PPAYMT

N,N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@PRINCIPAL

N,N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@PRODSCAL

C,C

Quattro Pro, Lotus 1-2-3

@PROPER

S

Quattro Pro, Lotus 1-2-3

@PV


Quattro Pro, Lotus 1-2-3

@PVAL

N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@RACINE

N

Quattro Pro, Lotus 1-2-3

@RAD

N

Quattro Pro, Lotus 1-2-3

@RADIANS

N

Quattro Pro, Lotus 1-2-3

@RATE

N,N,N

Quattro Pro, Lotus 1-2-3

@REMB

N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@REMBOUR

N,N,N

Quattro Pro, Lotus 1-2-3

@REPEAT

S,N

Quattro Pro, Lotus 1-2-3

@REPETE

S,N

Quattro Pro, Lotus 1-2-3

@REPLACE

S,N,N,S

Quattro Pro, Lotus 1-2-3

@RIGHT

S,N

Quattro Pro, Lotus 1-2-3

@ROUND

N

Quattro Pro, Lotus 1-2-3

@ROWS

C

Quattro Pro, Lotus 1-2-3

@S

C

Quattro Pro, Lotus 1-2-3

@SECOND

N

Quattro Pro, Lotus 1-2-3

@SECONDE

N

Quattro Pro, Lotus 1-2-3

@SI

B,V,V

Quattro Pro, Lotus 1-2-3

@SIN

N

Quattro Pro, Lotus 1-2-3

@SINH

N

Lotus 1-2-3

@SLN

N,N,N

Quattro Pro, Lotus 1-2-3

@SOMME

C

Quattro Pro, Lotus 1-2-3

@SQRT

N

Quattro Pro, Lotus 1-2-3

@STD

C

Quattro Pro, Lotus 1-2-3

@STDS

C

Quattro Pro, Lotus 1-2-3

@STRING

NN

Quattro Pro, Lotus 1-2-3

@SUBSTITUE

S,N,N,S

Quattro Pro, Lotus 1-2-3

@SUM

C

Quattro Pro, Lotus 1-2-3

@SUMPRODUCT

C,C

Quattro Pro, Lotus 1-2-3

@SUPPRESPACE

S

Quattro Pro, Lotus 1-2-3

@SYD

N,N,N,N

Quattro Pro, Lotus 1-2-3

@TAN

N

Quattro Pro, Lotus 1-2-3

@TAUX

N,N,N

Quattro Pro, Lotus 1-2-3

@TAUXINT

N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@TEMPS

N,N,N

Quattro Pro, Lotus 1-2-3

@TERM

N,N,N

Quattro Pro, Lotus 1-2-3

@TIME

N,N,N

Quattro Pro, Lotus 1-2-3

@TIMEVALUE

V

Quattro Pro, Lotus 1-2-3

@TODAY


Quattro Pro, Lotus 1-2-3

@TRIM

S

Quattro Pro, Lotus 1-2-3

@TRUE


Quattro Pro, Lotus 1-2-3

@UPPER

S

Quattro Pro, Lotus 1-2-3

@VACT

N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@VALACT

N,N,N

Quattro Pro, Lotus 1-2-3

@VALEUR

S

Quattro Pro, Lotus 1-2-3

@VALEUROPTION

S,S

Quattro Pro, Lotus 1-2-3

@VALFUT

N,N,N

Quattro Pro, Lotus 1-2-3

@VAN

N,C,N

Quattro Pro, Lotus 1-2-3

@VAR

C

Quattro Pro, Lotus 1-2-3

@VARS

C

Quattro Pro, Lotus 1-2-3

@VERSION


Quattro Pro, Lotus 1-2-3

@VFUT

N,N,N,N,N

Quattro Pro, Lotus 1-2-3

@VLOOKUP

N,C,N

Quattro Pro, Lotus 1-2-3

@VRAI


Quattro Pro, Lotus 1-2-3

@YEAR

N

Quattro Pro, Lotus 1-2-3

ABS

N

Microsoft Excel

ACCRINT

N,N,N,N,N,N,N

Microsoft Excel

ACCRINTM

N,N,N,N,N

Microsoft Excel

ACOS

N

Microsoft Excel

ACOSH

N

Microsoft Excel

ACOTH

N

Microsoft Excel

ACSC

N

Microsoft Excel

ADRESSE

N,N,N,C,S

Microsoft Excel

ALEA


Microsoft Excel

ALEA.ENTRE.BORNES

N,N

Microsoft Excel

AMORDEGRC

N,N,N,N,N,N

Microsoft Excel

AMORLIN

N,N,N

Microsoft Excel

AMORLINC

N,N,N,N,N,N,N

Microsoft Excel

ANNEE

N

Microsoft Excel

ARRONDI

N,N

Microsoft Excel

ARRONDI.AU.MULTIPLE

N,N

Microsoft Excel

ARRONDI.INF

N,N

Microsoft Excel

ARRONDI.SUP

N,N

Microsoft Excel

ASECH

N

Microsoft Excel

ASIN

N

Microsoft Excel

ASINH

N

Microsoft Excel

ATAN

N

Microsoft Excel

ATAN2

N,N

Microsoft Excel

ATANH

N

Microsoft Excel

AUJOURDHUI


Microsoft Excel

AVERAGEA

C

Microsoft Excel

BDECARTYPE

C,C,N