Skip to main content

Watching videos, starting to use the cli.

for example, I want to find the customers table (correct my terminology if you don't call them tables). 

I entered "listf" didn't see a customers table. Saw users ...entered list users..saw the system users. Cool

How do I find the accounts or folder where the customers /cust table lives?

If you need more info, please let me know

thanks



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Watching videos, starting to use the cli.

for example, I want to find the customers table (correct my terminology if you don't call them tables). 

I entered "listf" didn't see a customers table. Saw users ...entered list users..saw the system users. Cool

How do I find the accounts or folder where the customers /cust table lives?

If you need more info, please let me know

thanks



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

I have no access to D3 right now, so I'm working from ancient memory here, but, to map out almost any 'Pick' system, it's best, imho, to start with the local account dictionary, MD in your case.  So ...

LIST MD *A1 *A2 *A3 *A4

What you're looking for are the names of program files.  (We call tables files.)  On D3, program files are often named somethingBP or BPsomething, or even just BP.  But not always.  Many systems will have one, main program file, or one per account (partition), but there may also be a dedicated program file for every module, like, say, accounts.payable vs. accounts.receivable.  AAAaaannnddd ... many programmers like to create their own program files, never moving production code into the main program file(s), so be on the lookout for them, too.

But, on any system, you'll see item (record) names in the MD that just look like programs, such as, FINAL.BALANCE or LIST.USERS or READ.RECORD.  In time, you'll get a feel for the rythm and rhyme of program names, and be able to spot them on sight.

Next, you'll want to peek inside those programs, looking for the names of the files they open, so ...

ED PROGRAMS.BP PROGRAM.NAME
{It'll display something like the number of lines or that you're at the top of the item.}
L9999/OPEN

And that should display all the lines of code containing the OPEN keyword ... and then some.  Make a note of all those filenames.  In fact, you should probably do this for every program you can find, and note all the files opened.  Keep that list somewhere.

But let's look to your future, too.  The next thing you'll want to do, when you get time, is map out just what accounts are on your system (LIST SYSTEM) (You may have to "logto dm" first to issue that command.), and how many programs open which files in which accounts.

You'll also want to know which files are actually local to which accounts, and which files are 'pointed to' from other accounts.

Later, you'll want to profile your system to see which programs are opening, reading, and writing which files at what frequency, as well as which programs are locking items in which files.  On any properly designed system, there will be a lot of those and you need to know about all of them.  You need to keep stats on them.  Trust me.  It will prove an important metric for identifying bottlenecks and failure points.



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------

I have no access to D3 right now, so I'm working from ancient memory here, but, to map out almost any 'Pick' system, it's best, imho, to start with the local account dictionary, MD in your case.  So ...

LIST MD *A1 *A2 *A3 *A4

What you're looking for are the names of program files.  (We call tables files.)  On D3, program files are often named somethingBP or BPsomething, or even just BP.  But not always.  Many systems will have one, main program file, or one per account (partition), but there may also be a dedicated program file for every module, like, say, accounts.payable vs. accounts.receivable.  AAAaaannnddd ... many programmers like to create their own program files, never moving production code into the main program file(s), so be on the lookout for them, too.

But, on any system, you'll see item (record) names in the MD that just look like programs, such as, FINAL.BALANCE or LIST.USERS or READ.RECORD.  In time, you'll get a feel for the rythm and rhyme of program names, and be able to spot them on sight.

Next, you'll want to peek inside those programs, looking for the names of the files they open, so ...

ED PROGRAMS.BP PROGRAM.NAME
{It'll display something like the number of lines or that you're at the top of the item.}
L9999/OPEN

And that should display all the lines of code containing the OPEN keyword ... and then some.  Make a note of all those filenames.  In fact, you should probably do this for every program you can find, and note all the files opened.  Keep that list somewhere.

But let's look to your future, too.  The next thing you'll want to do, when you get time, is map out just what accounts are on your system (LIST SYSTEM) (You may have to "logto dm" first to issue that command.), and how many programs open which files in which accounts.

You'll also want to know which files are actually local to which accounts, and which files are 'pointed to' from other accounts.

Later, you'll want to profile your system to see which programs are opening, reading, and writing which files at what frequency, as well as which programs are locking items in which files.  On any properly designed system, there will be a lot of those and you need to know about all of them.  You need to keep stats on them.  Trust me.  It will prove an important metric for identifying bottlenecks and failure points.



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------

Very helpful. Exactly what I was looking for. I don't want to modify anything, so I would be nervous about the EDPROGRAMS.BP at this point.

Got a ways to go here. Wanting to look at some dictionary files to see content. Appreciate your time, suggestions and post.



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Very helpful. Exactly what I was looking for. I don't want to modify anything, so I would be nervous about the EDPROGRAMS.BP at this point.

Got a ways to go here. Wanting to look at some dictionary files to see content. Appreciate your time, suggestions and post.



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

So in this example I type: listf

Here are a couple sample lines returned:

accounts                                        6142        1dt   accounts                                        6144       29dt

bp                                              4440        7     bp                                              4448      211

Can anyone tell me what these might be?



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Watching videos, starting to use the cli.

for example, I want to find the customers table (correct my terminology if you don't call them tables). 

I entered "listf" didn't see a customers table. Saw users ...entered list users..saw the system users. Cool

How do I find the accounts or folder where the customers /cust table lives?

If you need more info, please let me know

thanks



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

If "listf" or "listfiles" didn't show anything that might be a customers file/table, you want to see what accounts there are on the system

:sort mds *a1

You're looking for anything that shows a "D" or "D[Y/L/X]" etc. Then to see all the files in a particular account (say BLAH)

:sort blah,, with *a1 = "D]"

Then if you find an account with say CUSTOMERS you could

:set-file blah customers

then you could 

:sort qfile

or

:sort dict qfile

The dict _might_ give you an idea what each field on the customers file is, but because it's not mandatory to name the fields (aka columns as in SQL), unless someone has used EQUATES in their basic programs to give fields names for accessing, you'd need to find some documentation (hopefully) for the application which describes what each field is.



------------------------------
Bryan Buchanan
------------------------------

If "listf" or "listfiles" didn't show anything that might be a customers file/table, you want to see what accounts there are on the system

:sort mds *a1

You're looking for anything that shows a "D" or "D[Y/L/X]" etc. Then to see all the files in a particular account (say BLAH)

:sort blah,, with *a1 = "D]"

Then if you find an account with say CUSTOMERS you could

:set-file blah customers

then you could 

:sort qfile

or

:sort dict qfile

The dict _might_ give you an idea what each field on the customers file is, but because it's not mandatory to name the fields (aka columns as in SQL), unless someone has used EQUATES in their basic programs to give fields names for accessing, you'd need to find some documentation (hopefully) for the application which describes what each field is.



------------------------------
Bryan Buchanan
------------------------------

This looks promising.

What does *a1 represent exactly?

Here is an abbreviated listing. If I were to guess.

MSIAP = Accounts payable

MSIAR=Accounts receivable

So I know there is an account called SQLDEMO which I've played with some odbc tests.

How do I "know" differentiate between the SQLDEMO account and the account which our live D3 account uses?

Thanks in advance,

Bret

:sort MDS *a1
Page   1     MDS                                                                                              09:05:28 08 Sep 2025

MDS............................................................................... *a1..........................................

account                                                                            a
acct.name                                                                          a
attribute-count                                                                    a
attribute-type                                                                     a
base                                                                               a
base/dict                                                                          a
cc.logon                                                                           l(2)
cdate                                                                              a
cds.logon                                                                          @(-1)
ctime                                                                              a
dm                                                                                 d
DMOLD                                                                              d
FsiDm                                                                              QS
justification                                                                      a
logon                                                                              l(2)
logon.err                                                                          B
mdpassword                                                                         Hmd password:+
mdprompt                                                                           Hmaster dictionary:+
mds                                                                                d
MIS                                                                                QS
MISAP                                                                              QS
MISAR                                                                              QS
MISARQ                                                                             Q
MISBD                                                                              QS
MISGL                                                                              QS
MISIC                                                                              QS
MISIQ                                                                              QS
MISOE                                                                              QS
MISPR                                                                              QS
MISSA                                                                              QS
mod/data                                                                           a
modulo                                                                             a



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

This looks promising.

What does *a1 represent exactly?

Here is an abbreviated listing. If I were to guess.

MSIAP = Accounts payable

MSIAR=Accounts receivable

So I know there is an account called SQLDEMO which I've played with some odbc tests.

How do I "know" differentiate between the SQLDEMO account and the account which our live D3 account uses?

Thanks in advance,

Bret

:sort MDS *a1
Page   1     MDS                                                                                              09:05:28 08 Sep 2025

MDS............................................................................... *a1..........................................

account                                                                            a
acct.name                                                                          a
attribute-count                                                                    a
attribute-type                                                                     a
base                                                                               a
base/dict                                                                          a
cc.logon                                                                           l(2)
cdate                                                                              a
cds.logon                                                                          @(-1)
ctime                                                                              a
dm                                                                                 d
DMOLD                                                                              d
FsiDm                                                                              QS
justification                                                                      a
logon                                                                              l(2)
logon.err                                                                          B
mdpassword                                                                         Hmd password:+
mdprompt                                                                           Hmaster dictionary:+
mds                                                                                d
MIS                                                                                QS
MISAP                                                                              QS
MISAR                                                                              QS
MISARQ                                                                             Q
MISBD                                                                              QS
MISGL                                                                              QS
MISIC                                                                              QS
MISIQ                                                                              QS
MISOE                                                                              QS
MISPR                                                                              QS
MISSA                                                                              QS
mod/data                                                                           a
modulo                                                                             a



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Got it. I see these are attribute markers ..from the reference manual:  list md with *a1 = "d]"



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Got it. I see these are attribute markers ..from the reference manual:  list md with *a1 = "d]"



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Pick systems are dictionary-driven.  That hails from Pick's underlying English Language model.  Think Star Trek Computer.  That was the 'model'.  Programs are verbs.  Data are nouns.  And there are other elements of the English language present, too.  And all of it is defined in the dictionary ... or dictionaries.  (The top three levels of any Pick system are just dictionaries: The system dictionary, dictionaries for each of the accounts within that system, and for each of the files within those accounts.  Any number of data portions may, ultimately, be attached to the files in the accounts.) (I'm not aware of any data portion being attached to any other dictionary, but file dictionaries, such as the saved-lists file [POINTER-FILE on D3 systems] may exist with no associated data portion.)

In keeping with that English-speaking model, you have to have 'thing' or 'whatever' defined, too.  So, let's say you don't know what dictionaries may have been defined for the fields (lines) within the items (records) within a file that you want to list.  How do you list them?  You need default, ubiquitous dictionary items that you can always use as placeholders for those fields whose names you don't know.  On D3 systems, those default, ubiquitous dictionary/field-names take the form *A{field-number}, so *A0 {for the item's name}, *A1 {for field# 1}, *A2, *A3, etc.



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------

If "listf" or "listfiles" didn't show anything that might be a customers file/table, you want to see what accounts there are on the system

:sort mds *a1

You're looking for anything that shows a "D" or "D[Y/L/X]" etc. Then to see all the files in a particular account (say BLAH)

:sort blah,, with *a1 = "D]"

Then if you find an account with say CUSTOMERS you could

:set-file blah customers

then you could 

:sort qfile

or

:sort dict qfile

The dict _might_ give you an idea what each field on the customers file is, but because it's not mandatory to name the fields (aka columns as in SQL), unless someone has used EQUATES in their basic programs to give fields names for accessing, you'd need to find some documentation (hopefully) for the application which describes what each field is.



------------------------------
Bryan Buchanan
------------------------------

So building on this, below I think I'm asking the mvdemo dictionary to display all it's attribute 1 records that are of type "D".

:sort mvdemo,, with *a1 ="D]"
Page   1     DICT mvdemo,,                                                                                    22:18:21 08 Sep 2025

DICT mvdemo,,

CUSTOMERS
DEMO.BP
INVENTORY
LOCATION
ORDERS
PRODUCTS

Theoretically I could write: sort mvdemo,, with *A1 = "a]"

Comments?



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

This looks promising.

What does *a1 represent exactly?

Here is an abbreviated listing. If I were to guess.

MSIAP = Accounts payable

MSIAR=Accounts receivable

So I know there is an account called SQLDEMO which I've played with some odbc tests.

How do I "know" differentiate between the SQLDEMO account and the account which our live D3 account uses?

Thanks in advance,

Bret

:sort MDS *a1
Page   1     MDS                                                                                              09:05:28 08 Sep 2025

MDS............................................................................... *a1..........................................

account                                                                            a
acct.name                                                                          a
attribute-count                                                                    a
attribute-type                                                                     a
base                                                                               a
base/dict                                                                          a
cc.logon                                                                           l(2)
cdate                                                                              a
cds.logon                                                                          @(-1)
ctime                                                                              a
dm                                                                                 d
DMOLD                                                                              d
FsiDm                                                                              QS
justification                                                                      a
logon                                                                              l(2)
logon.err                                                                          B
mdpassword                                                                         Hmd password:+
mdprompt                                                                           Hmaster dictionary:+
mds                                                                                d
MIS                                                                                QS
MISAP                                                                              QS
MISAR                                                                              QS
MISARQ                                                                             Q
MISBD                                                                              QS
MISGL                                                                              QS
MISIC                                                                              QS
MISIQ                                                                              QS
MISOE                                                                              QS
MISPR                                                                              QS
MISSA                                                                              QS
mod/data                                                                           a
modulo                                                                             a



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

*a1, *a2 etc are pointers to the first attribute (aka column), second attribute etc.

All those "QS" accounts are real data accounts the live in the FSI. At a guess maybe MSI is the main login account where the app is run from and each of the other MSI* accounts are the GL, AR etc modules.

To see what login accounts there are:

:sort users *a1

To see what version of D3:

: which (cad

Re your earlier post, 'bp' is probably where the basic programs are stored (if indeed source code is there)

: sort bp

If there's something called say 'blah' then

:ct bp blah

to look at it.



------------------------------
Bryan Buchanan
------------------------------

So building on this, below I think I'm asking the mvdemo dictionary to display all it's attribute 1 records that are of type "D".

:sort mvdemo,, with *a1 ="D]"
Page   1     DICT mvdemo,,                                                                                    22:18:21 08 Sep 2025

DICT mvdemo,,

CUSTOMERS
DEMO.BP
INVENTORY
LOCATION
ORDERS
PRODUCTS

Theoretically I could write: sort mvdemo,, with *A1 = "a]"

Comments?



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

You can omit the commas.



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------

You can omit the commas.



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------

Marcus,

That's important. I'm assuming those comma's were delimiters for additional arguments to the Sort command.

So I'm looking in the D3 TCL reference manual and I don't see the Sort command at least not in this context. I'm also aware there are

abbreviations for these commands.

Can you point me to where the command is defined?



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Marcus,

That's important. I'm assuming those comma's were delimiters for additional arguments to the Sort command.

So I'm looking in the D3 TCL reference manual and I don't see the Sort command at least not in this context. I'm also aware there are

abbreviations for these commands.

Can you point me to where the command is defined?



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Is this part of the AQL 



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Is this part of the AQL 



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Hi, Bret!

You'll want to try to find one of these:

EPICK : Encyclopedia PICK

Amazon remove preview
EPICK : Encyclopedia PICK
EPICK : Encyclopedia PICK [PICK Systems, Jonathan Sisk] on Amazon.com. *FREE* shipping on qualifying offers. EPICK : Encyclopedia PICK
View this on Amazon >

The comma notation is semi-unique to Pick/D3, I think, and it works like this:

list/sort {system-name},{file-name},{data-portion-name}

On other flavors, there is only ...

list/sort {file-name},{data-portion-name}

I think.

Also, list and sort will both sort the items if the 'by' keyword is included:

list customers by zipcode by state by city name street city state zipcode

The sort command will sort even without the 'by' keyword, but only by the item-ids.



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------

Hi, Bret!

You'll want to try to find one of these:

EPICK : Encyclopedia PICK

Amazon remove preview
EPICK : Encyclopedia PICK
EPICK : Encyclopedia PICK [PICK Systems, Jonathan Sisk] on Amazon.com. *FREE* shipping on qualifying offers. EPICK : Encyclopedia PICK
View this on Amazon >

The comma notation is semi-unique to Pick/D3, I think, and it works like this:

list/sort {system-name},{file-name},{data-portion-name}

On other flavors, there is only ...

list/sort {file-name},{data-portion-name}

I think.

Also, list and sort will both sort the items if the 'by' keyword is included:

list customers by zipcode by state by city name street city state zipcode

The sort command will sort even without the 'by' keyword, but only by the item-ids.



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------

Found the second edition of the suggested book on Dropbox..and also the Pocket reference. Both in pdf.

Thanks for the help



------------------------------
Bret Stern
President
Rocket Forum Shared Account
------------------------------

Hi, Bret!

You'll want to try to find one of these:

EPICK : Encyclopedia PICK

Amazon remove preview
EPICK : Encyclopedia PICK
EPICK : Encyclopedia PICK [PICK Systems, Jonathan Sisk] on Amazon.com. *FREE* shipping on qualifying offers. EPICK : Encyclopedia PICK
View this on Amazon >

The comma notation is semi-unique to Pick/D3, I think, and it works like this:

list/sort {system-name},{file-name},{data-portion-name}

On other flavors, there is only ...

list/sort {file-name},{data-portion-name}

I think.

Also, list and sort will both sort the items if the 'by' keyword is included:

list customers by zipcode by state by city name street city state zipcode

The sort command will sort even without the 'by' keyword, but only by the item-ids.



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------

Correction!  That's {account-name},{file-name},{data-portion-name}



------------------------------
Marcus Rhodes
marcus1@thinqware.com
------------------------------