Janic Declaration

The management of information across multiple machines by the compiler. A single compile-time and run-time language for the application of the use, transport and storage of all values handled by the compiler.  The objective is to define the life cycle of every value introduced into the system.  I have broken down every aspect of our knowledge base into 28 areas of logic. Each source and destination for information, in every application, has a unique set of values. Declarations are shared between all applications.



Per application value definitions:

  • Working Storage Declarations

  • Permanent Storage Declarations

  • View Declarations

  • Cache Declarations

  • Per User Declarations


  1. Access Method - The method in which pieces of information are to be managed
  2. Allocation - Working and permanent storage space allocation logic
  3. Characteristics - keywords and classifications of the value
  4. Defaults - Value initialization
  5. Display - Characteristics, style, templates, lookup, and logic for the display of values
  6. Domain - Boundaries and Restraints
  7. Editing - Characteristics, templates and logic for the editing of values
  8. Events - Functions tied to management of values
  9. Filter - Value filter logic
  10. Labels - margin labels (left, right, top, bottom, tic marks)
  11. License - Access keys
  12. Locale - Nationality
  13. Logging - History logging
  14. Mapping - Value mapping functions
  15. Mutable -  In-place updates
  16. Operators - The declaration of functions which handle all compiler operations 
  17. Partitions - Vertical and Horizontal data segmentation logic
  18. Relationships - structures and logic of value linking
  19. Search Index - Value search indexes
  20. Security - Roles and Privileges
  21. Selection Index - Value selected Index
  22. Structure - Binary structure, and logic of the value
  23. Sort Index - Value sort order Index
  24. Timezone - Time Zone
  25. Trace - Trace operations
  26. Type - Basic compiler type (Integer, Real, Text, Bytes, Date, Employee, ...)
  27. Units  - Subsystem for the operator calculations, use, and display of the value
  28. Users - List of users

Access Methods

Batch, IC, Buffered, Asynchronous, Synchronous, Buffered, Memory

A.%Access Method = Access Method{Synchronous};


Allocation

A.%allocation = allocation{Maximum Length=2000, Initial Length=200, Increment By=100};


Cache Location

A.%cache = cache:{location=Jane Service}


Characteristics

A.%characteristics = characteristics{keywords=(integer,age)};


Default

A.%Default = Default{Hello World};


Display

A.%Display  = Display:{template="Hello World from {{name}}"};


 Domain

A.%domain = domain:{range{minimum=1, maximum=255}}


Editing

A.%Editing = Editing:{template="<row>Textbox({{Name}})};


Events

A.%events = events{get = getA, set=setA, search=searchA};


Filter

A.%Filter = Filter{row function=filterByRow_A, column function=filterByColumn_A};


Labels

A.%Labels = Labels:{Position=Top, Columns=(Name,Age,DOB}}


License

A.%license = License{AE39-CDB4-77SC-QBRT-100D};


Logging

A.%logging = Logging:{Locarion{Jane.Logfiles.MyApp}, events=(Create,Modify,Delete)};


Mapping

A.%mapping = mapping{ get{return this * 10}, set{ this = value / 10} };


Mutable

A.%mutable = false;


Operators

Math, Conditional, Boolean, Assignment, Unary, Loops, Branch, Search
 

A = 10;

A.%operators += operartors{ (opcode=+, A=number, B=number, function=myAddition)  } ;

Number.prototype.%opertaors += operartors{ opcode=+, A=integer, B=integer, function=myIntegerAddition } ;


Partitions

A.%partitions = partitions{horizontal{ return year; }, vertical{ user=(Name, Age) }


Search Index

A.%Search Index = search Index{type=AVL tree, Search Key=Name};


Security

A.%security = securities:{ security{user=Clif, group=Administrator, access=(Read,Write,Change,Delete)}}


Selection Index

A.%Selection Index = Selection Index:{ Bitmap{0:5, 2:4} };


Sort Index

A.%sort Index = sort Index{Sort Key = (DOB, Name),  Group By=DOB.Year};


Storage Location

A.%Storage Location = %Storage Location:{location{Jane Service, Path="C:/Jane/"}, Delete On Close};


Structure

A.%structure = structure:{ records{ (Name:A32,Age:I1,Address:Address),
Address=(Number:A32, Street:A128,State:A2,ZipCode:A9)};


Timezone

A.%timezone = timezone{Pacific Time};


Trace

A.%Trace = Trace:{Location:{screen}, events=All};


Type

A.%type = Integer;


Units

A  = 10 Inches per second per cubic meter;

A = 10;
A.%units  = units{Inches per second per cubic meter};

A.%declare =  declare:{units{Inches per second per cubic meter}};


Users

A.%Users = Users:{Application="MyApp"};

 
 

Sample

 

Text = 'units{Inches per second per cubic meter},	
	Access Method{Synchronous},
	operators{ (opcode=+, A=number, B=number, function=myAddition) } ,
	cache:{location=Jane Service},
	Storage Location:{location{Jane Service, Path="C:/Jane/"},Delete On Close},	
	structure:{ records{ (Name:A32,Age:I1,Address:Address),Address=(Number:A32,Street:A128,State:A2,ZipCode:A9)},	
	type = Integer,	
	mutable = false,
	locale=USA,
	timezone{Pacific Time},
	partitions{horizontal{ return year}, vertical{ user=(Name, Age) },
	securities:{ security{user=Clif, group=Administrator, access=(Read,Write,Change,Delete)}},
	domain:{range{minimum=1, maximum=255}},
	mapping{ get{return this * 10}, set{this = value / 10} },
	events{get = getA, set=setA, search=searchA, not found=notfoundA},
	characteristics{keywords=(integer,age)},
	allocation{Maximum Length=2000, Initial Length=200, Increment By=100},
	search Index{type=AVL tree, Search Key=Name},
	sort Index{Sort Key = (DOB, Name), Group By=DOB.Year},
	Selection Index:{ Bitmap{0:5, 2:4} },
	Display:{template="Hello World from {{name}}"},
	Editing:{template="<row>Textbox({{Name}})},
	Filter{row function=filterByRow_A, column function=filterByColumn_A},
	Logging:{Location{Jane.Logfiles.MyApp}, events=(Create,Modify,Delete)},
	Trace:{Location:{screen}, events=All},
	Default{Hello World},
	Users:{Application="MyApp"},
	License{AE39-CDB4-77SC-QBRT-100D},
	Labels:{Position=Top, Columns=(Name,Age,DOB}}';
 
A.%declare = declare:{<text>}